1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Merge branch 'master' into feature-789

Conflicts:
	src/ozones/Server/models/OzonesServer.rb
This commit is contained in:
Ruben S. Montero 2011-09-27 16:46:54 +02:00
commit cc34893f6d
11 changed files with 218 additions and 10 deletions

View File

@ -652,8 +652,11 @@ IMAGE_DRIVER_FS_SCRIPTS="src/image_mad/remotes/fs/cp \
#-------------------------------------------------------------------------------
ONEDB_MIGRATOR_FILES="src/onedb/2.0_to_2.9.80.rb \
src/onedb/2.9.80_to_2.9.85.rb \
src/onedb/2.9.85_to_2.9.90.rb \
src/onedb/2.9.90_to_3.0.rb \
src/onedb/onedb.rb \
src/onedb/onedb_backend.rb"
src/onedb/onedb_backend.rb \
src/onedb/Configuration.rb"
#-------------------------------------------------------------------------------
# Configuration files for OpenNebula, to be installed under $ETC_LOCATION

View File

@ -117,7 +117,7 @@ class AuthDriver < OpenNebulaDriver
authN_path = File.join(@local_scripts_path, protocol)
command = File.join(authN_path,ACTION[:authN].downcase)
command << ' ' << user << ' ' << password << ' ' << secret_attr.join(' ')
command << ' ' << user << ' ' << password << ' ' << secret_attr.join(':')
local_action(command, request_id, ACTION[:authN])
end

View File

@ -0,0 +1,31 @@
# -------------------------------------------------------------------------- *
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# Licensed under the Apache License, Version 2.0 (the "License"); you may *
# not use this file except in compliance with the License. You may obtain *
# a copy of the License at *
# *
# http://www.apache.org/licenses/LICENSE-2.0 *
# *
# Unless required by applicable law or agreed to in writing, software *
# distributed under the License is distributed on an "AS IS" BASIS, *
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
# See the License for the specific language governing permissions and *
# limitations under the License. *
# -------------------------------------------------------------------------- *
require "rexml/document"
include REXML
module Migrator
def db_version
"2.9.90"
end
def one_version
"OpenNebula 2.9.90"
end
def up
return true
end
end

View File

@ -0,0 +1,48 @@
# -------------------------------------------------------------------------- *
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# Licensed under the Apache License, Version 2.0 (the "License"); you may *
# not use this file except in compliance with the License. You may obtain *
# a copy of the License at *
# *
# http://www.apache.org/licenses/LICENSE-2.0 *
# *
# Unless required by applicable law or agreed to in writing, software *
# distributed under the License is distributed on an "AS IS" BASIS, *
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
# See the License for the specific language governing permissions and *
# limitations under the License. *
# -------------------------------------------------------------------------- *
require "rexml/document"
include REXML
module Migrator
def db_version
"3.0"
end
def one_version
"OpenNebula 3.0"
end
def up
# The tm_nfs driver has been renamed to tm_shared
# CREATE TABLE host_pool (oid INTEGER PRIMARY KEY, name VARCHAR(256), body TEXT, state INTEGER, last_mon_time INTEGER, UNIQUE(name));
@db.fetch("SELECT * FROM host_pool") do |row|
doc = Document.new(row[:body])
source = nil
doc.root.each_element("TM_MAD") { |e|
if e.text.downcase == "tm_nfs"
e.text = "tm_shared"
@db[:host_pool].filter(:oid => row[:oid]).update(
:body => doc.root.to_s)
end
}
end
return true
end
end

115
src/onedb/Configuration.rb Normal file
View File

@ -0,0 +1,115 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
###############################################################################
# The Configuration Class represents a simple configuration file for the
# Cloud servers. It does not check syntax.
###############################################################################
class Configuration
###########################################################################
# Patterns to parse the Configuration File
###########################################################################
NAME_REG =/[\w\d_-]+/
VARIABLE_REG =/\s*(#{NAME_REG})\s*=\s*/
SIMPLE_VARIABLE_REG =/#{VARIABLE_REG}([^\[]+?)(#.*)?/
SINGLE_VARIABLE_REG =/^#{SIMPLE_VARIABLE_REG}$/
ARRAY_VARIABLE_REG =/^#{VARIABLE_REG}\[(.*?)\]/m
###########################################################################
###########################################################################
def initialize(file)
@conf=parse_conf(file)
end
def add_configuration_value(key,value)
add_value(@conf,key,value)
end
def [](key)
@conf[key.to_s.upcase]
end
###########################################################################
###########################################################################
private
#
#
#
def add_value(conf, key, value)
if conf[key]
if !conf[key].kind_of?(Array)
conf[key]=[conf[key]]
end
conf[key]<<value
else
conf[key]=value
end
end
#
#
#
def parse_conf(file)
conf_file=File.read(file)
conf=Hash.new
conf_file.scan(SINGLE_VARIABLE_REG) {|m|
key=m[0].strip.upcase
value=m[1].strip
# hack to skip multiline VM_TYPE values
next if %w{NAME TEMPLATE}.include? key.upcase
add_value(conf, key, value)
}
conf_file.scan(ARRAY_VARIABLE_REG) {|m|
master_key=m[0].strip.upcase
pieces=m[1].split(',')
vars=Hash.new
pieces.each {|p|
key, value=p.split('=')
vars[key.strip.upcase]=value.strip
}
add_value(conf, master_key, vars)
}
conf
end
end
#
# Test program for the Configuration Parser
#
if $0 == __FILE__
require 'pp'
conf=Configuration.new('cloud.conf')
pp conf
end

View File

@ -14,7 +14,7 @@
# limitations under the License. #
#--------------------------------------------------------------------------- #
require 'cloud/Configuration'
require 'Configuration'
require 'onedb_backend'
class OneDB

View File

@ -200,7 +200,7 @@ class OzonesServer
return [500, OZones::Error.new("Error: Couldn't update vdc. " \
" Reason: #{rc.message}").to_json]
end
end
end
############################################################################
# Delete resources

View File

@ -36,7 +36,7 @@ var dashboard_tab_content =
</td>\
<td>\
<div class="panel">\
<h3><a href="#vdcs_tab">Virtual Data Center</a>\
<h3><a href="#vdcs_tab">Virtual Data Centers</a>\
<div class="new-resource">\
<a class="action_button" href="#vdcs_tab" value="VDC.create_dialog">+</a>\
</div>\

View File

@ -41,10 +41,12 @@ var create_zone_tmpl =
<input type="text" name="name" id="name" /><br />\
<label for="endpoint">End point:</label>\
<input type="text" name="endpoint" id="endpoint" /><br />\
<label for="onename">ONE auth:</label>\
<label for="onename">Oneadmin user:</label>\
<input type="text" name="onename" id="onename" /><br />\
<label for="onepass">Password:</label>\
<input type="password" name="onepass" id="onepass" />\
<label for="sunsendpoint">Sunstone end point:</label>\
<input type="text" name="sunsendpoint" id="sunsendpoint" /><br />\
</div>\
</fieldset>\
<fieldset>\
@ -298,6 +300,10 @@ function updateZoneInfo(req,zone_json){
<td class="key_td">Endpoint</td>\
<td class="value_td">'+zone.endpoint+'</td>\
</tr>\
<tr>\
<td class="key_td">Sunstone endpoint</td>\
<td class="value_td"><a href="'+zone.sunsendpoint+'" target="_blank">'+zone.sunsendpoint+'<span class="ui-icon ui-icon-extlink" style="display:inline-block;" /></a></td>\
</tr>\
<tr>\
<td class="key_td">#VDCs</td>\
<td class="value_td">'+zone.vdcs.length+'</td>\
@ -544,6 +550,7 @@ function setupCreateZoneDialog(){
var endpoint = $('#endpoint',this).val();
var onename = $('#onename',this).val();
var onepass = $('#onepass',this).val();
var sunsendpoint = $('#sunsendpoint',this).val();
if (!name.length || !endpoint.length ||
!onename.length || !onepass.length){
@ -556,7 +563,8 @@ function setupCreateZoneDialog(){
"name": name,
"endpoint": endpoint,
"onename": onename,
"onepass": onepass
"onepass": onepass,
"sunsendpoint" : sunsendpoint
}
};
@ -589,7 +597,8 @@ $(document).ready(function(){
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,2] },
{ "sWidth": "60px", "aTargets": [0] },
{ "sWidth": "300px", "aTargets": [3] },
{ "sWidth": "35px", "aTargets": [1] }
]
});

View File

@ -229,7 +229,9 @@ class SunstoneServer
begin
novnc_cmd = "#{config[:novnc_path]}/utils/wsproxy.py"
pipe = IO.popen("#{novnc_cmd} #{proxy_port} #{host}:#{vnc_port}")
novnc_exec = "#{novnc_cmd} #{proxy_port} #{host}:#{vnc_port}"
$stderr.puts("Starting vnc proxy: #{novnc_exec}")
pipe = IO.popen(novnc_exec)
rescue Exception => e
error = Error.new(e.message)
return [500, error.to_json]

View File

@ -27,7 +27,7 @@
#include "Group.h"
const string User::INVALID_CHARS = " :\t\n\v\f\r";
const string User::INVALID_CHARS = " \t\n\v\f\r";
/* ************************************************************************** */
/* User :: Database Access Functions */