fog 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -2
- data/Gemfile.lock +6 -6
- data/README.rdoc +4 -1
- data/bin/fog +2 -1
- data/examples/bluebox_create.rb +33 -0
- data/fog.gemspec +58 -30
- data/lib/fog.rb +2 -1
- data/lib/fog/aws/elb.rb +0 -9
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +3 -3
- data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elb/describe_instance_health.rb +1 -1
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +1 -1
- data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/s3/get_bucket.rb +1 -6
- data/lib/fog/aws/requests/s3/get_bucket_acl.rb +1 -1
- data/lib/fog/aws/requests/s3/get_bucket_location.rb +1 -1
- data/lib/fog/aws/requests/s3/get_bucket_logging.rb +1 -1
- data/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +1 -6
- data/lib/fog/aws/requests/s3/get_bucket_versioning.rb +1 -1
- data/lib/fog/aws/requests/s3/get_object.rb +1 -1
- data/lib/fog/aws/requests/s3/get_object_acl.rb +2 -2
- data/lib/fog/aws/requests/s3/get_object_torrent.rb +1 -1
- data/lib/fog/aws/requests/s3/get_request_payment.rb +1 -1
- data/lib/fog/aws/requests/s3/head_object.rb +1 -1
- data/lib/fog/aws/requests/s3/put_bucket_acl.rb +1 -1
- data/lib/fog/aws/requests/s3/put_bucket_logging.rb +1 -1
- data/lib/fog/aws/requests/s3/put_bucket_versioning.rb +1 -1
- data/lib/fog/aws/requests/s3/put_object_url.rb +54 -0
- data/lib/fog/aws/requests/s3/put_request_payment.rb +1 -1
- data/lib/fog/aws/s3.rb +7 -2
- data/lib/fog/bin.rb +1 -1
- data/lib/fog/bluebox.rb +100 -0
- data/lib/fog/bluebox/bin.rb +43 -0
- data/lib/fog/bluebox/models/flavor.rb +43 -0
- data/lib/fog/bluebox/models/flavors.rb +38 -0
- data/lib/fog/bluebox/models/image.rb +17 -0
- data/lib/fog/bluebox/models/images.rb +42 -0
- data/lib/fog/bluebox/models/server.rb +79 -0
- data/lib/fog/bluebox/models/servers.rb +39 -0
- data/lib/fog/bluebox/requests/create_block.rb +39 -0
- data/lib/fog/bluebox/requests/destroy_block.rb +32 -0
- data/lib/fog/bluebox/requests/get_block.rb +32 -0
- data/lib/fog/bluebox/requests/get_blocks.rb +34 -0
- data/lib/fog/bluebox/requests/get_product.rb +32 -0
- data/lib/fog/bluebox/requests/get_products.rb +31 -0
- data/lib/fog/bluebox/requests/get_template.rb +32 -0
- data/lib/fog/bluebox/requests/get_templates.rb +32 -0
- data/lib/fog/bluebox/requests/reboot_block.rb +33 -0
- data/lib/fog/credentials.rb +2 -1
- data/lib/fog/rackspace/files.rb +4 -12
- data/lib/fog/rackspace/models/servers/flavors.rb +1 -1
- data/lib/fog/rackspace/models/servers/images.rb +1 -1
- data/lib/fog/rackspace/models/servers/servers.rb +1 -1
- data/lib/fog/rackspace/requests/files/get_container.rb +1 -6
- data/lib/fog/rackspace/requests/files/get_containers.rb +1 -7
- data/lib/fog/rackspace/requests/files/head_container.rb +1 -1
- data/lib/fog/rackspace/requests/files/head_containers.rb +1 -1
- data/lib/fog/rackspace/requests/servers/create_server.rb +4 -5
- data/lib/fog/rackspace/requests/servers/delete_image.rb +2 -1
- data/lib/fog/rackspace/requests/servers/delete_server.rb +2 -3
- data/lib/fog/rackspace/requests/servers/get_server_details.rb +2 -3
- data/lib/fog/rackspace/requests/servers/list_addresses.rb +2 -3
- data/lib/fog/rackspace/requests/servers/list_private_addresses.rb +2 -3
- data/lib/fog/rackspace/requests/servers/list_public_addresses.rb +2 -3
- data/lib/fog/rackspace/requests/servers/reboot_server.rb +1 -1
- data/lib/fog/rackspace/requests/servers/update_server.rb +2 -3
- data/lib/fog/rackspace/servers.rb +21 -11
- data/lib/fog/slicehost.rb +18 -13
- data/lib/fog/vcloud.rb +148 -107
- data/lib/fog/vcloud/model.rb +2 -1
- data/lib/fog/vcloud/parser.rb +5 -0
- data/lib/fog/vcloud/requests/get_vdc.rb +3 -3
- data/lib/fog/vcloud/requests/get_versions.rb +1 -1
- data/lib/fog/vcloud/requests/login.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud.rb +34 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +29 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +51 -0
- data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +26 -0
- data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +32 -0
- data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +11 -0
- data/lib/fog/vcloud/terremark/ecloud/parsers/get_internet_services.rb +59 -0
- data/lib/fog/vcloud/terremark/ecloud/parsers/get_public_ip.rb +30 -0
- data/lib/fog/vcloud/terremark/ecloud/parsers/get_public_ips.rb +40 -0
- data/lib/fog/vcloud/terremark/ecloud/parsers/internet_service.rb +58 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +82 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +39 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +73 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +49 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +47 -0
- data/spec/bluebox/models/flavors_spec.rb +14 -0
- data/spec/bluebox/models/server_spec.rb +25 -0
- data/spec/bluebox/models/servers_spec.rb +27 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/vcloud/spec_helper.rb +16 -1
- data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +58 -0
- data/spec/vcloud/terremark/ecloud/models/internet_services_spec.rb +29 -0
- data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +43 -0
- data/spec/vcloud/terremark/ecloud/models/public_ips_spec.rb +26 -0
- data/spec/vcloud/terremark/ecloud/models/vdc_spec.rb +4 -0
- data/spec/vcloud/terremark/ecloud/requests/add_internet_service_spec.rb +57 -0
- data/spec/vcloud/terremark/ecloud/requests/delete_internet_service_spec.rb +34 -0
- data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +57 -0
- data/spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb +40 -0
- data/spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb +44 -0
- data/tests/bluebox/helper.rb +26 -0
- data/tests/bluebox/requests/block_tests.rb +68 -0
- data/tests/bluebox/requests/product_tests.rb +25 -0
- data/tests/bluebox/requests/template_tests.rb +32 -0
- data/tests/helper.rb +6 -6
- data/tests/helper_tests.rb +4 -0
- data/tests/rackspace/helper.rb +0 -32
- data/tests/rackspace/requests/servers/address_tests.rb +40 -0
- data/tests/rackspace/requests/servers/flavor_tests.rb +34 -0
- data/tests/rackspace/requests/servers/image_tests.rb +59 -0
- data/tests/rackspace/requests/servers/server_tests.rb +83 -0
- data/tests/slicehost/helper.rb +0 -35
- data/tests/slicehost/requests/backup_tests.rb +17 -0
- data/tests/slicehost/requests/flavor_tests.rb +30 -0
- data/tests/slicehost/requests/image_tests.rb +28 -0
- data/tests/slicehost/requests/slice_tests.rb +63 -0
- metadata +59 -31
- data/tests/rackspace/requests/servers/create_image_tests.rb +0 -20
- data/tests/rackspace/requests/servers/create_server_tests.rb +0 -18
- data/tests/rackspace/requests/servers/delete_image_tests.rb +0 -23
- data/tests/rackspace/requests/servers/delete_server_tests.rb +0 -19
- data/tests/rackspace/requests/servers/get_flavor_details_tests.rb +0 -16
- data/tests/rackspace/requests/servers/get_image_details_tests.rb +0 -16
- data/tests/rackspace/requests/servers/get_server_details_tests.rb +0 -21
- data/tests/rackspace/requests/servers/list_addresses_tests.rb +0 -22
- data/tests/rackspace/requests/servers/list_flavors_detail_tests.rb +0 -9
- data/tests/rackspace/requests/servers/list_flavors_tests.rb +0 -9
- data/tests/rackspace/requests/servers/list_images_detail_tests.rb +0 -9
- data/tests/rackspace/requests/servers/list_images_tests.rb +0 -9
- data/tests/rackspace/requests/servers/list_private_addresses_tests.rb +0 -22
- data/tests/rackspace/requests/servers/list_public_addresses_tests.rb +0 -22
- data/tests/rackspace/requests/servers/list_servers_detail_tests.rb +0 -14
- data/tests/rackspace/requests/servers/list_servers_tests.rb +0 -14
- data/tests/rackspace/requests/servers/reboot_server_tests.rb +0 -30
- data/tests/rackspace/requests/servers/update_server_tests.rb +0 -22
- data/tests/slicehost/requests/create_slice_tests.rb +0 -14
- data/tests/slicehost/requests/delete_slice_tests.rb +0 -20
- data/tests/slicehost/requests/get_backups_tests.rb +0 -9
- data/tests/slicehost/requests/get_flavor_tests.rb +0 -17
- data/tests/slicehost/requests/get_flavors_tests.rb +0 -9
- data/tests/slicehost/requests/get_image_tests.rb +0 -17
- data/tests/slicehost/requests/get_images_tests.rb +0 -9
- data/tests/slicehost/requests/get_slice_tests.rb +0 -22
- data/tests/slicehost/requests/get_slices_tests.rb +0 -9
- data/tests/slicehost/requests/reboot_slice_tests.rb +0 -23
data/lib/fog/vcloud/model.rb
CHANGED
@@ -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
|
data/lib/fog/vcloud/parser.rb
CHANGED
@@ -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 =
|
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 =>
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
+
|