lib/fog/ecloud/requests/compute/get_servers.rb in fog-1.8.0 vs lib/fog/ecloud/requests/compute/get_servers.rb in fog-1.9.0

- old
+ new

@@ -1,11 +1,42 @@ module Fog module Compute class Ecloud - class Real basic_request :get_servers end + class Mock + def get_servers(uri) + if uri =~ /layoutgroups/i + group_id = id_from_uri(uri) + group = self.data[:groups][group_id] + servers = group[:VirtualMachines][:VirtualMachine] + compute_pool_id = servers.first[:compute_pool_id] unless servers.empty? + compute_pool = self.data[:compute_pools][compute_pool_id] unless compute_pool_id.nil? + elsif uri =~ /computepool/i + compute_pool_id = id_from_uri(uri) + compute_pool = self.data[:compute_pools][compute_pool_id] + servers = self.data[:servers].values.select{|cp| cp[:compute_pool_id] == compute_pool_id} + servers = servers.map{|server| Fog::Ecloud.slice(server, :id, :compute_pool_id)} + end + links = if compute_pool.nil? + [] + else + [Fog::Ecloud.keep(compute_pool, :name, :href, :type),] + end + + server_response = {:VirtualMachine => (servers.size > 1 ? servers : servers.first)} # GAH + body = { + :href => uri, + :type => "application/vnd.tmrk.cloud.virtualMachine; type=collection", + :Links => { + :Link => links + } + }.merge(server_response) + + response(:body => body) + end + end end end end