fog 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/Gemfile +2 -2
  2. data/Gemfile.lock +6 -6
  3. data/README.rdoc +4 -1
  4. data/bin/fog +2 -1
  5. data/examples/bluebox_create.rb +33 -0
  6. data/fog.gemspec +58 -30
  7. data/lib/fog.rb +2 -1
  8. data/lib/fog/aws/elb.rb +0 -9
  9. data/lib/fog/aws/requests/elb/create_load_balancer.rb +3 -3
  10. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
  11. data/lib/fog/aws/requests/elb/describe_instance_health.rb +1 -1
  12. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +1 -1
  13. data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +1 -1
  14. data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +1 -1
  15. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
  16. data/lib/fog/aws/requests/s3/get_bucket.rb +1 -6
  17. data/lib/fog/aws/requests/s3/get_bucket_acl.rb +1 -1
  18. data/lib/fog/aws/requests/s3/get_bucket_location.rb +1 -1
  19. data/lib/fog/aws/requests/s3/get_bucket_logging.rb +1 -1
  20. data/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +1 -6
  21. data/lib/fog/aws/requests/s3/get_bucket_versioning.rb +1 -1
  22. data/lib/fog/aws/requests/s3/get_object.rb +1 -1
  23. data/lib/fog/aws/requests/s3/get_object_acl.rb +2 -2
  24. data/lib/fog/aws/requests/s3/get_object_torrent.rb +1 -1
  25. data/lib/fog/aws/requests/s3/get_request_payment.rb +1 -1
  26. data/lib/fog/aws/requests/s3/head_object.rb +1 -1
  27. data/lib/fog/aws/requests/s3/put_bucket_acl.rb +1 -1
  28. data/lib/fog/aws/requests/s3/put_bucket_logging.rb +1 -1
  29. data/lib/fog/aws/requests/s3/put_bucket_versioning.rb +1 -1
  30. data/lib/fog/aws/requests/s3/put_object_url.rb +54 -0
  31. data/lib/fog/aws/requests/s3/put_request_payment.rb +1 -1
  32. data/lib/fog/aws/s3.rb +7 -2
  33. data/lib/fog/bin.rb +1 -1
  34. data/lib/fog/bluebox.rb +100 -0
  35. data/lib/fog/bluebox/bin.rb +43 -0
  36. data/lib/fog/bluebox/models/flavor.rb +43 -0
  37. data/lib/fog/bluebox/models/flavors.rb +38 -0
  38. data/lib/fog/bluebox/models/image.rb +17 -0
  39. data/lib/fog/bluebox/models/images.rb +42 -0
  40. data/lib/fog/bluebox/models/server.rb +79 -0
  41. data/lib/fog/bluebox/models/servers.rb +39 -0
  42. data/lib/fog/bluebox/requests/create_block.rb +39 -0
  43. data/lib/fog/bluebox/requests/destroy_block.rb +32 -0
  44. data/lib/fog/bluebox/requests/get_block.rb +32 -0
  45. data/lib/fog/bluebox/requests/get_blocks.rb +34 -0
  46. data/lib/fog/bluebox/requests/get_product.rb +32 -0
  47. data/lib/fog/bluebox/requests/get_products.rb +31 -0
  48. data/lib/fog/bluebox/requests/get_template.rb +32 -0
  49. data/lib/fog/bluebox/requests/get_templates.rb +32 -0
  50. data/lib/fog/bluebox/requests/reboot_block.rb +33 -0
  51. data/lib/fog/credentials.rb +2 -1
  52. data/lib/fog/rackspace/files.rb +4 -12
  53. data/lib/fog/rackspace/models/servers/flavors.rb +1 -1
  54. data/lib/fog/rackspace/models/servers/images.rb +1 -1
  55. data/lib/fog/rackspace/models/servers/servers.rb +1 -1
  56. data/lib/fog/rackspace/requests/files/get_container.rb +1 -6
  57. data/lib/fog/rackspace/requests/files/get_containers.rb +1 -7
  58. data/lib/fog/rackspace/requests/files/head_container.rb +1 -1
  59. data/lib/fog/rackspace/requests/files/head_containers.rb +1 -1
  60. data/lib/fog/rackspace/requests/servers/create_server.rb +4 -5
  61. data/lib/fog/rackspace/requests/servers/delete_image.rb +2 -1
  62. data/lib/fog/rackspace/requests/servers/delete_server.rb +2 -3
  63. data/lib/fog/rackspace/requests/servers/get_server_details.rb +2 -3
  64. data/lib/fog/rackspace/requests/servers/list_addresses.rb +2 -3
  65. data/lib/fog/rackspace/requests/servers/list_private_addresses.rb +2 -3
  66. data/lib/fog/rackspace/requests/servers/list_public_addresses.rb +2 -3
  67. data/lib/fog/rackspace/requests/servers/reboot_server.rb +1 -1
  68. data/lib/fog/rackspace/requests/servers/update_server.rb +2 -3
  69. data/lib/fog/rackspace/servers.rb +21 -11
  70. data/lib/fog/slicehost.rb +18 -13
  71. data/lib/fog/vcloud.rb +148 -107
  72. data/lib/fog/vcloud/model.rb +2 -1
  73. data/lib/fog/vcloud/parser.rb +5 -0
  74. data/lib/fog/vcloud/requests/get_vdc.rb +3 -3
  75. data/lib/fog/vcloud/requests/get_versions.rb +1 -1
  76. data/lib/fog/vcloud/requests/login.rb +1 -1
  77. data/lib/fog/vcloud/terremark/ecloud.rb +34 -0
  78. data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +29 -0
  79. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +51 -0
  80. data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +26 -0
  81. data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +32 -0
  82. data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +11 -0
  83. data/lib/fog/vcloud/terremark/ecloud/parsers/get_internet_services.rb +59 -0
  84. data/lib/fog/vcloud/terremark/ecloud/parsers/get_public_ip.rb +30 -0
  85. data/lib/fog/vcloud/terremark/ecloud/parsers/get_public_ips.rb +40 -0
  86. data/lib/fog/vcloud/terremark/ecloud/parsers/internet_service.rb +58 -0
  87. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +82 -0
  88. data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +39 -0
  89. data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +73 -0
  90. data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +49 -0
  91. data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +47 -0
  92. data/spec/bluebox/models/flavors_spec.rb +14 -0
  93. data/spec/bluebox/models/server_spec.rb +25 -0
  94. data/spec/bluebox/models/servers_spec.rb +27 -0
  95. data/spec/spec_helper.rb +16 -0
  96. data/spec/vcloud/spec_helper.rb +16 -1
  97. data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +58 -0
  98. data/spec/vcloud/terremark/ecloud/models/internet_services_spec.rb +29 -0
  99. data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +43 -0
  100. data/spec/vcloud/terremark/ecloud/models/public_ips_spec.rb +26 -0
  101. data/spec/vcloud/terremark/ecloud/models/vdc_spec.rb +4 -0
  102. data/spec/vcloud/terremark/ecloud/requests/add_internet_service_spec.rb +57 -0
  103. data/spec/vcloud/terremark/ecloud/requests/delete_internet_service_spec.rb +34 -0
  104. data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +57 -0
  105. data/spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb +40 -0
  106. data/spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb +44 -0
  107. data/tests/bluebox/helper.rb +26 -0
  108. data/tests/bluebox/requests/block_tests.rb +68 -0
  109. data/tests/bluebox/requests/product_tests.rb +25 -0
  110. data/tests/bluebox/requests/template_tests.rb +32 -0
  111. data/tests/helper.rb +6 -6
  112. data/tests/helper_tests.rb +4 -0
  113. data/tests/rackspace/helper.rb +0 -32
  114. data/tests/rackspace/requests/servers/address_tests.rb +40 -0
  115. data/tests/rackspace/requests/servers/flavor_tests.rb +34 -0
  116. data/tests/rackspace/requests/servers/image_tests.rb +59 -0
  117. data/tests/rackspace/requests/servers/server_tests.rb +83 -0
  118. data/tests/slicehost/helper.rb +0 -35
  119. data/tests/slicehost/requests/backup_tests.rb +17 -0
  120. data/tests/slicehost/requests/flavor_tests.rb +30 -0
  121. data/tests/slicehost/requests/image_tests.rb +28 -0
  122. data/tests/slicehost/requests/slice_tests.rb +63 -0
  123. metadata +59 -31
  124. data/tests/rackspace/requests/servers/create_image_tests.rb +0 -20
  125. data/tests/rackspace/requests/servers/create_server_tests.rb +0 -18
  126. data/tests/rackspace/requests/servers/delete_image_tests.rb +0 -23
  127. data/tests/rackspace/requests/servers/delete_server_tests.rb +0 -19
  128. data/tests/rackspace/requests/servers/get_flavor_details_tests.rb +0 -16
  129. data/tests/rackspace/requests/servers/get_image_details_tests.rb +0 -16
  130. data/tests/rackspace/requests/servers/get_server_details_tests.rb +0 -21
  131. data/tests/rackspace/requests/servers/list_addresses_tests.rb +0 -22
  132. data/tests/rackspace/requests/servers/list_flavors_detail_tests.rb +0 -9
  133. data/tests/rackspace/requests/servers/list_flavors_tests.rb +0 -9
  134. data/tests/rackspace/requests/servers/list_images_detail_tests.rb +0 -9
  135. data/tests/rackspace/requests/servers/list_images_tests.rb +0 -9
  136. data/tests/rackspace/requests/servers/list_private_addresses_tests.rb +0 -22
  137. data/tests/rackspace/requests/servers/list_public_addresses_tests.rb +0 -22
  138. data/tests/rackspace/requests/servers/list_servers_detail_tests.rb +0 -14
  139. data/tests/rackspace/requests/servers/list_servers_tests.rb +0 -14
  140. data/tests/rackspace/requests/servers/reboot_server_tests.rb +0 -30
  141. data/tests/rackspace/requests/servers/update_server_tests.rb +0 -22
  142. data/tests/slicehost/requests/create_slice_tests.rb +0 -14
  143. data/tests/slicehost/requests/delete_slice_tests.rb +0 -20
  144. data/tests/slicehost/requests/get_backups_tests.rb +0 -9
  145. data/tests/slicehost/requests/get_flavor_tests.rb +0 -17
  146. data/tests/slicehost/requests/get_flavors_tests.rb +0 -9
  147. data/tests/slicehost/requests/get_image_tests.rb +0 -17
  148. data/tests/slicehost/requests/get_images_tests.rb +0 -9
  149. data/tests/slicehost/requests/get_slice_tests.rb +0 -22
  150. data/tests/slicehost/requests/get_slices_tests.rb +0 -9
  151. data/tests/slicehost/requests/reboot_slice_tests.rb +0 -23
@@ -35,7 +35,8 @@ module Fog
35
35
  end
36
36
 
37
37
  def merge_get_raw_result(data)
38
- data.body.each_pair do |key,value|
38
+ #data.body.each_pair do |key,value|
39
+ (data.respond_to?(:body) ? data.body : data).each_pair do |key,value|
39
40
  if aliased_key = self.class.aliases[key]
40
41
  send("#{aliased_key}=", value)
41
42
  else
@@ -1,6 +1,11 @@
1
1
  module Fog
2
2
  module Parsers
3
3
  module Vcloud
4
+
5
+ def self.de_camel(str)
6
+ str.gsub(/(.)([A-Z])/,'\1_\2').downcase
7
+ end
8
+
4
9
  class Base < Fog::Parsers::Base
5
10
 
6
11
  private
@@ -20,12 +20,12 @@ module Fog
20
20
  #vCloud API Guide v0.9 - Page 27
21
21
 
22
22
  def get_vdc(vdc_uri)
23
- if vdc = DATA[:organizations].map { |org| org[:vdcs] }.flatten.detect { |vdc| URI.parse(vdc[:href]) == vdc_uri }
23
+ if vdc = Fog::Vcloud::Mock.data[:organizations].map { |org| org[:vdcs] }.flatten.detect { |vdc| URI.parse(vdc[:href]) == vdc_uri }
24
24
  xml = Builder::XmlMarkup.new
25
25
  mock_it Fog::Parsers::Vcloud::GetVdc.new, 200,
26
26
  xml.Vdc(xmlns.merge(:href => vdc[:href], :name => vdc[:name])) {
27
27
  xml.Link(:rel => "up",
28
- :href => DATA[:organizations].detect { |org| org[:vdcs].detect { |_vdc| vdc[:href] == _vdc[:href] }[:href] == vdc[:href] }[:info][:href],
28
+ :href => Fog::Vcloud::Mock.data[:organizations].detect { |org| org[:vdcs].detect { |_vdc| vdc[:href] == _vdc[:href] }[:href] == vdc[:href] }[:info][:href],
29
29
  :type => "application/vnd.vmware.vcloud.org+xml")
30
30
  xml.Link(:rel => "add",
31
31
  :href => vdc[:href] + "/action/uploadVAppTemplate",
@@ -48,7 +48,7 @@ module Fog
48
48
  xml.AllocationModel("AllocationPool")
49
49
  xml.Description(vdc[:name] + " VDC")
50
50
  xml.ResourceEntities {
51
- DATA[:vdc_resources].each do |resource|
51
+ Fog::Vcloud::Mock.data[:vdc_resources].each do |resource|
52
52
  xml.ResourceEntity(resource)
53
53
  end
54
54
  }
@@ -28,7 +28,7 @@ module Fog
28
28
  mock_it Fog::Parsers::Vcloud::GetVersions.new, 200,
29
29
  xml.SupportedVersions( xmlns.merge("xmlns" => "http://www.vmware.com/vcloud/versions")) {
30
30
 
31
- DATA[:versions].select {|version| version[:supported] }.each do |version|
31
+ Fog::Vcloud::Mock.data[:versions].select {|version| version[:supported] }.each do |version|
32
32
  xml.VersionInfo {
33
33
  xml.Version(version[:version])
34
34
  xml.LoginUrl(version[:login_url])
@@ -31,7 +31,7 @@ module Fog
31
31
 
32
32
  mock_it Fog::Parsers::Vcloud::Login.new, 200,
33
33
  xml.OrgList(xmlns) {
34
- DATA[:organizations].each do |org|
34
+ Fog::Vcloud::Mock.data[:organizations].each do |org|
35
35
  xml.Org( org[:info].merge( "type" => "application/vnd.vmware.vcloud.org+xml" ) ) {}
36
36
  end
37
37
  },
@@ -3,6 +3,24 @@ module Fog
3
3
  module Terremark
4
4
  module Ecloud
5
5
 
6
+ module Mock
7
+ def self.base_url
8
+ "https://fakey.com/api/v0.8a-ext2.0"
9
+ end
10
+
11
+ def self.data
12
+ @mock_data ||= Fog::Vcloud::Mock.data
13
+ end
14
+
15
+ def self.public_ip_href(ip)
16
+ "#{base_url}/extensions/publicIp/#{ip[:id]}"
17
+ end
18
+
19
+ def self.internet_service_href(internet_service)
20
+ "#{base_url}/extensions/internetService/#{internet_service[:id]}"
21
+ end
22
+ end
23
+
6
24
  module Versions
7
25
  SUPPORTED = ["v0.8", "v0.8a-ext2.0"]
8
26
  end
@@ -11,14 +29,30 @@ module Fog
11
29
  #Do anything we need to do here that's specific to ecloud
12
30
  unless @required
13
31
  require 'fog/vcloud/terremark/all'
32
+ require 'fog/vcloud/terremark/ecloud/models/internet_service'
33
+ require 'fog/vcloud/terremark/ecloud/models/internet_services'
34
+ require 'fog/vcloud/terremark/ecloud/models/public_ip'
35
+ require 'fog/vcloud/terremark/ecloud/models/public_ips'
14
36
  require 'fog/vcloud/terremark/ecloud/models/vdc'
15
37
  require 'fog/vcloud/terremark/ecloud/models/vdcs'
38
+ require 'fog/vcloud/terremark/ecloud/parsers/get_internet_services'
39
+ require 'fog/vcloud/terremark/ecloud/parsers/get_public_ip'
40
+ require 'fog/vcloud/terremark/ecloud/parsers/get_public_ips'
16
41
  require 'fog/vcloud/terremark/ecloud/parsers/get_vdc'
42
+ require 'fog/vcloud/terremark/ecloud/parsers/internet_service'
43
+ require 'fog/vcloud/terremark/ecloud/requests/add_internet_service'
44
+ require 'fog/vcloud/terremark/ecloud/requests/delete_internet_service'
45
+ require 'fog/vcloud/terremark/ecloud/requests/get_internet_services'
46
+ require 'fog/vcloud/terremark/ecloud/requests/get_public_ip'
47
+ require 'fog/vcloud/terremark/ecloud/requests/get_public_ips'
17
48
  require 'fog/vcloud/terremark/ecloud/requests/login'
18
49
  require 'fog/vcloud/terremark/ecloud/requests/get_vdc'
19
50
  Struct.new("TmrkEcloudVdc", :links, :resource_entities, :networks,
20
51
  :cpu_capacity, :storage_capacity, :memory_capacity, :deployed_vm_quota, :instantiated_vm_quota,
21
52
  :href, :type, :name, :xmlns, :description)
53
+ Struct.new("TmrkEcloudList", :links)
54
+ Struct.new("TmrkEcloudPublicIp", :type, :href, :name, :id)
55
+ Struct.new("TmrkEcloudInternetService", :type, :href, :id, :name, :public_ip, :port, :protocol, :enabled, :timeout, :description, :url_send_string, :http_header)
22
56
  @required = true
23
57
  end
24
58
  if Fog.mocking?
@@ -0,0 +1,29 @@
1
+ require 'fog/model'
2
+
3
+ module Fog
4
+ module Vcloud
5
+ module Terremark
6
+ module Ecloud
7
+ class InternetService < Fog::Vcloud::Model
8
+
9
+ identity :href
10
+
11
+ attribute :name
12
+ attribute :id
13
+ attribute :type
14
+ attribute :protocol
15
+ attribute :port
16
+ attribute :enabled
17
+ attribute :description
18
+ attribute :public_ip
19
+ attribute :timeout
20
+ attribute :url_send_string
21
+ attribute :http_header
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module Vcloud
3
+ module Terremark
4
+ module Ecloud
5
+
6
+ module Mock
7
+ def internet_services(options = {})
8
+ @internet_services ||= Fog::Vcloud::Terremark::Ecloud::InternetServices.new(options.merge(:connection => self))
9
+ end
10
+ end
11
+
12
+ module Real
13
+ def internet_services(options = {})
14
+ @internet_services ||= Fog::Vcloud::Terremark::Ecloud::InternetServices.new(options.merge(:connection => self))
15
+ end
16
+ end
17
+
18
+ class InternetServices < Fog::Vcloud::Collection
19
+
20
+ attr_accessor :href
21
+
22
+ model Fog::Vcloud::Terremark::Ecloud::InternetService
23
+
24
+ vcloud_type "application/vnd.tmrk.ecloud.internetService+xml"
25
+ all_request lambda { |internet_services| internet_services.raw_results }
26
+
27
+ def get(uri)
28
+ if internet_service = get_raw(uri)
29
+ item = new(:href => internet_service.href)
30
+ item.reload
31
+ end
32
+ end
33
+
34
+ def get_raw(uri)
35
+ raw_results.body.links.detect { |link| link.href == uri }
36
+ end
37
+
38
+ def raw_results
39
+ @raw_results ||= connection.get_internet_services(self.href)
40
+ end
41
+
42
+ #def reload
43
+ # super
44
+ # @raw_results = nil
45
+ #end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,26 @@
1
+ require 'fog/model'
2
+
3
+ module Fog
4
+ module Vcloud
5
+ module Terremark
6
+ module Ecloud
7
+ class PublicIp < Fog::Vcloud::Model
8
+
9
+ identity :href
10
+
11
+ attribute :name
12
+ attribute :type
13
+ attribute :id
14
+
15
+ def internet_services
16
+ @internet_services ||= Fog::Vcloud::Terremark::Ecloud::InternetServices.
17
+ new( :connection => connection,
18
+ :href => href.to_s + "/internetServices" )
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Vcloud
3
+ module Terremark
4
+ module Ecloud
5
+
6
+ module Mock
7
+ def public_ips(options = {})
8
+ @public_ips ||= Fog::Vcloud::Terremark::Ecloud::PublicIps.new(options.merge(:connection => self))
9
+ end
10
+ end
11
+
12
+ module Real
13
+ def public_ips(options = {})
14
+ @public_ips ||= Fog::Vcloud::Terremark::Ecloud::PublicIps.new(options.merge(:connection => self))
15
+ end
16
+ end
17
+
18
+ class PublicIps < Fog::Vcloud::Collection
19
+
20
+ attr_accessor :href
21
+
22
+ model Fog::Vcloud::Terremark::Ecloud::PublicIp
23
+
24
+ get_request :get_public_ip
25
+ vcloud_type "application/vnd.tmrk.ecloud.publicIp+xml"
26
+ all_request lambda { |public_ips| public_ips.connection.get_public_ips(public_ips.href) }
27
+
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -13,6 +13,17 @@ module Fog
13
13
  attribute :deployed_vm_quota
14
14
  attribute :instantiated_vm_quota
15
15
 
16
+ def public_ips
17
+ @public_ips ||= Fog::Vcloud::Terremark::Ecloud::PublicIps.new( :connection => connection,
18
+ :href => other_links.detect { |link| link.type == "application/vnd.tmrk.ecloud.publicIpsList+xml" }.href )
19
+ end
20
+
21
+ def internet_services
22
+ @internet_services ||= Fog::Vcloud::Terremark::Ecloud::InternetServices.
23
+ new( :connection => connection,
24
+ :href => href.to_s.gsub('vdc','extensions/vdc') + "/internetServices" )
25
+ end
26
+
16
27
  end
17
28
  end
18
29
  end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module Parsers
3
+ module Vcloud
4
+ module Terremark
5
+ module Ecloud
6
+
7
+ class GetInternetServices < Fog::Parsers::Vcloud::Base
8
+
9
+ def reset
10
+ @response = Struct::TmrkEcloudList.new([])
11
+ @in = nil
12
+ @public_ip = nil
13
+ end
14
+
15
+ def start_element(name, attributes)
16
+ @value = nil
17
+ case name
18
+ when 'InternetService'
19
+ @in = :service
20
+ @service = Struct::TmrkEcloudInternetService.new("application/vnd.tmrk.ecloud.internetService+xml")
21
+ when 'PublicIpAddress'
22
+ @in = :public_ip
23
+ @public_ip = Struct::TmrkEcloudPublicIp.new("application/vnd.tmrk.ecloud.publicIp+xml")
24
+ end
25
+ end
26
+
27
+ def end_element(name)
28
+ target = case @in
29
+ when :service
30
+ @service
31
+ when :public_ip
32
+ @public_ip
33
+ end
34
+
35
+ case name
36
+ when 'Href'
37
+ target[name.downcase] = URI.parse(@value)
38
+ when 'Name', 'Protocol', 'Description', 'SendString', 'HttpHeader'
39
+ #The gsub takes the CamelCase names and turns them into camel_case
40
+ target[Fog::Parsers::Vcloud.de_camel(name)] = @value
41
+ when 'Id', 'Port', 'Timeout'
42
+ target[name.downcase] = @value.to_i
43
+ when 'Enabled'
44
+ @service[name.downcase] = ( @value == "true" ? true : false )
45
+ when 'InternetService'
46
+ @response.links << @service
47
+ @in = nil
48
+ when 'PublicIpAddress'
49
+ @service.public_ip = @public_ip
50
+ @in = :service
51
+ end
52
+ end
53
+
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module Vcloud
4
+ module Terremark
5
+ module Ecloud
6
+
7
+ class GetPublicIp < Fog::Parsers::Vcloud::Base
8
+
9
+ def reset
10
+ @response = Struct::TmrkEcloudPublicIp.new("application/vnd.tmrk.ecloud.publicIp+xml")
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'Href'
16
+ @response[name.downcase] = URI.parse(@value)
17
+ when 'Name'
18
+ @response[name.downcase] = @value
19
+ when 'Id'
20
+ @response['id'] = @value.to_i
21
+ end
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Parsers
3
+ module Vcloud
4
+ module Terremark
5
+ module Ecloud
6
+
7
+ class GetPublicIps < Fog::Parsers::Vcloud::Base
8
+
9
+ def reset
10
+ @response = Struct::TmrkEcloudList.new([])
11
+ end
12
+
13
+ def start_element(name, attributes)
14
+ @value = nil
15
+ case name
16
+ when 'PublicIPAddress'
17
+ @ip_address = Struct::TmrkEcloudPublicIp.new("application/vnd.tmrk.ecloud.publicIp+xml")
18
+ end
19
+ end
20
+
21
+ def end_element(name)
22
+ case name
23
+ when 'Href'
24
+ @ip_address[name.downcase] = URI.parse(@value)
25
+ when 'Name'
26
+ @ip_address[name.downcase] = @value
27
+ when 'Id'
28
+ @ip_address[name.downcase] = @value.to_i
29
+ when 'PublicIPAddress'
30
+ @response.links << @ip_address
31
+ end
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
@@ -0,0 +1,58 @@
1
+ module Fog
2
+ module Parsers
3
+ module Vcloud
4
+ module Terremark
5
+ module Ecloud
6
+
7
+ class InternetService < Fog::Parsers::Vcloud::Base
8
+
9
+ def reset
10
+ @response = Struct::TmrkEcloudInternetService.new("application/vnd.tmrk.ecloud.internetService+xml")
11
+ @in = nil
12
+ @public_ip = nil
13
+ end
14
+
15
+ def start_element(name, attributes)
16
+ @value = nil
17
+ case name
18
+ when 'InternetService'
19
+ @in = :service
20
+ when 'PublicIpAddress'
21
+ @in = :public_ip
22
+ @public_ip = Struct::TmrkEcloudPublicIp.new("application/vnd.tmrk.ecloud.publicIp+xml")
23
+ end
24
+ end
25
+
26
+ def end_element(name)
27
+ target = case @in
28
+ when :service
29
+ @response
30
+ when :public_ip
31
+ @public_ip
32
+ end
33
+
34
+ case name
35
+ when 'Href'
36
+ target[name.downcase] = URI.parse(@value)
37
+ when 'Name', 'Protocol', 'Description', 'SendString', 'HttpHeader'
38
+ #The gsub takes the CamelCase names and turns them into camel_case
39
+ target[Fog::Parsers::Vcloud.de_camel(name)] = @value
40
+ when 'Id', 'Port', 'Timeout'
41
+ target[name.downcase] = @value.to_i
42
+ when 'Enabled'
43
+ @response[name.downcase] = ( @value == "true" ? true : false )
44
+ when 'InternetService'
45
+ @in = nil
46
+ when 'PublicIpAddress'
47
+ @response.public_ip = @public_ip
48
+ @in = :service
49
+ end
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+