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:
commit
cc34893f6d
@ -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
|
||||
|
@ -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
|
||||
|
31
src/onedb/2.9.85_to_2.9.90.rb
Normal file
31
src/onedb/2.9.85_to_2.9.90.rb
Normal 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
|
48
src/onedb/2.9.90_to_3.0.rb
Normal file
48
src/onedb/2.9.90_to_3.0.rb
Normal 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
115
src/onedb/Configuration.rb
Normal 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
|
@ -14,7 +14,7 @@
|
||||
# limitations under the License. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
require 'cloud/Configuration'
|
||||
require 'Configuration'
|
||||
require 'onedb_backend'
|
||||
|
||||
class OneDB
|
||||
|
@ -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
|
||||
|
@ -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>\
|
||||
|
@ -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] }
|
||||
]
|
||||
});
|
||||
|
@ -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]
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user