fog 0.3.31 → 0.3.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +3 -0
- data/.gitignore +10 -0
- data/Gemfile.lock +1 -4
- data/README.rdoc +29 -37
- data/Rakefile +5 -25
- data/bin/fog +1 -3
- data/examples/dns_methods.rb +389 -0
- data/examples/storage.rb +103 -0
- data/fog.gemspec +4 -778
- data/lib/fog.rb +5 -66
- data/lib/fog/aws.rb +3 -0
- data/lib/fog/aws/bin.rb +7 -2
- data/lib/fog/aws/cdn.rb +2 -2
- data/lib/fog/aws/compute.rb +2 -2
- data/lib/fog/aws/dns.rb +101 -0
- data/lib/fog/aws/elb.rb +2 -2
- data/lib/fog/aws/iam.rb +2 -2
- data/lib/fog/aws/models/compute/image.rb +1 -0
- data/lib/fog/aws/models/compute/server.rb +1 -1
- data/lib/fog/aws/models/compute/servers.rb +1 -13
- data/lib/fog/aws/parsers/compute/describe_images.rb +36 -34
- data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +26 -0
- data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +55 -0
- data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +25 -0
- data/lib/fog/aws/parsers/dns/get_change.rb +26 -0
- data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +43 -0
- data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +35 -0
- data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +46 -0
- data/lib/fog/aws/requests/compute/describe_images.rb +1 -0
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +90 -0
- data/lib/fog/aws/requests/dns/create_hosted_zone.rb +68 -0
- data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +48 -0
- data/lib/fog/aws/requests/dns/get_change.rb +47 -0
- data/lib/fog/aws/requests/dns/get_hosted_zone.rb +51 -0
- data/lib/fog/aws/requests/dns/list_hosted_zones.rb +63 -0
- data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +68 -0
- data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/sync_clock.rb +28 -0
- data/lib/fog/aws/simpledb.rb +2 -2
- data/lib/fog/aws/storage.rb +5 -3
- data/lib/fog/bluebox.rb +2 -0
- data/lib/fog/bluebox/compute.rb +2 -2
- data/lib/fog/brightbox.rb +2 -0
- data/lib/fog/brightbox/compute.rb +2 -2
- data/lib/fog/core.rb +21 -1
- data/lib/fog/core/bin.rb +3 -1
- data/lib/fog/core/compute.rb +1 -0
- data/lib/fog/core/credentials.rb +72 -50
- data/lib/fog/core/deprecation.rb +11 -5
- data/lib/fog/core/mock.rb +34 -0
- data/lib/fog/core/model.rb +9 -1
- data/lib/fog/core/service.rb +40 -26
- data/lib/fog/core/storage.rb +1 -0
- data/lib/fog/core/time.rb +21 -0
- data/lib/fog/core/wait_for.rb +17 -0
- data/lib/fog/go_grid.rb +2 -0
- data/lib/fog/go_grid/compute.rb +2 -2
- data/lib/fog/google.rb +2 -0
- data/lib/fog/google/requests/storage/get_bucket.rb +6 -5
- data/lib/fog/google/requests/storage/get_object_url.rb +4 -4
- data/lib/fog/google/requests/storage/put_object_url.rb +4 -4
- data/lib/fog/google/storage.rb +4 -3
- data/lib/fog/linode.rb +3 -0
- data/lib/fog/linode/bin.rb +5 -3
- data/lib/fog/linode/compute.rb +6 -2
- data/lib/fog/linode/dns.rb +80 -0
- data/lib/fog/linode/requests/dns/domain_create.rb +52 -0
- data/lib/fog/linode/requests/dns/domain_delete.rb +35 -0
- data/lib/fog/linode/requests/dns/domain_list.rb +50 -0
- data/lib/fog/linode/requests/dns/domain_resource_create.rb +53 -0
- data/lib/fog/linode/requests/dns/domain_resource_delete.rb +36 -0
- data/lib/fog/linode/requests/dns/domain_resource_list.rb +48 -0
- data/lib/fog/linode/requests/dns/domain_resource_update.rb +54 -0
- data/lib/fog/linode/requests/dns/domain_update.rb +48 -0
- data/lib/fog/local.rb +2 -0
- data/lib/fog/local/storage.rb +3 -3
- data/lib/fog/new_servers.rb +2 -0
- data/lib/fog/new_servers/compute.rb +2 -2
- data/lib/fog/rackspace.rb +2 -0
- data/lib/fog/rackspace/cdn.rb +2 -2
- data/lib/fog/rackspace/compute.rb +2 -2
- data/lib/fog/rackspace/storage.rb +2 -2
- data/lib/fog/slicehost.rb +3 -0
- data/lib/fog/slicehost/bin.rb +2 -0
- data/lib/fog/slicehost/compute.rb +2 -2
- data/lib/fog/slicehost/dns.rb +84 -0
- data/lib/fog/slicehost/parsers/dns/create_record.rb +26 -0
- data/lib/fog/slicehost/parsers/dns/create_zone.rb +26 -0
- data/lib/fog/slicehost/parsers/dns/get_record.rb +26 -0
- data/lib/fog/slicehost/parsers/dns/get_records.rb +30 -0
- data/lib/fog/slicehost/parsers/dns/get_zone.rb +26 -0
- data/lib/fog/slicehost/parsers/dns/get_zones.rb +30 -0
- data/lib/fog/slicehost/requests/compute/create_slice.rb +2 -2
- data/lib/fog/slicehost/requests/compute/delete_slice.rb +3 -17
- data/lib/fog/slicehost/requests/dns/create_record.rb +61 -0
- data/lib/fog/slicehost/requests/dns/create_zone.rb +54 -0
- data/lib/fog/slicehost/requests/dns/delete_record.rb +31 -0
- data/lib/fog/slicehost/requests/dns/delete_zone.rb +31 -0
- data/lib/fog/slicehost/requests/dns/get_record.rb +40 -0
- data/lib/fog/slicehost/requests/dns/get_records.rb +41 -0
- data/lib/fog/slicehost/requests/dns/get_zone.rb +40 -0
- data/lib/fog/slicehost/requests/dns/get_zones.rb +38 -0
- data/lib/fog/terremark.rb +2 -0
- data/lib/fog/terremark/ecloud.rb +2 -4
- data/lib/fog/vcloud.rb +4 -2
- data/lib/fog/vcloud/bin.rb +3 -1
- data/lib/fog/vcloud/mock_data_classes.rb +77 -11
- data/lib/fog/vcloud/terremark/ecloud.rb +22 -7
- data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_service.rb +60 -0
- data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_services.rb +36 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +28 -13
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +2 -2
- data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud/models/network.rb +4 -1
- data/lib/fog/vcloud/terremark/ecloud/models/server.rb +5 -5
- data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +6 -2
- data/lib/fog/vcloud/terremark/ecloud/requests/add_backup_internet_service.rb +111 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +2 -4
- data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +1 -3
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +39 -27
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb +1 -2
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb +21 -6
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +2 -1
- data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +34 -17
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +12 -10
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +15 -10
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +1 -12
- data/lib/fog/zerigo.rb +15 -0
- data/lib/fog/zerigo/bin.rb +25 -0
- data/lib/fog/zerigo/dns.rb +96 -0
- data/lib/fog/zerigo/parsers/dns/count_hosts.rb +24 -0
- data/lib/fog/zerigo/parsers/dns/count_zones.rb +24 -0
- data/lib/fog/zerigo/parsers/dns/create_host.rb +26 -0
- data/lib/fog/zerigo/parsers/dns/create_zone.rb +26 -0
- data/lib/fog/zerigo/parsers/dns/find_hosts.rb +30 -0
- data/lib/fog/zerigo/parsers/dns/get_host.rb +26 -0
- data/lib/fog/zerigo/parsers/dns/get_zone.rb +56 -0
- data/lib/fog/zerigo/parsers/dns/get_zone_stats.rb +26 -0
- data/lib/fog/zerigo/parsers/dns/list_hosts.rb +30 -0
- data/lib/fog/zerigo/parsers/dns/list_zones.rb +30 -0
- data/lib/fog/zerigo/requests/dns/count_hosts.rb +36 -0
- data/lib/fog/zerigo/requests/dns/count_zones.rb +36 -0
- data/lib/fog/zerigo/requests/dns/create_host.rb +70 -0
- data/lib/fog/zerigo/requests/dns/create_zone.rb +97 -0
- data/lib/fog/zerigo/requests/dns/delete_host.rb +32 -0
- data/lib/fog/zerigo/requests/dns/delete_zone.rb +33 -0
- data/lib/fog/zerigo/requests/dns/find_hosts.rb +63 -0
- data/lib/fog/zerigo/requests/dns/get_host.rb +47 -0
- data/lib/fog/zerigo/requests/dns/get_zone.rb +57 -0
- data/lib/fog/zerigo/requests/dns/get_zone_stats.rb +44 -0
- data/lib/fog/zerigo/requests/dns/list_hosts.rb +48 -0
- data/lib/fog/zerigo/requests/dns/list_zones.rb +53 -0
- data/lib/fog/zerigo/requests/dns/update_host.rb +60 -0
- data/lib/fog/zerigo/requests/dns/update_zone.rb +78 -0
- data/spec/spec_helper.rb +0 -5
- data/spec/vcloud/spec_helper.rb +3 -2
- data/spec/vcloud/terremark/ecloud/models/backup_internet_service_spec.rb +49 -0
- data/spec/vcloud/terremark/ecloud/models/backup_internet_services_spec.rb +29 -0
- data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +32 -13
- data/spec/vcloud/terremark/ecloud/models/network_spec.rb +7 -4
- data/spec/vcloud/terremark/ecloud/models/server_spec.rb +20 -0
- data/spec/vcloud/terremark/ecloud/requests/add_backup_internet_service_spec.rb +60 -0
- data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +3 -0
- data/spec/vcloud/terremark/ecloud/requests/configure_network_ip_spec.rb +55 -0
- data/spec/vcloud/terremark/ecloud/requests/delete_vapp_spec.rb +9 -0
- data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +60 -14
- data/spec/vcloud/terremark/ecloud/requests/get_network_ip_spec.rb +2 -0
- data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +3 -3
- data/tests/aws/requests/compute/image_tests.rb +15 -14
- data/tests/aws/requests/dns/dns_tests.rb +276 -0
- data/tests/brightbox/requests/compute/account_tests.rb +20 -9
- data/tests/brightbox/requests/compute/api_client_tests.rb +12 -4
- data/tests/brightbox/requests/compute/cloud_ip_tests.rb +20 -6
- data/tests/brightbox/requests/compute/image_tests.rb +9 -4
- data/tests/brightbox/requests/compute/interface_tests.rb +8 -2
- data/tests/brightbox/requests/compute/server_tests.rb +17 -5
- data/tests/brightbox/requests/compute/server_type_tests.rb +8 -4
- data/tests/brightbox/requests/compute/user_tests.rb +13 -5
- data/tests/brightbox/requests/compute/zone_tests.rb +8 -4
- data/tests/core/attribute_tests.rb +45 -0
- data/tests/helper.rb +0 -2
- data/tests/linode/requests/dns/dns_tests.rb +262 -0
- data/tests/rackspace/requests/compute/address_tests.rb +1 -1
- data/tests/rackspace/requests/compute/image_tests.rb +1 -1
- data/tests/slicehost/requests/dns_tests/dns_tests.rb +279 -0
- data/tests/zerigo/helper.rb +0 -0
- data/tests/zerigo/requests/dns/dns_tests.rb +374 -0
- metadata +280 -36
- data/spec/compact_progress_bar_formatter.rb +0 -195
- data/spec/core/attributes_spec.rb +0 -52
- data/spec/lorem.txt +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Slicehost
|
|
3
|
+
class DNS
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
# Delete a record from the specified DNS zone
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * record_id<~Integer> - Id of DNS record to delete
|
|
9
|
+
#
|
|
10
|
+
# ==== Returns
|
|
11
|
+
# * response<~Excon::Response>: - HTTP status code will be result
|
|
12
|
+
def delete_record(record_id)
|
|
13
|
+
request(
|
|
14
|
+
:expects => 200,
|
|
15
|
+
:method => 'DELETE',
|
|
16
|
+
:path => "records/#{record_id}.xml"
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Mock
|
|
23
|
+
|
|
24
|
+
def delete_record(record_id)
|
|
25
|
+
Fog::Mock.not_implemented
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Slicehost
|
|
3
|
+
class DNS
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
# Delete a zone from Slicehost's DNS
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * zone_id<~Integer> - Id of zone to delete
|
|
9
|
+
#
|
|
10
|
+
# ==== Returns
|
|
11
|
+
# * response<~Excon::Response>: - HTTP status code will be result
|
|
12
|
+
def delete_zone(zone_id)
|
|
13
|
+
request(
|
|
14
|
+
:expects => 200,
|
|
15
|
+
:method => 'DELETE',
|
|
16
|
+
:path => "zones/#{zone_id}.xml"
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Mock
|
|
23
|
+
|
|
24
|
+
def delete_zone(zone_id)
|
|
25
|
+
Fog::Mock.not_implemented
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Slicehost
|
|
3
|
+
class DNS
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/slicehost/parsers/dns/get_record'
|
|
7
|
+
|
|
8
|
+
# Get an individual DNS record from the specified zone
|
|
9
|
+
#
|
|
10
|
+
# ==== Returns
|
|
11
|
+
# * response<~Excon::Response>:
|
|
12
|
+
# * body<~Hash>:
|
|
13
|
+
# * 'record_type'<~String> - type of DNS record to create (A, CNAME, etc)
|
|
14
|
+
# * 'zone_id'<~Integer> - ID of the zone to update
|
|
15
|
+
# * 'name'<~String> - host name this DNS record is for
|
|
16
|
+
# * 'data'<~String> - data for the DNS record (ie for an A record, the IP address)
|
|
17
|
+
# * 'ttl'<~Integer> - time to live in seconds
|
|
18
|
+
# * 'active'<~String> - whether this record is active or not ('Y' or 'N')
|
|
19
|
+
# * 'aux'<~String> - extra data required by the record
|
|
20
|
+
def get_record( record_id)
|
|
21
|
+
request(
|
|
22
|
+
:expects => 200,
|
|
23
|
+
:method => 'GET',
|
|
24
|
+
:parser => Fog::Parsers::Slicehost::DNS::GetRecords.new,
|
|
25
|
+
:path => "records/#{record_id}.xml"
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class Mock
|
|
32
|
+
|
|
33
|
+
def get_record(record_id)
|
|
34
|
+
Fog::Mock.not_implemented
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Slicehost
|
|
3
|
+
class DNS
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/slicehost/parsers/dns/get_records'
|
|
7
|
+
|
|
8
|
+
# Get all the DNS records across all the DNS zones for this account
|
|
9
|
+
#
|
|
10
|
+
# ==== Returns
|
|
11
|
+
# * response<~Excon::Response>:
|
|
12
|
+
# * body<~Array>:
|
|
13
|
+
# * 'addresses'<~Array> - Ip addresses for the slice
|
|
14
|
+
# * 'backup-id'<~Integer> - Id of backup slice was booted from
|
|
15
|
+
# * 'flavor_id'<~Integer> - Id of flavor slice was booted from
|
|
16
|
+
# * 'id'<~Integer> - Id of the slice
|
|
17
|
+
# * 'image-id'<~Integer> - Id of image slice was booted from
|
|
18
|
+
# * 'name'<~String> - Name of the slice
|
|
19
|
+
# * 'progress'<~Integer> - Progress of current action, in percentage
|
|
20
|
+
# * 'status'<~String> - Current status of the slice
|
|
21
|
+
def get_records
|
|
22
|
+
request(
|
|
23
|
+
:expects => 200,
|
|
24
|
+
:method => 'GET',
|
|
25
|
+
:parser => Fog::Parsers::Slicehost::DNS::GetRecords.new,
|
|
26
|
+
:path => "records.xml"
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class Mock
|
|
33
|
+
|
|
34
|
+
def get_records
|
|
35
|
+
Fog::Mock.not_implemented
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Slicehost
|
|
3
|
+
class DNS
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/slicehost/parsers/dns/get_zone'
|
|
7
|
+
|
|
8
|
+
# Get details of a DNS zone
|
|
9
|
+
#
|
|
10
|
+
# ==== Parameters
|
|
11
|
+
# * zone_id<~Integer> - Id of zone to lookup
|
|
12
|
+
#
|
|
13
|
+
# ==== Returns
|
|
14
|
+
# * response<~Excon::Response>:
|
|
15
|
+
# * body<~Hash>:
|
|
16
|
+
# * 'origin'<~String> - domain name to host (ie example.com)
|
|
17
|
+
# * 'id'<~Integer> - Id of the zone
|
|
18
|
+
# * 'ttl'<~Integer> - TimeToLive (ttl) for the domain, in seconds (> 60)
|
|
19
|
+
# * 'active'<~String> - whether zone is active in Slicehost DNS server - 'Y' or 'N'
|
|
20
|
+
def get_zone(zone_id)
|
|
21
|
+
request(
|
|
22
|
+
:expects => 200,
|
|
23
|
+
:method => 'GET',
|
|
24
|
+
:parser => Fog::Parsers::Slicehost::DNS::GetZone.new,
|
|
25
|
+
:path => "/zones/#{zone_id}.xml"
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class Mock
|
|
32
|
+
|
|
33
|
+
def get_zone(zone_id)
|
|
34
|
+
Fog::Mock.not_implemented
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Slicehost
|
|
3
|
+
class DNS
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/slicehost/parsers/dns/get_zones'
|
|
7
|
+
|
|
8
|
+
# Get list of all DNS zones hosted on Slicehost (for this account)
|
|
9
|
+
#
|
|
10
|
+
# ==== Returns
|
|
11
|
+
# * response<~Excon::Response>:
|
|
12
|
+
# * body<~Hash>:
|
|
13
|
+
# * 'zones'<~Array>
|
|
14
|
+
# * 'origin'<~String> - domain name to host (ie example.com)
|
|
15
|
+
# * 'id'<~Integer> - Id of the zone
|
|
16
|
+
# * 'ttl'<~Integer> - TimeToLive (ttl) for the domain, in seconds (> 60)
|
|
17
|
+
# * 'active'<~String> - whether zone is active in Slicehost DNS server - 'Y' or 'N'
|
|
18
|
+
def get_zones
|
|
19
|
+
request(
|
|
20
|
+
:expects => 200,
|
|
21
|
+
:method => 'GET',
|
|
22
|
+
:parser => Fog::Parsers::Slicehost::DNS::GetZones.new,
|
|
23
|
+
:path => 'zones.xml'
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class Mock
|
|
30
|
+
|
|
31
|
+
def get_zones
|
|
32
|
+
Fog::Mock.not_implemented
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
data/lib/fog/terremark.rb
CHANGED
data/lib/fog/terremark/ecloud.rb
CHANGED
|
@@ -32,10 +32,8 @@ module Fog
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
class Real
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
requires :terremark_ecloud_password, :terremark_ecloud_username
|
|
38
|
-
recognizes :host, :path, :port, :scheme, :persistent
|
|
35
|
+
# requires :terremark_ecloud_password, :terremark_ecloud_username
|
|
36
|
+
# recognizes :host, :path, :port, :scheme, :persistent
|
|
39
37
|
|
|
40
38
|
include Fog::Terremark::Shared::Real
|
|
41
39
|
include Fog::Terremark::Shared::Parser
|
data/lib/fog/vcloud.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
require 'nokogiri'
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'core')
|
|
2
4
|
require 'fog/core/parser'
|
|
3
5
|
|
|
4
6
|
require 'builder'
|
|
@@ -19,8 +21,8 @@ end
|
|
|
19
21
|
module Fog
|
|
20
22
|
class Vcloud < Fog::Service
|
|
21
23
|
|
|
22
|
-
requires :username, :password, :
|
|
23
|
-
recognizes :version, :persistent
|
|
24
|
+
requires :username, :password, :versions_uri
|
|
25
|
+
recognizes :version, :persistent
|
|
24
26
|
|
|
25
27
|
model_path 'fog/vcloud/models'
|
|
26
28
|
model :vdc
|
data/lib/fog/vcloud/bin.rb
CHANGED
|
@@ -38,7 +38,9 @@ module Vcloud
|
|
|
38
38
|
def [](service)
|
|
39
39
|
@@connections ||= Hash.new do |hash, key|
|
|
40
40
|
if credentials = Fog.credentials[:vcloud][key]
|
|
41
|
-
|
|
41
|
+
credentials = credentials.dup
|
|
42
|
+
_module_ = eval(credentials.delete(:module))
|
|
43
|
+
hash[key] = _module_.new(credentials)
|
|
42
44
|
else
|
|
43
45
|
raise ArgumentError.new("Unregistered service: :#{key}. Registered services are: #{Vcloud.registered_services}")
|
|
44
46
|
end
|
|
@@ -47,17 +47,7 @@ module Fog
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def inspect
|
|
50
|
-
"<#{self.class.name} #{object_id} data=#{super}
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def unique_methods
|
|
56
|
-
(public_methods - self.class.superclass.public_instance_methods).reject {|m| m.to_s =~ /!$/ }
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def method_data
|
|
60
|
-
(unique_methods + [:href]).sort_by(&:to_s).find_all {|m| method(m).arity == 0 }.inject({}) {|md, m| md.update(m => send(m)) }
|
|
50
|
+
"<#{self.class.name} #{object_id} data=#{super}>"
|
|
61
51
|
end
|
|
62
52
|
end
|
|
63
53
|
|
|
@@ -131,6 +121,14 @@ module Fog
|
|
|
131
121
|
find_href_in(href, all_vdc_internet_service_collections)
|
|
132
122
|
end
|
|
133
123
|
|
|
124
|
+
def all_backup_internet_services
|
|
125
|
+
all_vdc_internet_service_collections.map(&:backup_internet_services).flatten
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def backup_internet_service_from_href(href)
|
|
129
|
+
find_href_in(href, all_backup_internet_services)
|
|
130
|
+
end
|
|
131
|
+
|
|
134
132
|
def all_public_ip_collections
|
|
135
133
|
all_vdcs.map {|v| v.public_ip_collection }.flatten
|
|
136
134
|
end
|
|
@@ -434,6 +432,10 @@ module Fog
|
|
|
434
432
|
def rnat
|
|
435
433
|
self[:rnat] || _parent._parent.rnat
|
|
436
434
|
end
|
|
435
|
+
|
|
436
|
+
def rnat_set?
|
|
437
|
+
!!self[:rnat]
|
|
438
|
+
end
|
|
437
439
|
end
|
|
438
440
|
|
|
439
441
|
class MockNetworkExtensions < Base
|
|
@@ -456,6 +458,18 @@ module Fog
|
|
|
456
458
|
def rnat
|
|
457
459
|
_parent.rnat
|
|
458
460
|
end
|
|
461
|
+
|
|
462
|
+
def type
|
|
463
|
+
self[:type] || "DMZ"
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
def vlan
|
|
467
|
+
object_id.to_s
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
def friendly_name
|
|
471
|
+
"#{name} (#{type}_#{object_id})"
|
|
472
|
+
end
|
|
459
473
|
end
|
|
460
474
|
|
|
461
475
|
class MockVirtualMachine < Base
|
|
@@ -495,6 +509,12 @@ module Fog
|
|
|
495
509
|
disks.inject(0) {|s, d| s + d.vcloud_size }
|
|
496
510
|
end
|
|
497
511
|
|
|
512
|
+
def network_ip
|
|
513
|
+
if network = _parent.networks.detect {|n| n.ip_collection.items[ip] }
|
|
514
|
+
network.ip_collection.items[ip]
|
|
515
|
+
end
|
|
516
|
+
end
|
|
517
|
+
|
|
498
518
|
# from fog ecloud server's _compose_vapp_data
|
|
499
519
|
def to_configure_vapp_hash
|
|
500
520
|
{
|
|
@@ -574,10 +594,52 @@ module Fog
|
|
|
574
594
|
end
|
|
575
595
|
|
|
576
596
|
def items
|
|
597
|
+
public_ip_internet_services + backup_internet_services
|
|
598
|
+
end
|
|
599
|
+
|
|
600
|
+
def public_ip_internet_services
|
|
577
601
|
_parent.public_ip_collection.items.inject([]) do |services, public_ip|
|
|
578
602
|
services + public_ip.internet_service_collection.items
|
|
579
603
|
end
|
|
580
604
|
end
|
|
605
|
+
|
|
606
|
+
def backup_internet_services
|
|
607
|
+
@backup_internet_services ||= []
|
|
608
|
+
end
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
class MockBackupInternetService < Base
|
|
612
|
+
def name
|
|
613
|
+
self[:name] || "Backup Internet Service #{object_id}"
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
def protocol
|
|
617
|
+
self[:protocol]
|
|
618
|
+
end
|
|
619
|
+
|
|
620
|
+
def port
|
|
621
|
+
0
|
|
622
|
+
end
|
|
623
|
+
|
|
624
|
+
def enabled
|
|
625
|
+
self[:enabled].to_s.downcase != "false"
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
def timeout
|
|
629
|
+
self[:timeout] || 2
|
|
630
|
+
end
|
|
631
|
+
|
|
632
|
+
def description
|
|
633
|
+
self[:description] || "Description for Backup Service #{name}"
|
|
634
|
+
end
|
|
635
|
+
|
|
636
|
+
def redirect_url
|
|
637
|
+
nil
|
|
638
|
+
end
|
|
639
|
+
|
|
640
|
+
def node_collection
|
|
641
|
+
@node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
|
|
642
|
+
end
|
|
581
643
|
end
|
|
582
644
|
|
|
583
645
|
class MockFirewallAcls < Base
|
|
@@ -652,6 +714,10 @@ module Fog
|
|
|
652
714
|
def monitor
|
|
653
715
|
nil
|
|
654
716
|
end
|
|
717
|
+
|
|
718
|
+
def backup_service
|
|
719
|
+
self[:backup_service]
|
|
720
|
+
end
|
|
655
721
|
end
|
|
656
722
|
|
|
657
723
|
class MockPublicIpInternetServiceNodes < Base
|
|
@@ -3,6 +3,9 @@ module Fog
|
|
|
3
3
|
module Terremark
|
|
4
4
|
class Ecloud < Fog::Vcloud
|
|
5
5
|
|
|
6
|
+
requires :username, :password, :versions_uri
|
|
7
|
+
recognizes :version
|
|
8
|
+
|
|
6
9
|
model_path 'fog/vcloud/terremark/ecloud/models'
|
|
7
10
|
model :catalog_item
|
|
8
11
|
model :catalog
|
|
@@ -10,6 +13,8 @@ module Fog
|
|
|
10
13
|
collection :firewall_acls
|
|
11
14
|
model :internet_service
|
|
12
15
|
collection :internet_services
|
|
16
|
+
model :backup_internet_service
|
|
17
|
+
collection :backup_internet_services
|
|
13
18
|
model :ip
|
|
14
19
|
collection :ips
|
|
15
20
|
model :network
|
|
@@ -27,6 +32,7 @@ module Fog
|
|
|
27
32
|
|
|
28
33
|
request_path 'fog/vcloud/terremark/ecloud/requests'
|
|
29
34
|
request :add_internet_service
|
|
35
|
+
request :add_backup_internet_service
|
|
30
36
|
request :add_node
|
|
31
37
|
request :clone_vapp
|
|
32
38
|
request :configure_internet_service
|
|
@@ -62,13 +68,23 @@ module Fog
|
|
|
62
68
|
request :power_reset
|
|
63
69
|
request :power_shutdown
|
|
64
70
|
|
|
71
|
+
module Shared
|
|
72
|
+
def ecloud_xmlns
|
|
73
|
+
{
|
|
74
|
+
"xmlns" => "urn:tmrk:eCloudExtensions-2.5",
|
|
75
|
+
"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance"
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
65
80
|
class Mock < Fog::Vcloud::Mock
|
|
81
|
+
include Shared
|
|
66
82
|
|
|
67
83
|
def initialize(options={})
|
|
68
84
|
end
|
|
69
85
|
|
|
70
86
|
def self.base_url
|
|
71
|
-
"https://fakey.com/api/v0.8b-ext2.
|
|
87
|
+
"https://fakey.com/api/v0.8b-ext2.5"
|
|
72
88
|
end
|
|
73
89
|
|
|
74
90
|
def self.data_reset
|
|
@@ -79,7 +95,7 @@ module Fog
|
|
|
79
95
|
def self.data( base_url = self.base_url )
|
|
80
96
|
@mock_data ||= Fog::Vcloud::Mock.data(base_url).tap do |vcloud_mock_data|
|
|
81
97
|
vcloud_mock_data.versions.clear
|
|
82
|
-
vcloud_mock_data.versions << MockVersion.new(:version => "v0.8b-ext2.
|
|
98
|
+
vcloud_mock_data.versions << MockVersion.new(:version => "v0.8b-ext2.5")
|
|
83
99
|
|
|
84
100
|
vcloud_mock_data.organizations.detect {|o| o.name == "Boom Inc." }.tap do |mock_organization|
|
|
85
101
|
mock_organization.vdcs.detect {|v| v.name == "Boomstick" }.tap do |mock_vdc|
|
|
@@ -128,6 +144,8 @@ module Fog
|
|
|
128
144
|
end
|
|
129
145
|
|
|
130
146
|
mock_vdc.public_ip_collection.items << MockPublicIp.new(:name => "99.1.9.7")
|
|
147
|
+
|
|
148
|
+
mock_vdc.internet_service_collection.backup_internet_services << MockBackupInternetService.new({ :port => 10000, :protocol => "TCP"}, self)
|
|
131
149
|
end
|
|
132
150
|
|
|
133
151
|
mock_organization.vdcs.detect {|v| v.name == "Rock-n-Roll" }.tap do |mock_vdc|
|
|
@@ -149,19 +167,16 @@ module Fog
|
|
|
149
167
|
end
|
|
150
168
|
end
|
|
151
169
|
|
|
152
|
-
def ecloud_xmlns
|
|
153
|
-
{ :xmlns => "urn:tmrk:eCloudExtensions-2.3", :"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance" }
|
|
154
|
-
end
|
|
155
|
-
|
|
156
170
|
def mock_data
|
|
157
171
|
Fog::Vcloud::Terremark::Ecloud::Mock.data
|
|
158
172
|
end
|
|
159
173
|
end
|
|
160
174
|
|
|
161
175
|
class Real < Fog::Vcloud::Real
|
|
176
|
+
include Shared
|
|
162
177
|
|
|
163
178
|
def supporting_versions
|
|
164
|
-
["v0.8b-ext2.
|
|
179
|
+
["v0.8b-ext2.5", "0.8b-ext2.5"]
|
|
165
180
|
end
|
|
166
181
|
|
|
167
182
|
end
|