fog--fog/lib/fog/terremark/requests/shared/get_organization.rb

87 lines
2.8 KiB
Ruby

module Fog
module Terremark
module Shared
module Real
# Get details of an organization
#
# ==== Parameters
# * organization_id<~Integer> - Id of organization to lookup
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'description'<~String> - Description of organization
# * 'links'<~Array> - An array of links to entities in the organization
# * 'href'<~String> - location of link
# * 'name'<~String> - name of link
# * 'rel'<~String> - action to perform
# * 'type'<~String> - type of link
# * 'name'<~String> - Name of organization
def get_organization(organization_id)
response = request(
:expects => 200,
:method => 'GET',
:parser => Fog::Parsers::Terremark::Shared::GetOrganization.new,
:path => "org/#{organization_id}"
)
response
end
end
module Mock
def get_organization(organization_id)
organization_id = organization_id.to_i
response = Excon::Response.new
if org = @data[:organizations].detect { |org| org[:info][:id] == organization_id }
body = { "name" => org[:info][:name],
"href" => "#{@base_url}/org/#{org[:info][:id]}",
"Links" => [] }
body["Links"] = case self
when Fog::Terremark::Vcloud::Mock
_vdc_links(org[:vdcs][0])
when Fog::Terremark::Ecloud::Mock
org[:vdcs].map do |vdc|
_vdc_links(vdc)
end.flatten
end
response.status = 200
response.body = body
response.headers = Fog::Terremark::Shared::Mock.headers(response.body, "application/vnd.vmware.vcloud.org+xml")
else
response.status = Fog::Terremark::Shared::Mock.unathorized_status
response.headers = Fog::Terremark::Shared::Mock.error_headers
end
response
end
private
def _vdc_links(vdc)
[{ "name" => vdc[:name],
"href" => "#{@base_url}/vdc/#{vdc[:id]}",
"rel" => "down",
"type" => "application/vnd.vmware.vcloud.vdc+xml" },
{ "name" => "#{vdc[:name]} Catalog",
"href" => "#{@base_url}/vdc/#{vdc[:id]}/catalog",
"rel" => "down",
"type" => "application/vnd.vmware.vcloud.catalog+xml" },
{ "name" => "#{vdc[:name]} Tasks List",
"href" => "#{@base_url}/vdc/#{vdc[:id]}/taskslist",
"rel" => "down",
"type" => "application/vnd.vmware.vcloud.tasksList+xml" }
]
end
end
end
end
end