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

Reply via email to