fog 0.0.84 → 0.0.85

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +47 -37
  3. data/bin/fog +9 -10
  4. data/fog.gemspec +23 -4
  5. data/lib/fog.rb +19 -1
  6. data/lib/fog/aws.rb +23 -0
  7. data/lib/fog/aws/bin.rb +4 -0
  8. data/lib/fog/aws/ec2.rb +20 -27
  9. data/lib/fog/aws/elb.rb +115 -0
  10. data/lib/fog/aws/models/ec2/server.rb +7 -1
  11. data/lib/fog/aws/models/s3/directories.rb +4 -4
  12. data/lib/fog/aws/models/s3/directory.rb +13 -11
  13. data/lib/fog/aws/parsers/elb/deregister_instances_from_load_balancer.rb +26 -0
  14. data/lib/fog/aws/parsers/elb/describe_instance_health.rb +30 -0
  15. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +101 -0
  16. data/lib/fog/aws/parsers/elb/disable_availability_zones_for_load_balancer.rb +26 -0
  17. data/lib/fog/aws/parsers/elb/enable_availability_zones_for_load_balancer.rb +26 -0
  18. data/lib/fog/aws/parsers/elb/register_instances_with_load_balancer.rb +26 -0
  19. data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -2
  20. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +45 -0
  21. data/lib/fog/aws/requests/elb/describe_instance_health.rb +44 -0
  22. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +57 -0
  23. data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +44 -0
  24. data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +44 -0
  25. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +45 -0
  26. data/lib/fog/aws/s3.rb +8 -1
  27. data/lib/fog/aws/simpledb.rb +9 -18
  28. data/lib/fog/bin.rb +11 -1
  29. data/lib/fog/credentials.rb +1 -0
  30. data/lib/fog/local.rb +72 -0
  31. data/lib/fog/local/bin.rb +34 -0
  32. data/lib/fog/local/models/directories.rb +43 -0
  33. data/lib/fog/local/models/directory.rb +47 -0
  34. data/lib/fog/local/models/file.rb +58 -0
  35. data/lib/fog/local/models/files.rb +74 -0
  36. data/lib/fog/model.rb +2 -8
  37. data/lib/fog/rackspace/models/files/directories.rb +3 -3
  38. data/lib/fog/rackspace/models/files/directory.rb +8 -5
  39. data/lib/fog/rackspace/models/servers/server.rb +7 -3
  40. data/lib/fog/rackspace/requests/servers/create_server.rb +1 -1
  41. data/lib/fog/ssh.rb +91 -25
  42. data/lib/fog/terremark/bin.rb +1 -8
  43. data/lib/fog/terremark/ecloud.rb +14 -5
  44. data/lib/fog/terremark/models/shared/server.rb +54 -3
  45. data/lib/fog/terremark/parsers/shared/vapp.rb +1 -1
  46. data/lib/fog/terremark/requests/shared/get_network.rb +39 -1
  47. data/lib/fog/terremark/requests/shared/get_organization.rb +45 -1
  48. data/lib/fog/terremark/requests/shared/get_organizations.rb +2 -1
  49. data/lib/fog/terremark/requests/shared/get_public_ips.rb +32 -1
  50. data/lib/fog/terremark/requests/shared/get_vdc.rb +83 -1
  51. data/lib/fog/terremark/requests/shared/{reset.rb → power_reset.rb} +1 -1
  52. data/lib/fog/terremark/requests/shared/power_shutdown.rb +32 -0
  53. data/lib/fog/terremark/shared.rb +139 -18
  54. data/lib/fog/terremark/vcloud.rb +14 -5
  55. data/spec/aws/models/ec2/address_spec.rb +1 -3
  56. data/spec/aws/models/ec2/snapshot_spec.rb +25 -49
  57. data/spec/aws/models/ec2/snapshots_spec.rb +25 -31
  58. data/spec/aws/models/ec2/volume_spec.rb +9 -3
  59. data/spec/aws/models/s3/directory_spec.rb +14 -14
  60. data/spec/aws/requests/ec2/associate_address_spec.rb +4 -5
  61. data/spec/aws/requests/ec2/attach_volume_spec.rb +14 -16
  62. data/spec/aws/requests/ec2/create_snapshot_spec.rb +2 -3
  63. data/spec/aws/requests/ec2/delete_snapshot_spec.rb +5 -6
  64. data/spec/aws/requests/ec2/describe_instances_spec.rb +3 -2
  65. data/spec/aws/requests/ec2/describe_snapshots_spec.rb +21 -25
  66. data/spec/aws/requests/ec2/detach_volume_spec.rb +14 -16
  67. data/spec/aws/requests/ec2/disassociate_address_spec.rb +3 -4
  68. data/spec/aws/requests/ec2/get_console_output_spec.rb +1 -0
  69. data/spec/aws/requests/s3/get_service_spec.rb +5 -6
  70. data/spec/spec_helper.rb +0 -20
  71. data/tests/helper.rb +0 -10
  72. data/tests/rackspace/requests/servers/create_image_tests.rb +2 -2
  73. data/tests/rackspace/requests/servers/create_server_tests.rb +3 -2
  74. data/tests/rackspace/requests/servers/delete_image_tests.rb +2 -2
  75. data/tests/rackspace/requests/servers/delete_server_tests.rb +1 -1
  76. data/tests/rackspace/requests/servers/get_server_details_tests.rb +1 -1
  77. data/tests/rackspace/requests/servers/list_addresses_tests.rb +1 -1
  78. data/tests/rackspace/requests/servers/list_private_addresses_tests.rb +1 -1
  79. data/tests/rackspace/requests/servers/list_public_addresses_tests.rb +1 -1
  80. data/tests/rackspace/requests/servers/list_servers_detail_tests.rb +1 -1
  81. data/tests/rackspace/requests/servers/list_servers_tests.rb +1 -1
  82. data/tests/rackspace/requests/servers/reboot_server_tests.rb +3 -3
  83. data/tests/rackspace/requests/servers/update_server_tests.rb +1 -1
  84. data/tests/slicehost/requests/create_slice_tests.rb +1 -1
  85. data/tests/slicehost/requests/delete_slice_tests.rb +1 -1
  86. data/tests/slicehost/requests/get_slice_tests.rb +1 -1
  87. data/tests/slicehost/requests/reboot_slice_tests.rb +2 -2
  88. metadata +24 -5
  89. data/lib/fog/terremark/requests/shared/shutdown.rb +0 -43
@@ -18,7 +18,7 @@ module Fog
18
18
  link[attributes.shift] = attributes.shift
19
19
  end
20
20
  @response['Links'] << link
21
- when 'Vapp'
21
+ when 'VApp'
22
22
  vapp = {}
23
23
  until attributes.empty?
24
24
  if attributes.first.is_a?(Array)
@@ -26,7 +26,45 @@ module Fog
26
26
  module Mock
27
27
 
28
28
  def get_network(network_id)
29
- raise MockNotImplemented.new("Contributions welcome!")
29
+ network_id = network_id.to_i
30
+ response = Excon::Response.new
31
+ if network = @data[:organizations].map { |org| org[:vdcs].map { |vdc| vdc[:networks] } }.flatten.detect { |network| network[:id] == network_id }
32
+
33
+ body = { "links" => [],
34
+ "type" => "application/vnd.vmware.vcloud.network+xml",
35
+ "href" => "#{@base_url}/network/#{network_id}" }
36
+
37
+ network.each_key do |key|
38
+ body[key.to_s] = network[key]
39
+ end
40
+
41
+ link = { "name" => "IP Addresses",
42
+ "rel" => "down",
43
+ "type" => "application/xml" }
44
+ link["href"] = case self
45
+ when Fog::Terremark::Ecloud::Mock
46
+ "#{@base_url}/extensions/network/#{network_id}/ips"
47
+ when Fog::Terremark::Vcloud::Mock
48
+ "#{@base_url}/network/#{network_id}/ipAddresses"
49
+ end
50
+ body["links"] << link
51
+
52
+ response.status = 200
53
+ response.body = body
54
+ response.headers = Fog::Terremark::Shared::Mock.headers(response.body,
55
+ case self
56
+ when Fog::Terremark::Ecloud::Mock
57
+ "application/vnd.vmware.vcloud.network+xml"
58
+ when Fog::Terremark::Vcloud::Mock
59
+ "application/xml; charset=utf-8"
60
+ end
61
+ )
62
+ else
63
+ response.status = Fog::Terremark::Shared::Mock.unathorized_status
64
+ response.headers = Fog::Terremark::Shared::Mock.error_headers
65
+ end
66
+
67
+ response
30
68
  end
31
69
 
32
70
  end
@@ -33,7 +33,51 @@ module Fog
33
33
  module Mock
34
34
 
35
35
  def get_organization(organization_id)
36
- raise MockNotImplemented.new("Contributions welcome!")
36
+ organization_id = organization_id.to_i
37
+ response = Excon::Response.new
38
+
39
+ if org = @data[:organizations].detect { |org| org[:info][:id] == organization_id }
40
+
41
+ body = { "name" => org[:info][:name],
42
+ "href" => "#{@base_url}/org/#{org[:info][:id]}",
43
+ "Links" => [] }
44
+
45
+ body["Links"] = case self
46
+ when Fog::Terremark::Vcloud::Mock
47
+ _vdc_links(org[:vdcs][0])
48
+ when Fog::Terremark::Ecloud::Mock
49
+ org[:vdcs].map do |vdc|
50
+ _vdc_links(vdc)
51
+ end.flatten
52
+ end
53
+
54
+ response.status = 200
55
+ response.body = body
56
+ response.headers = Fog::Terremark::Shared::Mock.headers(response.body, "application/vnd.vmware.vcloud.org+xml")
57
+ else
58
+ response.status = Fog::Terremark::Shared::Mock.unathorized_status
59
+ response.headers = Fog::Terremark::Shared::Mock.error_headers
60
+ end
61
+
62
+ response
63
+ end
64
+
65
+ private
66
+
67
+ def _vdc_links(vdc)
68
+ [{ "name" => vdc[:name],
69
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}",
70
+ "rel" => "down",
71
+ "type" => "application/vnd.vmware.vcloud.vdc+xml" },
72
+ { "name" => "#{vdc[:name]} Catalog",
73
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}/catalog",
74
+ "rel" => "down",
75
+ "type" => "application/vnd.vmware.vcloud.catalog+xml" },
76
+ { "name" => "#{vdc[:name]} Tasks List",
77
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}/taskslist",
78
+ "rel" => "down",
79
+ "type" => "application/vnd.vmware.vcloud.tasksList+xml" }
80
+ ]
37
81
  end
38
82
  end
39
83
 
@@ -33,11 +33,12 @@ module Fog
33
33
  response = Excon::Response.new
34
34
  org_list = @data[:organizations].map do |organization|
35
35
  { "name" => organization[:info][:name],
36
- "href" => "https://services.enterprisecloud.terremark.com/api/v0.8a-ext2.0/org/#{organization[:info][:id]}",
36
+ "href" => "#{@base_url}/org/#{organization[:info][:id]}",
37
37
  "type" => "application/vnd.vmware.vcloud.org+xml"
38
38
  }
39
39
  end
40
40
  response.body = { "OrgList" => org_list }
41
+ response.status = 200
41
42
  response.headers = Fog::Terremark::Shared::Mock.headers(response.body, "application/vnd.vmware.vcloud.orgList+xml")
42
43
  response
43
44
  end
@@ -32,7 +32,38 @@ module Fog
32
32
  module Mock
33
33
 
34
34
  def get_public_ips(vdc_id)
35
- raise MockNotImplemented.new("Contributions welcome!")
35
+ vdc_id = vdc_id.to_i
36
+ response = Excon::Response.new
37
+
38
+ if vdc = @data[:organizations].map { |org| org[:vdcs] }.flatten.detect { |vdc| vdc[:id] == vdc_id }
39
+ body = { "PublicIpAddresses" => [] }
40
+ vdc[:public_ips].each do |ip|
41
+ ip = { "name" => ip[:name],
42
+ "href" => case self
43
+ when Fog::Terremark::Ecloud::Mock
44
+ "#{@base_url}/extensions/publicIp/#{ip[:id]}"
45
+ when Fog::Terremark::Vcloud::Mock
46
+ "#{@base_url}/PublicIps/#{ip[:id]}"
47
+ end,
48
+ "id" => ip[:id].to_s }
49
+ body["PublicIpAddresses"] << ip
50
+ end
51
+ response.status = 200
52
+ response.body = body
53
+ response.headers = Fog::Terremark::Shared::Mock.headers(response.body,
54
+ case self
55
+ when Fog::Terremark::Ecloud::Mock
56
+ "application/vnd.tmrk.ecloud.publicIpsList+xml"
57
+ when Fog::Terremark::Vcloud::Mock
58
+ "application/xml; charset=utf-8"
59
+ end
60
+ )
61
+ else
62
+ response.status = Fog::Terremark::Shared::Mock.unathorized_status
63
+ response.headers = Fog::Terremark::Shared::Mock.error_headers
64
+ end
65
+
66
+ response
36
67
  end
37
68
 
38
69
  end
@@ -34,7 +34,89 @@ module Fog
34
34
  module Mock
35
35
 
36
36
  def get_vdc(vdc_id)
37
- raise MockNotImplemented.new("Contributions welcome!")
37
+ vdc_id = vdc_id.to_i
38
+ response = Excon::Response.new
39
+
40
+ if vdc = @data[:organizations].map { |org| org[:vdcs] }.flatten.detect { |vdc| vdc[:id] == vdc_id }
41
+
42
+ body = { "name" => vdc[:name],
43
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}",
44
+ "StorageCapacity" => {},
45
+ "ComputeCapacity" => { "InstantiatedVmsQuota" => {},
46
+ "DeployedVmsQuota" => {},
47
+ "Cpu" => {},
48
+ "Memory" => {} },
49
+ "ResourceEntities" => [],
50
+ "AvailableNetworks" => [],
51
+ "links" => [] }
52
+
53
+ case self
54
+ when Fog::Terremark::Ecloud::Mock
55
+ body["StorageCapacity"] = { "Units" => "bytes * 10^9" }
56
+ vdc[:storage].each { |k,v| body["StorageCapacity"][k.to_s.capitalize] = v.to_s }
57
+
58
+ body["ComputeCapacity"] = { "InstantiatedVmsQuota" => {"Limit" => "-1", "Used" => "-1"},
59
+ "DeployedVmsQuota" => {"Limit" => "-1", "Used" => "-1"},
60
+ "Cpu" => { "Units" => "hz * 10^6" },
61
+ "Memory" => { "Units" => "bytes * 2^20" } }
62
+
63
+ [:cpu, :memory].each do |key|
64
+ vdc[key].each { |k,v| body["ComputeCapacity"][key.to_s.capitalize][k.to_s.capitalize] = v.to_s }
65
+ end
66
+
67
+ body["links"] << { "name" => "Public IPs",
68
+ "href" => "#{@base_url}/extensions/vdc/#{vdc[:id]}/publicIps",
69
+ "rel" => "down",
70
+ "type" => "application/vnd.tmrk.ecloud.publicIpsList+xml" }
71
+
72
+ body["links"] << { "name" => "Internet Services",
73
+ "href" => "#{@base_url}/extensions/vdc/#{vdc[:id]}/internetServices",
74
+ "rel" => "down",
75
+ "type" => "application/vnd.tmrk.ecloud.internetServicesList+xml" }
76
+
77
+ body["links"] << { "name" => "Firewall Access List",
78
+ "href" => "#{@base_url}/extensions/vdc/#{vdc[:id]}/firewallAcls",
79
+ "rel" => "down",
80
+ "type" => "application/vnd.tmrk.ecloud.firewallAclsList+xml" }
81
+
82
+ when Fog::Terremark::Vcloud::Mock
83
+ body["links"] << { "name" => "Public IPs",
84
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}/publicIps",
85
+ "rel" => "down",
86
+ "type" => "application/xml" }
87
+
88
+ body["links"] << { "name" => "Internet Services",
89
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}/internetServices",
90
+ "rel" => "down",
91
+ "type" => "application/xml" }
92
+ end
93
+
94
+ vdc[:vms].each do |vm|
95
+ body["ResourceEntities"] << { "name" => vm[:name],
96
+ "href" => "#{@base_url}/vapp/#{vm[:id]}",
97
+ "type" => "application/vnd.vmware.vcloud.vApp+xml" }
98
+ end
99
+
100
+ vdc[:networks].each do |network|
101
+ body["AvailableNetworks"] << { "name" => network[:name],
102
+ "href" => "#{@base_url}/network/#{network[:id]}",
103
+ "type" => "application/vnd.vmware.vcloud.network+xml" }
104
+ end
105
+
106
+ body["links"] << { "name" => vdc[:name],
107
+ "href" => "#{@base_url}/vdc/#{vdc[:id]}/catalog",
108
+ "rel" => "down",
109
+ "type" => "application/vnd.vmware.vcloud.catalog+xml" }
110
+
111
+ response.status = 200
112
+ response.body = body
113
+ response.headers = Fog::Terremark::Shared::Mock.headers(response.body, "application/vnd.vmware.vcloud.org+xml")
114
+ else
115
+ response.status = Fog::Terremark::Shared::Mock.unathorized_status
116
+ response.headers = Fog::Terremark::Shared::Mock.error_headers
117
+ end
118
+
119
+ response
38
120
  end
39
121
 
40
122
  end
@@ -20,7 +20,7 @@ module Fog
20
20
  # * 'href'<~String> - href of owner
21
21
  # * 'name'<~String> - name of owner
22
22
  # * 'type'<~String> - type of owner
23
- def reset(vapp_id)
23
+ def power_reset(vapp_id)
24
24
  request(
25
25
  :expects => 202,
26
26
  :method => 'POST',
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Terremark
3
+ module Shared
4
+ module Real
5
+
6
+ # Shutdown a vapp
7
+ #
8
+ # ==== Parameters
9
+ # * vapp_id<~Integer> - Id of vapp to shutdown
10
+ #
11
+ # ==== Returns
12
+ # Nothing
13
+ def power_shutdown(vapp_id)
14
+ request(
15
+ :expects => 204,
16
+ :method => 'POST',
17
+ :path => "vApp/#{vapp_id}/power/action/shutdown"
18
+ )
19
+ end
20
+
21
+ end
22
+
23
+ module Mock
24
+
25
+ def power_shutdown(vapp_id)
26
+ raise MockNotImplemented.new("Contributions welcome!")
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,6 +2,23 @@ module Fog
2
2
  module Terremark
3
3
  module Shared
4
4
 
5
+ # Commond methods shared by Real and Mock
6
+ module Common
7
+
8
+ # TODO: bust cache on organization creation?
9
+ def default_organization_id
10
+ @default_organization_id ||= begin
11
+ org_list = get_organizations.body['OrgList']
12
+ if org_list.length == 1
13
+ org_list.first['href'].split('/').last.to_i
14
+ else
15
+ nil
16
+ end
17
+ end
18
+ end
19
+
20
+ end
21
+
5
22
  module Parser
6
23
 
7
24
  def parse(data)
@@ -16,28 +33,44 @@ module Fog
16
33
  end
17
34
 
18
35
  module Real
19
-
20
- # TODO: bust cache on organization creation?
21
- def default_organization_id
22
- @default_organization_id ||= begin
23
- org_list = get_organizations.body['OrgList']
24
- if org_list.length == 1
25
- org_list.first['href'].split('/').last.to_i
26
- else
27
- nil
28
- end
29
- end
30
- end
36
+ include Common
31
37
 
32
38
  private
33
39
 
40
+ def auth_token
41
+ response = @connection.request({
42
+ :expects => 200,
43
+ :headers => {
44
+ 'Authorization' => "Basic #{Base64.encode64("#{@terremark_username}:#{@terremark_password}").chomp!}",
45
+ 'Content-Type' => "application/vnd.vmware.vcloud.orgList+xml"
46
+ },
47
+ :host => @host,
48
+ :method => 'POST',
49
+ :parser => Fog::Parsers::Terremark::Shared::GetOrganizations.new,
50
+ :path => "#{@path}/login"
51
+ })
52
+ response.headers['Set-Cookie']
53
+ end
54
+
34
55
  def request(params)
35
56
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
57
+ unless @cookie
58
+ @cookie = auth_token
59
+ end
60
+ begin
61
+ do_request(params)
62
+ rescue Excon::Errors::Unauthorized => e
63
+ @cookie = auth_token
64
+ do_request(params)
65
+ end
66
+ end
67
+
68
+ def do_request(params)
36
69
  headers = {}
37
70
  if @cookie
38
71
  headers.merge!('Cookie' => @cookie)
39
72
  end
40
- response = @connection.request({
73
+ @connection.request({
41
74
  :body => params[:body],
42
75
  :expects => params[:expects],
43
76
  :headers => headers.merge!(params[:headers] || {}),
@@ -51,6 +84,7 @@ module Fog
51
84
  end
52
85
 
53
86
  module Mock
87
+ include Common
54
88
 
55
89
  DATA = {
56
90
  :organizations =>
@@ -58,12 +92,96 @@ module Fog
58
92
  {
59
93
  :info => {
60
94
  :name => "Boom Inc.",
61
- :id => "1"
62
- }
95
+ :id => 1
96
+ },
97
+ :vdcs => [
98
+ { :id => 21,
99
+ :name => "Boomstick",
100
+ :storage => { :used => 105, :allocated => 200 },
101
+ :cpu => { :allocated => 10000 },
102
+ :memory => { :allocated => 20480 },
103
+ :networks => [
104
+ { :id => 31,
105
+ :name => "1.2.3.0/24",
106
+ :subnet => "1.2.3.0/24",
107
+ :gateway => "1.2.3.1",
108
+ :netmask => "255.255.255.0",
109
+ :fencemode => "isolated"
110
+ },
111
+ { :id => 32,
112
+ :name => "4.5.6.0/24",
113
+ :subnet => "4.5.6.0/24",
114
+ :gateway => "4.5.6.1",
115
+ :netmask => "255.255.255.0",
116
+ :fencemode => "isolated"
117
+ },
118
+ ],
119
+ :vms => [
120
+ { :id => 41,
121
+ :name => "Broom 1"
122
+ },
123
+ { :id => 42,
124
+ :name => "Broom 2"
125
+ },
126
+ { :id => 43,
127
+ :name => "Email!"
128
+ }
129
+ ],
130
+ :public_ips => [
131
+ { :id => 51,
132
+ :name => "99.1.2.3"
133
+ },
134
+ { :id => 52,
135
+ :name => "99.1.2.4"
136
+ },
137
+ { :id => 53,
138
+ :name => "99.1.9.7"
139
+ }
140
+ ]
141
+ },
142
+ { :id => 22,
143
+ :storage => { :used => 40, :allocated => 150 },
144
+ :cpu => { :allocated => 1000 },
145
+ :memory => { :allocated => 2048 },
146
+ :name => "Rock-n-Roll",
147
+ :networks => [
148
+ { :id => 33,
149
+ :name => "7.8.9.0/24",
150
+ :subnet => "7.8.9.0/24",
151
+ :gateway => "7.8.9.1",
152
+ :netmask => "255.255.255.0",
153
+ :fencemode => "isolated"
154
+ }
155
+ ],
156
+ :vms => [
157
+ { :id => 44,
158
+ :name => "Master Blaster"
159
+ }
160
+ ],
161
+ :public_ips => [
162
+ { :id => 54,
163
+ :name => "99.99.99.99"
164
+ }
165
+ ]
166
+ }
167
+ ]
63
168
  }
64
169
  ]
65
170
  }
66
171
 
172
+ def self.error_headers
173
+ {"X-Powered-By"=>"ASP.NET",
174
+ "Date"=> Time.now.to_s,
175
+ "Content-Type"=>"text/html",
176
+ "Content-Length"=>"0",
177
+ "Server"=>"Microsoft-IIS/7.0",
178
+ "Cache-Control"=>"private"}
179
+ end
180
+
181
+ def self.unathorized_status
182
+ 401
183
+ end
184
+
67
185
  def self.headers(body, content_type)
68
186
  {"X-Powered-By"=>"ASP.NET",
69
187
  "Date"=> Time.now.to_s,
@@ -74,6 +192,10 @@ module Fog
74
192
  "Cache-Control"=>"private"}
75
193
  end
76
194
 
195
+ def self.status
196
+ 200
197
+ end
198
+
77
199
  def initialize(options={})
78
200
  self.class.instance_eval '
79
201
  def self.data
@@ -152,11 +274,10 @@ module Fog
152
274
  require 'fog/terremark/requests/shared/get_vapp_template'
153
275
  require 'fog/terremark/requests/shared/get_vdc'
154
276
  require 'fog/terremark/requests/shared/instantiate_vapp_template'
155
- require 'fog/terremark/requests/shared/reset'
156
277
  require 'fog/terremark/requests/shared/power_off'
157
278
  require 'fog/terremark/requests/shared/power_on'
158
- require 'fog/terremark/requests/shared/shutdown'
159
-
279
+ require 'fog/terremark/requests/shared/power_reset'
280
+ require 'fog/terremark/requests/shared/power_shutdown'
160
281
  end
161
282
 
162
283
  end