On 04/05/2013 04:51 PM, [email protected] wrote:

ACK

From: Dies Koper <[email protected]>

---
  .../deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb   | 15 ++++++++++-----
  .../deltacloud/drivers/mock/mock_driver_cimi_methods.rb   |  4 ++++
  2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb 
b/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb
index 0380fb1..386cc11 100644
--- a/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb
+++ b/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb
@@ -48,7 +48,8 @@ module Deltacloud::Drivers::Fgcp
            )
          end
          systems = systems.select { |s| opts[:id] == s[:id] } if opts[:id]
-        # now add system state and advertised operations
+
+        # now add system state and advertise operations
          systems.each do |system|
            vservers = 
client.list_vservers(system[:id])['vservers'][0]['vserver']
            if vservers.nil?
@@ -57,19 +58,23 @@ module Deltacloud::Drivers::Fgcp
              vservers.each do |vserver|
                state = 
@@MACHINE_STATE_MAP[client.get_vserver_status(vserver['vserverId'][0])['vserverStatus'][0]]
                system[:state] ||= state
-              system[:operations] <<  { :href => 
context.system_url("#{system[:id]}/start"), :rel => 
"http://schemas.dmtf.org/cimi/1/action/start"; } if state == 'STOPPED'
-              system[:operations] <<  { :href => context.system_url("#{system[:id]}/stop"), 
:rel => "http://schemas.dmtf.org/cimi/1/action/stop"; } if state == 'STARTED'
+              system[:operations] << { :href => context.system_url("#{system[:id]}/start"), 
:rel => "http://schemas.dmtf.org/cimi/1/action/start"; } if state == 'STOPPED'
+              system[:operations] << { :href => context.system_url("#{system[:id]}/stop"), 
:rel => "http://schemas.dmtf.org/cimi/1/action/stop"; } if state == 'STARTED'
                if system[:state] != state
                  system[:state] = 'MIXED'
                  # this case could have been caused by one machine in 
capturing state and one in e.g. creating,
                  # but just advertise both operations to cut it short
-                system[:operations] <<  { :href => 
context.system_url("#{system[:id]}/start"), :rel => 
"http://schemas.dmtf.org/cimi/1/action/start"; }
-                system[:operations] <<  { :href => 
context.system_url("#{system[:id]}/stop"), :rel => 
"http://schemas.dmtf.org/cimi/1/action/stop"; }
+                system[:operations] << { :href => 
context.system_url("#{system[:id]}/start"), :rel => 
"http://schemas.dmtf.org/cimi/1/action/start"; }
+                system[:operations] << { :href => 
context.system_url("#{system[:id]}/stop"), :rel => 
"http://schemas.dmtf.org/cimi/1/action/stop"; }
                  break
                end
              end
              system[:operations].uniq!
            end
+          # check for special case: in destroy_system the FW is stopped before 
the system is deleted
+          system[:state] = 'DELETING' if ((vservers.nil? and system[:state] != 
'CREATING') or system[:state] == 'STOPPED') and
+                                         ['STOPPED', 'STOPPING'].include? 
client.get_efm_status("#{system[:id]}-S-0001")['efmStatus'][0]
+          system[:operations] << { :href => context.system_url(system[:id]), :rel => 
"delete" } if system[:state] == 'STOPPED'
          end
          systems
        end
diff --git a/server/lib/deltacloud/drivers/mock/mock_driver_cimi_methods.rb 
b/server/lib/deltacloud/drivers/mock/mock_driver_cimi_methods.rb
index 4ac01aa..217736a 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver_cimi_methods.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver_cimi_methods.rb
@@ -297,6 +297,8 @@ module Deltacloud::Drivers::Mock

      # Convert all attributes that have values of the form
      #   http://cimi.example.org/COLL/ID
+    #   or
+    #   http://cimi.example.org/COLL/ID/SUBCOLL/ENT_ID
      def convert_urls(val, context)
        if val.nil? || val.is_a?(Fixnum)
          # Nothing to do
@@ -324,6 +326,8 @@ module Deltacloud::Drivers::Mock
      #
      # URLs that should be rewritten need to be in the form
      #   http://cimi.example.org/COLLECTION/ID
+    #   or
+    #   http://cimi.example.org/COLLECTION/SYSTEM_ID/SUBCOLLECTION/ENT_ID
      def rewrite_url(s, context)
        begin
          u = URI.parse(s)



--

Michal Fojtik <[email protected]>
Deltacloud API, CloudForms

Reply via email to