lib/fog/compute/terremark/requests/get_public_ips.rb
module Fog
module Compute
class Terremark
class Real
# Get list of public ips
#
# ==== Parameters
# * vdc_id<~Integer> - Id of vdc to find public ips for
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * "PublicIpAddresses"<~Array>
# * "href"<~String> - link to item
# * "name"<~String> - name of item
def get_public_ips(vdc_id)
opts = {
:expects => 200,
:method => "GET",
:parser => Fog::Parsers::Terremark::GetPublicIps.new,
:path => "vdc/#{vdc_id}/publicIps"
}
if self.class == Fog::Terremark::Ecloud::Real
opts[:path] = "extensions/vdc/#{vdc_id}/publicIps"
end
request(opts)
end
end
class Mock
def get_public_ips(vdc_id)
vdc_id = vdc_id.to_i
response = Excon::Response.new
vdc = self.data[:organizations].map { |org| org[:vdcs] }.flatten.find { |vdc| vdc[:id] == vdc_id }
if vdc
body = { "PublicIpAddresses" => [] }
vdc[:public_ips].each do |ip|
ip = { "name" => ip[:name],
"href" => case self
when Fog::Terremark::Ecloud::Mock
"#{@base_url}/extensions/publicIp/#{ip[:id]}"
when Fog::Terremark::Vcloud::Mock
"#{@base_url}/PublicIps/#{ip[:id]}"
end,
"id" => ip[:id].to_s }
body["PublicIpAddresses"] << ip
end
response.status = 200
response.body = body
response.headers = Fog::Compute::Terremark::Mock.headers(response.body,
case self
when Fog::Terremark::Ecloud::Mock
"application/vnd.tmrk.ecloud.publicIpsList+xml"
when Fog::Terremark::Vcloud::Mock
"application/xml; charset=utf-8"
end
)
else
response.status = Fog::Compute::Terremark::Mock.unathorized_status
response.headers = Fog::Compute::Terremark::Mock.error_headers
end
response
end
end
end
end
end