From: marios <[email protected]> CIMI spec allows for non-existent cpu and disks (provider/consumer support optional) - as demonstrated by FGCP cloud.
Addresses JIRA DTACLOUD_245 - thanks Dies Kopper for reporting. https://issues.apache.org/jira/browse/DTACLOUD-245 Signed-off-by: marios <[email protected]> --- server/lib/cimi/models/machine.rb | 2 +- server/lib/cimi/models/machine_configuration.rb | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/lib/cimi/models/machine.rb b/server/lib/cimi/models/machine.rb index 0540bd8..c4a37a1 100644 --- a/server/lib/cimi/models/machine.rb +++ b/server/lib/cimi/models/machine.rb @@ -132,7 +132,6 @@ class CIMI::Model::Machine < CIMI::Model::Base end private - def self.from_instance(instance, context) cpu = memory = disks = (instance.instance_profile.id == "opaque")? "n/a" : nil self.new( @@ -187,6 +186,7 @@ class CIMI::Model::Machine < CIMI::Model::Base def self.convert_instance_storage(profile, context) machine_conf = CIMI::Model::MachineConfiguration.find(profile.name, context) + return nil unless machine_conf.disks storage_override = profile.overrides.find { |p, v| p == :storage } [ { :capacity => { diff --git a/server/lib/cimi/models/machine_configuration.rb b/server/lib/cimi/models/machine_configuration.rb index f9d98f2..28bf3ab 100644 --- a/server/lib/cimi/models/machine_configuration.rb +++ b/server/lib/cimi/models/machine_configuration.rb @@ -52,16 +52,16 @@ class CIMI::Model::MachineConfiguration < CIMI::Model::Base # We accept just profiles with all properties set return unless profile.memory or profile.cpu or profile.storage memory = profile.memory.value || profile.memory.default - cpu = profile.cpu.value || profile.cpu.default - storage = profile.storage.value || profile.storage.default + cpu = (profile.cpu ? (profile.cpu.value || profile.cpu.default) : nil ) + storage = (profile.storage ? (profile.storage.value || profile.storage.default) : nil ) machine_hash = { :name => profile.name, :description => "Machine Configuration with #{memory} #{profile.memory.unit} "+ "of memory and #{cpu} CPU", - :cpu => cpu, + :cpu => ( cpu if cpu ) , :created => Time.now.to_s, # FIXME: DC hardware_profile has no mention about created_at :memory => { :quantity => profile.memory.value || profile.memory.default, :units => profile.memory.unit }, - :disks => [ { :capacity => { :quantity => profile.storage.value || profile.storage.default, :units => profile.storage.unit } } ], + :disks => ( [ { :capacity => { :quantity => profile.storage.value || profile.storage.default, :units => profile.storage.unit } } ] if storage ), :id => context.machine_configuration_url(profile.name) } self.new(machine_hash) -- 1.7.6.5
