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