diff --git a/src/ozones/Client/lib/cli/ozones_helper.rb b/src/ozones/Client/lib/cli/ozones_helper.rb index 20c319d1d7..5239fdd42d 100644 --- a/src/ozones/Client/lib/cli/ozones_helper.rb +++ b/src/ozones/Client/lib/cli/ozones_helper.rb @@ -78,7 +78,7 @@ module OZonesHelper def get_id(rc) - id = rc.body.match('\"id\":(.*)$')[1].strip + id = rc.body.match('\"ID\":(.*)$')[1].strip if id[-1..-1] == "," id = id[0..id.size-2] end diff --git a/src/ozones/Client/lib/cli/ozones_helper/vdc_helper.rb b/src/ozones/Client/lib/cli/ozones_helper/vdc_helper.rb index 58c0b57b60..c4a394e799 100644 --- a/src/ozones/Client/lib/cli/ozones_helper/vdc_helper.rb +++ b/src/ozones/Client/lib/cli/ozones_helper/vdc_helper.rb @@ -62,7 +62,7 @@ class VDCHelper < OZonesHelper::OZHelper vdc = Zona::OZonesJSON.parse_json(rc.body, @vdc_str.upcase) end - hosts = vdc['hosts'].split(',').collect!{|x| x.to_i} + hosts = vdc['HOSTS'].split(',').collect!{|x| x.to_i} host_array.concat(hosts).uniq! new_host = host_array.join(',') @@ -90,7 +90,7 @@ class VDCHelper < OZonesHelper::OZHelper vdc = Zona::OZonesJSON.parse_json(rc.body, @vdc_str.upcase) end - hosts = vdc['hosts'].split(',').collect!{|x| x.to_i} + hosts = vdc['HOSTS'].split(',').collect!{|x| x.to_i} new_host = (hosts - host_array).join(',') template = "ID=#{id}\nHOSTS=#{new_host}\n" @@ -112,12 +112,12 @@ class VDCHelper < OZonesHelper::OZHelper CLIHelper.print_header(str_h1 % ["VDC #{vdc['name']} INFORMATION"]) - puts str % ["ID ", vdc['id'].to_s] - puts str % ["NAME ", vdc['name'].to_s] - puts str % ["GROUP_ID ", vdc['group_id'].to_s] - puts str % ["ZONEID ", vdc['zones_id'].to_s] - puts str % ["VDCADMIN ", vdc['vdcadminname'].to_s] - puts str % ["HOST IDs ", vdc['hosts'].to_s] + puts str % ["ID ", vdc['ID'].to_s] + puts str % ["NAME ", vdc['NAME'].to_s] + puts str % ["GROUP_ID ", vdc['GROUP_ID'].to_s] + puts str % ["ZONEID ", vdc['ZONES_ID'].to_s] + puts str % ["VDCADMIN ", vdc['VDCADMINNAME'].to_s] + puts str % ["HOST IDs ", vdc['HOSTS'].to_s] puts return 0 @@ -126,16 +126,16 @@ class VDCHelper < OZonesHelper::OZHelper def format_pool(pool, options) st=CLIHelper::ShowTable.new(nil) do column :ID, "Identifier for VDC", :size=>4 do |d,e| - d["id"] + d["ID"] end column :NAME, "Name of the VDC", :right, :size=>15 do |d,e| - d["name"] + d["NAME"] end column :ZONEID, "Id of the Zone where it belongs", :right, :size=>40 do |d,e| - d["zones_id"] + d["ZONES_ID"] end default :ID, :NAME, :ZONEID diff --git a/src/ozones/Client/lib/cli/ozones_helper/zones_helper.rb b/src/ozones/Client/lib/cli/ozones_helper/zones_helper.rb index 15e2e0ada4..a56029f7e6 100644 --- a/src/ozones/Client/lib/cli/ozones_helper/zones_helper.rb +++ b/src/ozones/Client/lib/cli/ozones_helper/zones_helper.rb @@ -36,17 +36,17 @@ class ZonesHelper < OZonesHelper::OZHelper str_h1="%-61s" str="%-15s: %-20s" - CLIHelper.print_header(str_h1 % ["ZONE #{zone['name']} INFORMATION"]) + CLIHelper.print_header(str_h1 % ["ZONE #{zone['NAME']} INFORMATION"]) - puts str % ["ID ", zone['id'].to_s] - puts str % ["NAME ", zone['name'].to_s] - puts str % ["ZONE ADMIN ",zone['onename'].to_s] - puts str % ["ZONE PASS ", zone['onepass'].to_s] - puts str % ["ENDPOINT ", zone['endpoint'].to_s] - puts str % ["# VDCS ", zone['vdcs'].size.to_s] + puts str % ["ID ", zone['ID'].to_s] + puts str % ["NAME ", zone['NAME'].to_s] + puts str % ["ZONE ADMIN ",zone['ONENAME'].to_s] + puts str % ["ZONE PASS ", zone['ONEPASS'].to_s] + puts str % ["ENDPOINT ", zone['ENDPOINT'].to_s] + puts str % ["# VDCS ", zone['VDCS'].size.to_s] puts - if zone['vdcs'].size == 0 + if zone['VDCS'].size == 0 return [0, zone] end @@ -54,17 +54,17 @@ class ZonesHelper < OZonesHelper::OZHelper st=CLIHelper::ShowTable.new(nil) do column :ID, "Identifier for VDC", :size=>4 do |d,e| - d["id"] + d["ID"] end column :NAME, "Name of the VDC", :right, :size=>15 do |d,e| - d["name"] + d["NAME"] end default :ID, :NAME end - st.show(zone["vdcs"], options) + st.show(zone["VDCS"], options) return [0, zone] end @@ -72,15 +72,15 @@ class ZonesHelper < OZonesHelper::OZHelper def format_pool(pool, options) st=CLIHelper::ShowTable.new(nil) do column :ID, "Identifier for Zone", :size=>4 do |d,e| - d["id"] + d["ID"] end column :NAME, "Name of the Zone", :right, :size=>15 do |d,e| - d["name"] + d["NAME"] end column :ENDPOINT, "Endpoint of the Zone", :right, :size=>40 do |d,e| - d["endpoint"] + d["ENDPOINT"] end default :ID, :NAME, :ENDPOINT @@ -89,4 +89,4 @@ class ZonesHelper < OZonesHelper::OZHelper return 0 end -end \ No newline at end of file +end diff --git a/src/ozones/Client/lib/zona.rb b/src/ozones/Client/lib/zona.rb index a514508665..23a8b1e912 100644 --- a/src/ozones/Client/lib/zona.rb +++ b/src/ozones/Client/lib/zona.rb @@ -260,7 +260,7 @@ EOT return value else if Zona.is_http_error?(value) - str = "Operating with #{kind.upcase} failed with HTTP error" + str = "Operating with #{kind} failed with HTTP error" str = " " + str + "code: #{value.code}\n" if value.body # Try to extract error message @@ -287,7 +287,7 @@ EOT # @return [String, Zona::Error] JSON string or Error def self.to_body(kind, tmpl_str) tmpl = OpenNebula::Configuration.new(tmpl_str) - res = { "#{kind}" => tmpl.conf } + res = { "#{kind.upcase}" => tmpl.conf } return OZonesJSON.to_json(res) end diff --git a/src/ozones/Client/lib/zona/OZonesElement.rb b/src/ozones/Client/lib/zona/OZonesElement.rb index 502b0a20d4..e1ed76bd81 100644 --- a/src/ozones/Client/lib/zona/OZonesElement.rb +++ b/src/ozones/Client/lib/zona/OZonesElement.rb @@ -30,8 +30,8 @@ module Zona @client = client @json_hash = hash - @pe_id = self["id"] ? self["id"].to_i : nil - @name = self["name"] ? self["name"] : nil + @pe_id = self["ID"] ? self["ID"].to_i : nil + @name = self["NAME"] ? self["NAME"] : nil end # Retrieves details about an object and fills in @@ -48,8 +48,8 @@ module Zona rc = nil - @pe_id = self["id"] ? self["id"].to_i : nil - @name = self["name"] ? self["name"] : nil + @pe_id = self["ID"] ? self["ID"].to_i : nil + @name = self["NAME"] ? self["NAME"] : nil end rc @@ -72,7 +72,7 @@ module Zona if !Zona.is_error?(rc) initialize_json(rc.body,kind.upcase) - @pe_id = self["id"].to_i + @pe_id = self["ID"].to_i rc = nil end rc @@ -98,7 +98,7 @@ module Zona # @param [Zona::Client] client OZones Client for this element # @return [OZonesElement] A new element object def self.new_with_id(id, client=nil) - self.new(self.build_json(id),client) + self.new(self.build_json(id.to_i),client) end end diff --git a/src/ozones/Client/lib/zona/VDCElement.rb b/src/ozones/Client/lib/zona/VDCElement.rb index c3152f23c0..43f1081876 100644 --- a/src/ozones/Client/lib/zona/VDCElement.rb +++ b/src/ozones/Client/lib/zona/VDCElement.rb @@ -23,14 +23,15 @@ module Zona class VDC < OZonesElement # String describing the kind of this resource + # Should become part of the requests to server: get /vdc/... VDC_KIND = "vdc" # Builds minimal JSON description for a VDC - # @param [#to_i] pe_id VDC's ID + # @param [Integer] pe_id VDC's ID # @return [Hash,Zona::Error] Hash description of the object, or Error def self.build_json(pe_id=nil) if pe_id - json = "{\"VDC\":{\"id\":#{pe_id}}}" + json = "{\"VDC\":{\"ID\":#{pe_id}}}" else json = '{"VDC":{}}' end @@ -85,14 +86,14 @@ module Zona return Error.new('VDC not info-ed') if !@json_hash # array of hosts, integers - hosts = self["hosts"].split(',').collect!{|x| x.to_i} + hosts = self["HOSTS"].split(',').collect!{|x| x.to_i} hosts.concat(hosts_array).uniq! new_hosts = hosts.join(',') - template = {:id => @pe_id, :hosts => new_hosts} - template[:force] = "yes" if options[:force] + template = {:ID => @pe_id, :HOSTS => new_hosts} + template[:FORCE] = "YES" if options[:FORCE] - template = {:vdc => template} + template = {:VDC => template} rc = @client.put_resource(VDC_KIND,@pe_id,template.to_json) return rc if Zona.is_error?(rc) @@ -106,10 +107,10 @@ module Zona def delhosts(hosts_array) return Error.new('VDC not info-ed') if !@json_hash - hosts = self["hosts"].split(',').collect!{|x| x.to_i} + hosts = self["HOSTS"].split(',').collect!{|x| x.to_i} new_hosts = (hosts - hosts_array).join(',') - template = {:vdc => {:id => @pe_id, :hosts => new_hosts}} + template = {:VDC => {:ID => @pe_id, :HOSTS => new_hosts}} rc = @client.put_resource(VDC_KIND,@pe_id,template.to_json) return rc if Zona.is_error?(rc) diff --git a/src/ozones/Client/lib/zona/ZoneElement.rb b/src/ozones/Client/lib/zona/ZoneElement.rb index ca54acd10d..69df5baf75 100644 --- a/src/ozones/Client/lib/zona/ZoneElement.rb +++ b/src/ozones/Client/lib/zona/ZoneElement.rb @@ -29,7 +29,7 @@ module Zona # @return [Hash,Zona::Error] Hash description of the object, or Error def self.build_json(pe_id=nil) if pe_id - json = "{\"ZONE\":{\"id\":#{pe_id}}}" + json = "{\"ZONE\":{\"ID\":#{pe_id}}}" else json = '{"ZONE":{}}' end diff --git a/src/ozones/Server/lib/OZones/AggregatedPool.rb b/src/ozones/Server/lib/OZones/AggregatedPool.rb index 0963a92805..cc4adfd855 100644 --- a/src/ozones/Server/lib/OZones/AggregatedPool.rb +++ b/src/ozones/Server/lib/OZones/AggregatedPool.rb @@ -35,8 +35,8 @@ module OZones zone_pool_hash = zone.to_hash["ZONE"] client = OpenNebula::Client.new( - zone.onename + ":" + zone.onepass, - zone.endpoint, + zone.ONENAME + ":" + zone.ONEPASS, + zone.ENDPOINT, false) pool = factory(client) diff --git a/src/ozones/Server/lib/OZones/ApacheWritter.rb b/src/ozones/Server/lib/OZones/ApacheWritter.rb index bd7c2c059f..287c5feef5 100644 --- a/src/ozones/Server/lib/OZones/ApacheWritter.rb +++ b/src/ozones/Server/lib/OZones/ApacheWritter.rb @@ -26,13 +26,13 @@ module OZones OZones::Zones.all.each{|zone| zone.vdcs.all.each{|vdc| - htaccess << "RewriteRule ^#{vdc.name} " + - "#{zone.endpoint} [P]\n" - if zone.sunsendpoint != nil - htaccess << "RewriteRule ^sunstone_#{vdc.name}/(.+) " + - "#{zone.sunsendpoint}/$1 [P]\n" - htaccess << "RewriteRule ^sunstone_#{vdc.name} " + - "#{zone.sunsendpoint}/ [P]\n" + htaccess << "RewriteRule ^#{vdc.NAME} " + + "#{zone.ENDPOINT} [P]\n" + if zone.SUNSENDPOINT != nil + htaccess << "RewriteRule ^sunstone_#{vdc.NAME}/(.+) " + + "#{zone.SUNSENDPOINT}/$1 [P]\n" + htaccess << "RewriteRule ^sunstone_#{vdc.NAME} " + + "#{zone.SUNSENDPOINT}/ [P]\n" end } } @@ -44,4 +44,4 @@ module OZones end end -end \ No newline at end of file +end diff --git a/src/ozones/Server/lib/OZones/VDC.rb b/src/ozones/Server/lib/OZones/VDC.rb index 6c452af31f..4f9ae7829e 100644 --- a/src/ozones/Server/lib/OZones/VDC.rb +++ b/src/ozones/Server/lib/OZones/VDC.rb @@ -21,13 +21,13 @@ module OZones include OpenNebulaJSON::JSONUtils extend OpenNebulaJSON::JSONUtils - property :id, Serial - property :name, String, :required => true, :unique => true - property :group_id, Integer - property :vdcadminname, String, :required => true - property :vdcadmin_id, Integer - property :acls, String - property :hosts, String + property :ID, Serial + property :NAME, String, :required => true, :unique => true + property :GROUP_ID, Integer + property :VDCADMINNAME, String, :required => true + property :VDCADMIN_ID, Integer + property :ACLS, String + property :HOSTS, String belongs_to :zones @@ -36,14 +36,27 @@ module OZones zonePoolHash["VDC_POOL"] = Hash.new zonePoolHash["VDC_POOL"]["VDC"] = Array.new unless self.all.empty? self.all.each{|vdc| - zonePoolHash["VDC_POOL"]["VDC"] << vdc.attributes + # Hack! zones_ID does not respect the + # "all capital letters" policy + attrs = vdc.attributes.clone + attrs[:ZONES_ID] = vdc.attributes[:zones_ID] + attrs.delete(:zones_ID) + + zonePoolHash["VDC_POOL"]["VDC"] << attrs } return zonePoolHash end def to_hash vdc_attributes = Hash.new - vdc_attributes["VDC"] = attributes + + # Hack! zones_ID does not respect the + # "all capital letters" policy + attrs = attributes.clone + attrs[:ZONES_ID] = attributes[:zones_ID] + attrs.delete(:zones_ID) + + vdc_attributes["VDC"] = attrs return vdc_attributes end end @@ -57,7 +70,7 @@ module OZones ####################################################################### # Constants ####################################################################### - VDC_ATTRS = [:vdcadminname, :vdcadminpass, :name, :hosts] + VDC_ATTRS = [:VDCADMINNAME, :VDCADMINPASS, :NAME, :HOSTS] attr_reader :vdc attr_reader :zone @@ -72,14 +85,14 @@ module OZones raise "VDC with id #{vdcid} not found." end - @zone = OZones::Zones.get(@vdc.zones_id) + @zone = OZones::Zones.get(@vdc.zones_ID) else @zone = zone end @client = OpenNebula::Client.new( - "#{@zone.onename}:#{@zone.onepass}", - @zone.endpoint, + "#{@zone.ONENAME}:#{@zone.ONEPASS}", + @zone.ENDPOINT, false) end @@ -102,24 +115,24 @@ module OZones #Create a vdc record @vdc = Vdc.new - vdcpass = Digest::SHA1.hexdigest(vdc_data.delete(:vdcadminpass)) + vdcpass = Digest::SHA1.hexdigest(vdc_data.delete(:VDCADMINPASS)) @vdc.attributes = vdc_data # Create a group in the zone with the VDC name group = OpenNebula::Group.new(OpenNebula::Group.build_xml, @client) - rc = group.allocate(@vdc.name) + rc = group.allocate(@vdc.NAME) return rc if OpenNebula.is_error?(rc) - @vdc.group_id = group.id + @vdc.GROUP_ID = group.id # Create the VDC admin user in the Zone user = OpenNebula::User.new(OpenNebula::User.build_xml, @client) - rc = user.allocate(@vdc.vdcadminname, vdcpass) + rc = user.allocate(@vdc.VDCADMINNAME, vdcpass) return rollback(group, nil, nil, rc) if OpenNebula.is_error?(rc) - @vdc.vdcadmin_id = user.id + @vdc.VDCADMIN_ID = user.id # Change primary group of the admin user to the VDC group rc = user.chgrp(group.id) @@ -132,7 +145,7 @@ module OZones rc, acls_str = create_acls(rules) return rollback(group, user,acls_str,rc) if OpenNebula.is_error?(rc) - @vdc.acls = acls_str + @vdc.ACLS = acls_str return true end @@ -150,13 +163,13 @@ module OZones up.info up.each{|user| - if user['GID'].to_i == @vdc.group_id + if user['GID'].to_i == @vdc.GROUP_ID user.delete end } # Delete the group - OpenNebula::Group.new_with_id(@vdc.group_id, @client).delete + OpenNebula::Group.new_with_id(@vdc.GROUP_ID, @client).delete return @vdc.destroy end @@ -165,18 +178,18 @@ module OZones def clean_bootstrap delete_acls - OpenNebula::User.new_with_id(@vdc.vdcadmin_id, @client).delete - OpenNebula::Group.new_with_id(@vdc.group_id, @client).delete + OpenNebula::User.new_with_id(@vdc.VDCADMIN_ID, @client).delete + OpenNebula::Group.new_with_id(@vdc.GROUP_ID, @client).delete end def update(host_list) # Delete existing host ACLs delete_host_acls - if @vdc.acls =~ /((\d+,){#{HOST_ACL_FIRST_ID}}).*/ + if @vdc.ACLS =~ /((\d+,){#{HOST_ACL_FIRST_ID}}).*/ newacls = $1.chop else - newacls = @vdc.acls.clone + newacls = @vdc.ACLS.clone end # Create new ACLs. TODO Rollback ACL creation @@ -194,8 +207,8 @@ module OZones #Update the VDC Record begin @vdc.raise_on_save_failure = true - @vdc.hosts = host_list - @vdc.acls = newacls + @vdc.HOSTS = host_list + @vdc.ACLS = newacls @vdc.save rescue => e @@ -218,12 +231,12 @@ module OZones rule_str = Array.new # Grant permissions to the group - rule_str << "@#{@vdc.group_id} VM+NET+IMAGE+TEMPLATE/* " \ + rule_str << "@#{@vdc.GROUP_ID} VM+NET+IMAGE+TEMPLATE/* " \ "CREATE+INFO_POOL_MINE" # Grant permissions to the vdc admin - rule_str << "##{@vdc.vdcadmin_id} USER/* CREATE" - rule_str << "##{@vdc.vdcadmin_id} USER/@#{@vdc.group_id} " \ + rule_str << "##{@vdc.VDCADMIN_ID} USER/* CREATE" + rule_str << "##{@vdc.VDCADMIN_ID} USER/@#{@vdc.GROUP_ID} " \ "MANAGE+DELETE+INFO" ############################################################### @@ -238,12 +251,12 @@ module OZones rule_str = Array.new if host_list == nil - host_list = @vdc.hosts + host_list = @vdc.HOSTS end # Grant permissions to use the vdc hosts host_list.split(',').each{|hostid| - rule_str << "@#{@vdc.group_id} HOST/##{hostid} USE" + rule_str << "@#{@vdc.GROUP_ID} HOST/##{hostid} USE" } return rule_str @@ -254,7 +267,7 @@ module OZones ####################################################################### # Deletes ACLs for the hosts def delete_host_acls - host_acls = @vdc.acls.split(',')[HOST_ACL_FIRST_ID..-1] + host_acls = @vdc.ACLS.split(',')[HOST_ACL_FIRST_ID..-1] if host_acls host_acls.each{|acl| @@ -265,7 +278,7 @@ module OZones # Delete ACLs def delete_acls - @vdc.acls.split(",").each{|acl| + @vdc.ACLS.split(",").each{|acl| OpenNebula::Acl.new_with_id(acl.to_i, @client).delete } end @@ -276,7 +289,7 @@ module OZones ip.info ip.each{|image| - image.delete if image['GID'].to_i == @vdc.group_id + image.delete if image['GID'].to_i == @vdc.GROUP_ID } end @@ -286,7 +299,7 @@ module OZones tp.info tp.each{|template| - template.delete if template['GID'].to_i == @vdc.group_id + template.delete if template['GID'].to_i == @vdc.GROUP_ID } end @@ -296,7 +309,7 @@ module OZones vmp.info vmp.each{|vm| - vm.delete if vm['GID'].to_i == @vdc.group_id + vm.delete if vm['GID'].to_i == @vdc.GROUP_ID } end @@ -306,7 +319,7 @@ module OZones vnp.info vnp.each{|vn| - vnp.delete if vn['GID'].to_i == @vdc.group_id + vnp.delete if vn['GID'].to_i == @vdc.GROUP_ID } end diff --git a/src/ozones/Server/lib/OZones/Zones.rb b/src/ozones/Server/lib/OZones/Zones.rb index 3c40601f48..d3dc05e47e 100644 --- a/src/ozones/Server/lib/OZones/Zones.rb +++ b/src/ozones/Server/lib/OZones/Zones.rb @@ -24,19 +24,19 @@ module OZones ####################################################################### # Data Model for the Zone ####################################################################### - property :id, Serial - property :name, String, :required => true, :unique => true - property :onename, String, :required => true - property :onepass, String, :required => true - property :endpoint, String, :required => true - property :sunsendpoint, String + property :ID, Serial + property :NAME, String, :required => true, :unique => true + property :ONENAME, String, :required => true + property :ONEPASS, String, :required => true + property :ENDPOINT, String, :required => true + property :SUNSENDPOINT, String has n, :vdcs ####################################################################### # Constants ####################################################################### - ZONE_ATTRS = [:onename, :onepass, :endpoint, :name] + ZONE_ATTRS = [:ONENAME, :ONEPASS, :ENDPOINT, :NAME] ####################################################################### # JSON Functions @@ -48,7 +48,7 @@ module OZones self.all.each{|zone| zonePoolHash["ZONE_POOL"]["ZONE"] << - zone.attributes.merge({:numbervdcs => zone.vdcs.all.size}) + zone.attributes.merge({:NUMBERVDCS => zone.vdcs.all.size}) } return zonePoolHash @@ -57,10 +57,10 @@ module OZones def to_hash zone_attributes = Hash.new zone_attributes["ZONE"] = attributes - zone_attributes["ZONE"][:vdcs] = Array.new + zone_attributes["ZONE"][:VDCS] = Array.new self.vdcs.all.each{|vdc| - zone_attributes["ZONE"][:vdcs]<< vdc.attributes + zone_attributes["ZONE"][:VDCS]<< vdc.attributes } return zone_attributes @@ -69,12 +69,7 @@ module OZones ####################################################################### # Zone Data Management ####################################################################### - def self.create(data) - zone_data = Hash.new - - data.each{|key,value| - zone_data[key.downcase.to_sym] = value - } + def self.create(zone_data) ZONE_ATTRS.each { |param| if !zone_data[param] @@ -84,17 +79,20 @@ module OZones } # Digest and check credentials - zone_data[:onepass] = Digest::SHA1.hexdigest(zone_data[:onepass]) + zone_data[:ONEPASS] = Digest::SHA1.hexdigest(zone_data[:ONEPASS]) - rc = OpenNebulaZone::check_oneadmin(zone_data[:onename], - zone_data[:onepass], - zone_data[:endpoint]) + $stderr.puts zone_data + + rc = OpenNebulaZone::check_oneadmin(zone_data[:ONENAME], + zone_data[:ONEPASS], + zone_data[:ENDPOINT]) if OpenNebula.is_error?(rc) return OZones::Error.new("Error: Couldn't create zone. "\ "Reason: #{rc.message}") end + # Create the zone begin zone = Zones.new @@ -124,8 +122,8 @@ module OZones end @client = OpenNebula::Client.new( - "#{@zone.onename}:#{@zone.onepass}", - @zone.endpoint, + "#{@zone.ONENAME}:#{@zone.ONEPASS}", + @zone.ENDPOINT, false) end diff --git a/src/ozones/Server/models/OzonesServer.rb b/src/ozones/Server/models/OzonesServer.rb index ca47d85fdf..63119d7ed2 100644 --- a/src/ozones/Server/models/OzonesServer.rb +++ b/src/ozones/Server/models/OzonesServer.rb @@ -77,22 +77,16 @@ class OzonesServer ############################################################################ def create_vdc (body,pr) #Setup POST data - data = parse_json(body,"vdc") + vdc_data = parse_json_sym(body,:VDC) - if OpenNebula.is_error?(data) + if OpenNebula.is_error?(vdc_data) return [400, OZones::Error.new("Error: Couldn't update vdc. " \ "Reason: #{data.message}.").to_json] end - vdc_data = Hash.new - - data.each{|key,value| - vdc_data[key.downcase.to_sym] = value - } - #Get the Zone that will host the VDC. And check resouces - zoneid = vdc_data.delete(:zoneid) - force = vdc_data.delete(:force) + zoneid = vdc_data.delete(:ZONEID) + force = vdc_data.delete(:FORCE) if !zoneid return [400, OZones::Error.new("Error: Couldn't create vdc. " \ @@ -106,7 +100,7 @@ class OzonesServer end if (!force or force.upcase!="YES") and - !host_uniqueness?(zone, vdc_data[:hosts]) + !host_uniqueness?(zone, vdc_data[:HOSTS]) return [403, OZones::Error.new("Error: Couldn't create vdc. " \ "Hosts are not unique, use force to override").to_json] @@ -140,7 +134,7 @@ class OzonesServer def create_zone(body, pr) #Setup POST data - data = parse_json(body,"zone") + data = parse_json_sym(body,:ZONE) if OpenNebula.is_error?(data) return [400, OZones::Error.new("Error: Couldn't update vdc. " \ @@ -162,21 +156,15 @@ class OzonesServer ############################################################################ def update_vdc(vdc_id, body) #Setup PUT data - data = parse_json(body,"vdc") + vdc_data = parse_json_sym(body,:VDC) - if OpenNebula.is_error?(data) + if OpenNebula.is_error?(vdc_data) return [400, OZones::Error.new("Error: Couldn't update vdc. " \ "Reason: #{data.message}.").to_json] end - vdc_data = Hash.new - - data.each{|key,value| - vdc_data[key.downcase.to_sym]=value - } - - hosts = vdc_data.delete(:hosts) - force = vdc_data.delete(:force) + hosts = vdc_data.delete(:HOSTS) + force = vdc_data.delete(:FORCE) # Check parameters if !hosts @@ -260,8 +248,8 @@ class OzonesServer all_hosts = "" zone.vdcs.all.each{|vdc| - if vdc.hosts != nil and !vdc.hosts.empty? and vdc.id != vdc_id - all_hosts << ',' << vdc.hosts + if vdc.HOSTS != nil and !vdc.HOSTS.empty? and vdc.id != vdc_id + all_hosts << ',' << vdc.HOSTS end } diff --git a/src/ozones/Server/public/js/plugins/aggregated-tab.js b/src/ozones/Server/public/js/plugins/aggregated-tab.js index b340bc6dd3..fac340b763 100644 --- a/src/ozones/Server/public/js/plugins/aggregated-tab.js +++ b/src/ozones/Server/public/js/plugins/aggregated-tab.js @@ -416,7 +416,7 @@ function hostsListCB(req,list){ return; }; var host_json = oZones.Helper.pool("HOST",this.ZONE); - updateHostsList(req, host_json,'#datatable_agg_hosts',this.ZONE.id,this.ZONE.name); + updateHostsList(req, host_json,'#datatable_agg_hosts',this.ZONE.ID,this.ZONE.NAME); updateZonesDashboard("hosts",host_json); }); } @@ -429,7 +429,7 @@ function vmsListCB(req,list){ return; }; var vms_json = oZones.Helper.pool("VM",this.ZONE); - updateVMsList(req, vms_json,'#datatable_agg_vms',this.ZONE.id,this.ZONE.name); + updateVMsList(req, vms_json,'#datatable_agg_vms',this.ZONE.ID,this.ZONE.NAME); updateZonesDashboard("vms",vms_json); }); } @@ -442,7 +442,7 @@ function vnsListCB(req,list){ return; }; var vn_json = oZones.Helper.pool("VNET",this.ZONE); - updateVNsList(req, vn_json,'#datatable_agg_vnets',this.ZONE.id,this.ZONE.name); + updateVNsList(req, vn_json,'#datatable_agg_vnets',this.ZONE.ID,this.ZONE.NAME); updateZonesDashboard("vnets",vn_json); }); } @@ -455,7 +455,7 @@ function imagesListCB(req,list){ return; }; var image_json = oZones.Helper.pool("IMAGE",this.ZONE); - updateImagesList(req,image_json,'#datatable_agg_images',this.ZONE.id,this.ZONE.name); + updateImagesList(req,image_json,'#datatable_agg_images',this.ZONE.ID,this.ZONE.NAME); updateZonesDashboard("images",image_json); }); } @@ -468,7 +468,7 @@ function usersListCB(req,list){ return; }; var user_json = oZones.Helper.pool("USER",this.ZONE); - updateUsersList(req,user_json,'#datatable_agg_users',this.ZONE.id,this.ZONE.name); + updateUsersList(req,user_json,'#datatable_agg_users',this.ZONE.ID,this.ZONE.NAME); updateZonesDashboard("users",user_json); }); } @@ -481,7 +481,7 @@ function templatesListCB(req,list){ return; }; var template_json = oZones.Helper.pool("VMTEMPLATE",this.ZONE); - updateTemplatesList(req,template_json,'#datatable_agg_templates',this.ZONE.id,this.ZONE.name); + updateTemplatesList(req,template_json,'#datatable_agg_templates',this.ZONE.ID,this.ZONE.NAME); updateZonesDashboard("templates",template_json); }); } diff --git a/src/ozones/Server/public/js/plugins/vdcs-tab.js b/src/ozones/Server/public/js/plugins/vdcs-tab.js index 4564886c96..f75505e5e2 100644 --- a/src/ozones/Server/public/js/plugins/vdcs-tab.js +++ b/src/ozones/Server/public/js/plugins/vdcs-tab.js @@ -224,11 +224,11 @@ function vdcElementArray(vdc_json){ var vdc = vdc_json.VDC; return [ - '', - vdc.id, - vdc.name, - vdc.zones_id, - vdc.hosts ? vdc.hosts : "none" + '', + vdc.ID, + vdc.NAME, + vdc.ZONES_ID, + vdc.HOSTS ? vdc.HOSTS : "none" ]; } @@ -253,7 +253,7 @@ function addVDCElement(req,vdc_json){ } function updateVDCElement(request, vdc_json){ - var id = vdc_json.VDC.id; + var id = vdc_json.VDC.ID; var element = vdcElementArray(vdc_json); updateSingleElement(element,dataTable_vdcs,'#vdc_'+id); } @@ -276,36 +276,36 @@ function updateVDCInfo(req,vdc_json){ content : '\ \ - \ + \ \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \
Virtual Data Center - '+vdc.name+'
Virtual Data Center - '+vdc.NAME+'
ID'+vdc.id+''+vdc.ID+'
Name'+vdc.name+''+vdc.NAME+'
Zone ID'+vdc.zones_id+''+vdc.ZONES_ID+'
Hosts'+(vdc.hosts? vdc.hosts : "none")+''+(vdc.HOSTS? vdc.HOSTS : "none")+'
Admin name'+vdc.vdcadminname+''+vdc.VDCADMINNAME+'
Group ID'+vdc.group_id+''+vdc.GROUP_ID+'
ACLs'+vdc.acls+''+vdc.ACLS+'
' @@ -461,16 +461,16 @@ function setupCreateVDCDialog(){ }; var vdc_json = { - "vdc" : { - "name" : name, - "zoneid" : zoneid, - "vdcadminname" : vdcadminname, - "vdcadminpass" : vdcadminpass, - "force" : force + "VDC" : { + "NAME" : name, + "ZONEID" : zoneid, + "VDCADMINNAME" : vdcadminname, + "VDCADMINPASS" : vdcadminpass, + "FORCE" : force } }; if (hosts.length){ - vdc_json["vdc"]["hosts"]=hosts; + vdc_json["VDC"]["HOSTS"]=hosts; }; Sunstone.runAction("VDC.create",vdc_json); @@ -549,15 +549,15 @@ function setupUpdateVDCDialog(){ }; var vdc_json = { - "vdc" : { - "id": id, - "force": force, - "hosts": hosts + "VDC" : { + "ID": id, + "FORCE": force, + "HOSTS": "" } }; if (hosts.length){ - vdc_json["vdc"]["hosts"]=hosts; + vdc_json["VDC"]["HOSTS"]=hosts; }; Sunstone.runAction("VDC.update",id,vdc_json); dialog.dialog('close'); diff --git a/src/ozones/Server/public/js/plugins/zones-tab.js b/src/ozones/Server/public/js/plugins/zones-tab.js index 8f792209cd..67073f1d6b 100644 --- a/src/ozones/Server/public/js/plugins/zones-tab.js +++ b/src/ozones/Server/public/js/plugins/zones-tab.js @@ -228,10 +228,10 @@ function zoneElementArray(zone_json){ var zone = zone_json.ZONE; return [ - '', - zone.id, - zone.name, - zone.endpoint + '', + zone.ID, + zone.NAME, + zone.ENDPOINT ]; } @@ -281,32 +281,32 @@ function updateZoneInfo(req,zone_json){ content : '\ \ - \ + \ \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ + \ \ \ \ - \ +\ \ \ \ - \ + \ \ \
Zone information - '+zone.name+'
Zone information - '+zone.NAME+'
ID'+zone.id+''+zone.ID+'
Administrator'+zone.onename+''+zone.ONENAME+'
Password'+zone.onepass+''+zone.ONEPASS+'
Endpoint'+zone.endpoint+''+zone.ENDPOINT+'
Sunstone endpoint'+zone.sunsendpoint+''+ (zone.SUNSENDPOINT.length? ''+zone.SUNSENDPOINT+'' : "") +'
#VDCs'+zone.vdcs.length+''+zone.VDCS.length+'
' @@ -524,12 +524,12 @@ function updateZoneInfo(req,zone_json){ /*End init dataTables*/ //Retrieve pools in the meantime - Sunstone.runAction("Zone.host",zone.id); - Sunstone.runAction("Zone.vmtemplate",zone.id); - Sunstone.runAction("Zone.vms",zone.id); - Sunstone.runAction("Zone.vnet",zone.id); - Sunstone.runAction("Zone.image",zone.id); - Sunstone.runAction("Zone.user",zone.id); + Sunstone.runAction("Zone.host",zone.ID); + Sunstone.runAction("Zone.vmtemplate",zone.ID); + Sunstone.runAction("Zone.vms",zone.ID); + Sunstone.runAction("Zone.vnet",zone.ID); + Sunstone.runAction("Zone.image",zone.ID); + Sunstone.runAction("Zone.user",zone.ID); } @@ -559,12 +559,12 @@ function setupCreateZoneDialog(){ } var zone_json = { - "zone": { - "name": name, - "endpoint": endpoint, - "onename": onename, - "onepass": onepass, - "sunsendpoint" : sunsendpoint + "ZONE": { + "NAME": name, + "ENDPOINT": endpoint, + "ONENAME": onename, + "ONEPASS": onepass, + "SUNSENDPOINT" : sunsendpoint } }; diff --git a/src/sunstone/models/OpenNebulaJSON/JSONUtils.rb b/src/sunstone/models/OpenNebulaJSON/JSONUtils.rb index 4f0f96bc01..f6bf41783f 100644 --- a/src/sunstone/models/OpenNebulaJSON/JSONUtils.rb +++ b/src/sunstone/models/OpenNebulaJSON/JSONUtils.rb @@ -41,6 +41,22 @@ module OpenNebulaJSON end end + def parse_json_sym(json_str, root_element) + begin + parser = JSON.parser.new(json_str, {:symbolize_names => true}) + hash = parser.parse + + if hash.has_key?(root_element) + return hash[root_element] + end + + Error.new("Error parsing JSON:\ root element not present") + + rescue => e + Error.new(e.message) + end + end + def template_to_str(attributes, indent=true) if indent ind_enter="\n"