fog 0.0.67 → 0.0.68
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/README.rdoc +1 -1
- data/VERSION.yml +1 -1
- data/fog.gemspec +24 -6
- data/lib/fog/aws/ec2.rb +48 -47
- data/lib/fog/aws/requests/ec2/describe_instances.rb +1 -1
- data/lib/fog/aws/requests/ec2/describe_snapshots.rb +3 -3
- data/lib/fog/aws/requests/ec2/run_instances.rb +2 -3
- data/lib/fog/aws/s3.rb +18 -17
- data/lib/fog/aws/simpledb.rb +11 -10
- data/lib/fog/bin.rb +12 -4
- data/lib/fog/rackspace/files.rb +16 -15
- data/lib/fog/rackspace/requests/servers/get_image_details.rb +35 -0
- data/lib/fog/rackspace/servers.rb +26 -24
- data/lib/fog/slicehost.rb +18 -17
- data/lib/fog/slicehost/models/flavors.rb +11 -3
- data/lib/fog/slicehost/models/images.rb +14 -4
- data/lib/fog/slicehost/models/servers.rb +10 -2
- data/lib/fog/terremark.rb +83 -17
- data/lib/fog/terremark/parsers/get_public_Ips.rb +28 -0
- data/lib/fog/terremark/parsers/internet_service.rb +63 -0
- data/lib/fog/terremark/parsers/node_service.rb +30 -0
- data/lib/fog/terremark/requests/add_internet_service.rb +63 -0
- data/lib/fog/terremark/requests/add_node_service.rb +63 -0
- data/lib/fog/terremark/requests/create_internet_service.rb +63 -0
- data/lib/fog/terremark/requests/delete_internet_service.rb +40 -0
- data/lib/fog/terremark/requests/delete_node_service.rb +40 -0
- data/lib/fog/terremark/requests/deploy_vapp.rb +2 -2
- data/lib/fog/terremark/requests/get_public_ips.rb +37 -0
- data/lib/fog/terremark/requests/get_task.rb +1 -1
- data/lib/fog/terremark/requests/get_tasks_list.rb +1 -1
- data/lib/fog/terremark/requests/get_vapp.rb +1 -1
- data/lib/fog/terremark/requests/instantiate_vapp_template.rb +4 -8
- data/lib/fog/terremark/requests/power_off.rb +1 -1
- data/lib/fog/terremark/requests/power_on.rb +1 -1
- data/lib/fog/terremark/requests/reset.rb +1 -1
- data/lib/fog/terremark/requests/shutdown.rb +1 -1
- data/tests/{test_helper.rb → helper.rb} +8 -7
- data/tests/{test_helper_tests.rb → helper_tests.rb} +7 -9
- data/tests/rackspace/helper.rb +64 -0
- data/tests/rackspace/requests/servers/create_image_tests.rb +22 -0
- data/tests/rackspace/requests/servers/create_server_tests.rb +19 -0
- data/tests/rackspace/requests/servers/delete_image_tests.rb +32 -0
- data/tests/rackspace/requests/servers/delete_server_tests.rb +26 -0
- data/tests/rackspace/requests/servers/get_flavor_details_tests.rb +25 -0
- data/tests/rackspace/requests/servers/get_image_details_tests.rb +25 -0
- data/tests/rackspace/requests/servers/get_server_details_tests.rb +31 -0
- data/tests/slicehost/{slicehost_helper.rb → helper.rb} +0 -0
- data/tests/slicehost/requests/create_slice_tests.rb +1 -1
- data/tests/slicehost/requests/get_backups_tests.rb +1 -1
- data/tests/slicehost/requests/get_flavor_tests.rb +5 -2
- data/tests/slicehost/requests/get_flavors_tests.rb +5 -2
- data/tests/slicehost/requests/get_image_tests.rb +5 -2
- data/tests/slicehost/requests/get_images_tests.rb +5 -2
- data/tests/slicehost/requests/get_slice_tests.rb +2 -2
- data/tests/slicehost/requests/get_slices_tests.rb +5 -2
- data/tests/slicehost/requests/reboot_slice_tests.rb +1 -1
- metadata +24 -6
data/lib/fog/slicehost.rb
CHANGED
@@ -1,24 +1,25 @@
|
|
1
|
-
require 'fog/slicehost/models/flavor'
|
2
|
-
require 'fog/slicehost/models/flavors'
|
3
|
-
require 'fog/slicehost/models/image'
|
4
|
-
require 'fog/slicehost/models/images'
|
5
|
-
require 'fog/slicehost/models/server'
|
6
|
-
require 'fog/slicehost/models/servers'
|
7
|
-
require 'fog/slicehost/requests/create_slice'
|
8
|
-
require 'fog/slicehost/requests/delete_slice'
|
9
|
-
require 'fog/slicehost/requests/get_backups'
|
10
|
-
require 'fog/slicehost/requests/get_flavor'
|
11
|
-
require 'fog/slicehost/requests/get_flavors'
|
12
|
-
require 'fog/slicehost/requests/get_image'
|
13
|
-
require 'fog/slicehost/requests/get_images'
|
14
|
-
require 'fog/slicehost/requests/get_slice'
|
15
|
-
require 'fog/slicehost/requests/get_slices'
|
16
|
-
require 'fog/slicehost/requests/reboot_slice'
|
17
|
-
|
18
1
|
module Fog
|
19
2
|
module Slicehost
|
20
3
|
|
21
4
|
def self.new(options={})
|
5
|
+
|
6
|
+
require 'fog/slicehost/models/flavor'
|
7
|
+
require 'fog/slicehost/models/flavors'
|
8
|
+
require 'fog/slicehost/models/image'
|
9
|
+
require 'fog/slicehost/models/images'
|
10
|
+
require 'fog/slicehost/models/server'
|
11
|
+
require 'fog/slicehost/models/servers'
|
12
|
+
require 'fog/slicehost/requests/create_slice'
|
13
|
+
require 'fog/slicehost/requests/delete_slice'
|
14
|
+
require 'fog/slicehost/requests/get_backups'
|
15
|
+
require 'fog/slicehost/requests/get_flavor'
|
16
|
+
require 'fog/slicehost/requests/get_flavors'
|
17
|
+
require 'fog/slicehost/requests/get_image'
|
18
|
+
require 'fog/slicehost/requests/get_images'
|
19
|
+
require 'fog/slicehost/requests/get_slice'
|
20
|
+
require 'fog/slicehost/requests/get_slices'
|
21
|
+
require 'fog/slicehost/requests/reboot_slice'
|
22
|
+
|
22
23
|
unless options[:slicehost_password]
|
23
24
|
raise ArgumentError.new('slicehost_password is required to access slicehost')
|
24
25
|
end
|
@@ -4,8 +4,16 @@ require 'fog/slicehost/models/flavor'
|
|
4
4
|
module Fog
|
5
5
|
module Slicehost
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
class Mock
|
8
|
+
def flavors
|
9
|
+
Fog::Slicehost::Flavors.new(:connection => self)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Real
|
14
|
+
def flavors
|
15
|
+
Fog::Slicehost::Flavors.new(:connection => self)
|
16
|
+
end
|
9
17
|
end
|
10
18
|
|
11
19
|
class Flavors < Fog::Collection
|
@@ -14,7 +22,7 @@ module Fog
|
|
14
22
|
|
15
23
|
def all
|
16
24
|
data = connection.get_flavors.body['flavors']
|
17
|
-
load(
|
25
|
+
load(data)
|
18
26
|
end
|
19
27
|
|
20
28
|
def get(flavor_id)
|
@@ -4,10 +4,20 @@ require 'fog/slicehost/models/image'
|
|
4
4
|
module Fog
|
5
5
|
module Slicehost
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
class Mock
|
8
|
+
def images(attributes = {})
|
9
|
+
Fog::Slicehost::Images.new({
|
10
|
+
:connection => self
|
11
|
+
}.merge!(attributes))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Real
|
16
|
+
def images(attributes = {})
|
17
|
+
Fog::Slicehost::Images.new({
|
18
|
+
:connection => self
|
19
|
+
}.merge!(attributes))
|
20
|
+
end
|
11
21
|
end
|
12
22
|
|
13
23
|
class Images < Fog::Collection
|
@@ -4,8 +4,16 @@ require 'fog/slicehost/models/server'
|
|
4
4
|
module Fog
|
5
5
|
module Slicehost
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
class Mock
|
8
|
+
def servers
|
9
|
+
Fog::Slicehost::Servers.new(:connection => self)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Real
|
14
|
+
def servers
|
15
|
+
Fog::Slicehost::Servers.new(:connection => self)
|
16
|
+
end
|
9
17
|
end
|
10
18
|
|
11
19
|
class Servers < Fog::Collection
|
data/lib/fog/terremark.rb
CHANGED
@@ -1,24 +1,31 @@
|
|
1
|
-
require 'fog/terremark/requests/delete_vapp'
|
2
|
-
require 'fog/terremark/requests/deploy_vapp'
|
3
|
-
require 'fog/terremark/requests/get_catalog'
|
4
|
-
require 'fog/terremark/requests/get_catalog_item'
|
5
|
-
require 'fog/terremark/requests/get_organization'
|
6
|
-
require 'fog/terremark/requests/get_organizations'
|
7
|
-
require 'fog/terremark/requests/get_task'
|
8
|
-
require 'fog/terremark/requests/get_tasks_list'
|
9
|
-
require 'fog/terremark/requests/get_vapp'
|
10
|
-
require 'fog/terremark/requests/get_vapp_template'
|
11
|
-
require 'fog/terremark/requests/get_vdc'
|
12
|
-
require 'fog/terremark/requests/instantiate_vapp_template'
|
13
|
-
require 'fog/terremark/requests/reset'
|
14
|
-
require 'fog/terremark/requests/power_off'
|
15
|
-
require 'fog/terremark/requests/power_on'
|
16
|
-
require 'fog/terremark/requests/shutdown'
|
17
|
-
|
18
1
|
module Fog
|
19
2
|
module Terremark
|
20
3
|
|
21
4
|
def self.new(options={})
|
5
|
+
|
6
|
+
require 'fog/terremark/requests/add_internet_service'
|
7
|
+
require 'fog/terremark/requests/add_node_service'
|
8
|
+
require 'fog/terremark/requests/create_internet_service'
|
9
|
+
require 'fog/terremark/requests/delete_internet_service'
|
10
|
+
require 'fog/terremark/requests/delete_node_service'
|
11
|
+
require 'fog/terremark/requests/delete_vapp'
|
12
|
+
require 'fog/terremark/requests/deploy_vapp'
|
13
|
+
require 'fog/terremark/requests/get_catalog'
|
14
|
+
require 'fog/terremark/requests/get_catalog_item'
|
15
|
+
require 'fog/terremark/requests/get_organization'
|
16
|
+
require 'fog/terremark/requests/get_organizations'
|
17
|
+
require 'fog/terremark/requests/get_public_ips'
|
18
|
+
require 'fog/terremark/requests/get_task'
|
19
|
+
require 'fog/terremark/requests/get_tasks_list'
|
20
|
+
require 'fog/terremark/requests/get_vapp'
|
21
|
+
require 'fog/terremark/requests/get_vapp_template'
|
22
|
+
require 'fog/terremark/requests/get_vdc'
|
23
|
+
require 'fog/terremark/requests/instantiate_vapp_template'
|
24
|
+
require 'fog/terremark/requests/reset'
|
25
|
+
require 'fog/terremark/requests/power_off'
|
26
|
+
require 'fog/terremark/requests/power_on'
|
27
|
+
require 'fog/terremark/requests/shutdown'
|
28
|
+
|
22
29
|
unless options[:terremark_password]
|
23
30
|
raise ArgumentError.new('terremark_password is required to access terremark')
|
24
31
|
end
|
@@ -65,6 +72,65 @@ module Fog
|
|
65
72
|
@cookie = get_organizations.headers['Set-Cookie']
|
66
73
|
end
|
67
74
|
|
75
|
+
# TODO: bust cache on organization creation?
|
76
|
+
def default_organization_id
|
77
|
+
@default_organization_id ||= begin
|
78
|
+
org_list = get_organizations.body['OrgList']
|
79
|
+
if org_list.length == 1
|
80
|
+
org_list.first['href'].split('/').last.to_i
|
81
|
+
else
|
82
|
+
nil
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def default_vdc_id
|
88
|
+
if default_organization_id
|
89
|
+
@default_vdc_id ||= begin
|
90
|
+
vdcs = get_organization(default_organization_id).body['Links'].select {|link|
|
91
|
+
link['type'] == 'application/vnd.vmware.vcloud.vdc+xml'
|
92
|
+
}
|
93
|
+
if vdcs.length == 1
|
94
|
+
vdcs.first['href'].split('/').last.to_i
|
95
|
+
else
|
96
|
+
nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
else
|
100
|
+
nil
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def default_network_id
|
105
|
+
if default_vdc_id
|
106
|
+
@default_network_id ||= begin
|
107
|
+
networks = get_vdc(default_vdc_id).body['AvailableNetworks']
|
108
|
+
if networks.length == 1
|
109
|
+
networks.first['href'].split('/').last.to_i
|
110
|
+
else
|
111
|
+
nil
|
112
|
+
end
|
113
|
+
end
|
114
|
+
else
|
115
|
+
nil
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def default_public_ip_id
|
120
|
+
if default_vdc_id
|
121
|
+
@default_public_ip_id ||= begin
|
122
|
+
ips = get_public_ips(default_vdc_id).body['PublicIpAddresses']
|
123
|
+
if ips.length == 1
|
124
|
+
ips.first['Href'].split('/').last.to_i
|
125
|
+
else
|
126
|
+
nil
|
127
|
+
end
|
128
|
+
end
|
129
|
+
else
|
130
|
+
nil
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
68
134
|
private
|
69
135
|
|
70
136
|
def request(params)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Terremark
|
4
|
+
|
5
|
+
class GetPublicIps< Fog::Parsers::Base
|
6
|
+
|
7
|
+
def reset
|
8
|
+
@ip_address = {}
|
9
|
+
@response = { 'PublicIpAddresses' => [] }
|
10
|
+
end
|
11
|
+
|
12
|
+
def end_element(name)
|
13
|
+
case name
|
14
|
+
when 'Href', 'Name'
|
15
|
+
@ip_address[name] = @value
|
16
|
+
when 'Id'
|
17
|
+
@ip_address[name] = @value.to_i
|
18
|
+
when 'PublicIPAddress'
|
19
|
+
@response['PublicIpAddresses'] << @ip_address
|
20
|
+
@ip_address = {}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Terremark
|
4
|
+
|
5
|
+
class InternetService < Fog::Parsers::Base
|
6
|
+
|
7
|
+
def reset
|
8
|
+
@in_public_ip_address = false
|
9
|
+
@response = { 'PublicIpAddress' => {} }
|
10
|
+
end
|
11
|
+
|
12
|
+
def start_element(name, attributes)
|
13
|
+
@value = ''
|
14
|
+
case name
|
15
|
+
when 'Href'
|
16
|
+
data = {}
|
17
|
+
until attributes.empty?
|
18
|
+
data[attributes.shift] = attributes.shift
|
19
|
+
end
|
20
|
+
if @in_public_ip_address
|
21
|
+
@response['PublicIpAddress'][name] = data
|
22
|
+
else
|
23
|
+
@response[name] = data
|
24
|
+
end
|
25
|
+
when 'PublicIpAddress'
|
26
|
+
@in_public_ip_address = true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def end_element(name)
|
31
|
+
case name
|
32
|
+
when 'Description', 'Protocol'
|
33
|
+
@response[name] = @value
|
34
|
+
when 'Enabled'
|
35
|
+
if @value == 'false'
|
36
|
+
@response[name] = false
|
37
|
+
else
|
38
|
+
@response[name] = true
|
39
|
+
end
|
40
|
+
when 'Id'
|
41
|
+
if @in_public_ip_address
|
42
|
+
@response['PublicIpAddress'][name] = @value.to_i
|
43
|
+
else
|
44
|
+
@response[name] = @value.to_i
|
45
|
+
end
|
46
|
+
when 'Name'
|
47
|
+
if @in_public_ip_address
|
48
|
+
@response['PublicIpAddress'][name] = @value
|
49
|
+
else
|
50
|
+
@response[name] = @value
|
51
|
+
end
|
52
|
+
when 'Port', 'Timeout'
|
53
|
+
@response[name] = @value.to_i
|
54
|
+
when 'PublicIpAddress'
|
55
|
+
@in_public_ip_address = false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Terremark
|
4
|
+
|
5
|
+
class NodeService < Fog::Parsers::Base
|
6
|
+
|
7
|
+
def reset
|
8
|
+
@response = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'Description', 'Href', 'IpAddress', 'Name', 'Protocol'
|
14
|
+
@response[name] = @value
|
15
|
+
when 'Enabled'
|
16
|
+
if @value == 'false'
|
17
|
+
@response[name] = false
|
18
|
+
else
|
19
|
+
@response[name] = true
|
20
|
+
end
|
21
|
+
when 'Id', 'Port'
|
22
|
+
@response[name] = @value.to_i
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Fog
|
2
|
+
module Terremark
|
3
|
+
class Real
|
4
|
+
|
5
|
+
require 'fog/terremark/parsers/internet_service'
|
6
|
+
|
7
|
+
# Reserve requested resources and deploy vApp
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * ip_id<~Integer> - Id of ip to add service to
|
11
|
+
# * name<~String> - Name of service
|
12
|
+
# * protocol<~String> - Protocol of service
|
13
|
+
# * port<~Integer> - Port of service
|
14
|
+
# * options<~Hash>:
|
15
|
+
# * Enabled<~Boolean>: defaults to true
|
16
|
+
# * Description<~String>: optional description
|
17
|
+
#
|
18
|
+
# ==== Returns
|
19
|
+
# * response<~Excon::Response>:
|
20
|
+
# * body<~Hash>:
|
21
|
+
# * 'endTime'<~String> - endTime of task
|
22
|
+
# * 'href'<~String> - link to task
|
23
|
+
# * 'startTime'<~String> - startTime of task
|
24
|
+
# * 'status'<~String> - status of task
|
25
|
+
# * 'type'<~String> - type of task
|
26
|
+
# * 'Owner'<~String> -
|
27
|
+
# * 'href'<~String> - href of owner
|
28
|
+
# * 'name'<~String> - name of owner
|
29
|
+
# * 'type'<~String> - type of owner
|
30
|
+
def add_internet_service(ip_id, name, protocol, port, options = {})
|
31
|
+
unless options.has_key?('Enabled')
|
32
|
+
options['Enabled'] = true
|
33
|
+
end
|
34
|
+
data = <<-DATA
|
35
|
+
<InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
|
36
|
+
<Name>#{name}</Name>
|
37
|
+
<Protocol>#{protocol.upcase}</Protocol>
|
38
|
+
<Port>#{port}</Port>
|
39
|
+
<Enabled>#{options['Enabled']}</Enabled>
|
40
|
+
<Description>#{options['Description']}</Description>
|
41
|
+
</InternetService>
|
42
|
+
DATA
|
43
|
+
request(
|
44
|
+
:body => data,
|
45
|
+
:expects => 200,
|
46
|
+
:headers => {'Content-Type' => 'application/xml'},
|
47
|
+
:method => 'POST',
|
48
|
+
:parser => Fog::Parsers::Terremark::InternetService.new,
|
49
|
+
:path => "publicIps/#{ip_id}/internetServices"
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
class Mock
|
56
|
+
|
57
|
+
def add_internet_service(ip_id)
|
58
|
+
raise MockNotImplemented.new("Contributions welcome!")
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Fog
|
2
|
+
module Terremark
|
3
|
+
class Real
|
4
|
+
|
5
|
+
require 'fog/terremark/parsers/node_service'
|
6
|
+
|
7
|
+
# Reserve requested resources and deploy vApp
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * service_id<~String> - Id of service to add node to
|
11
|
+
# * ip<~String> - Private ip of server to add to node
|
12
|
+
# * name<~String> - Name of service
|
13
|
+
# * port<~Integer> - Port of service
|
14
|
+
# * options<~Hash>:
|
15
|
+
# * Enabled<~Boolean>: defaults to true
|
16
|
+
# * Description<~String>: optional description
|
17
|
+
#
|
18
|
+
# ==== Returns
|
19
|
+
# * response<~Excon::Response>:
|
20
|
+
# * body<~Hash>:
|
21
|
+
# * 'endTime'<~String> - endTime of task
|
22
|
+
# * 'href'<~String> - link to task
|
23
|
+
# * 'startTime'<~String> - startTime of task
|
24
|
+
# * 'status'<~String> - status of task
|
25
|
+
# * 'type'<~String> - type of task
|
26
|
+
# * 'Owner'<~String> -
|
27
|
+
# * 'href'<~String> - href of owner
|
28
|
+
# * 'name'<~String> - name of owner
|
29
|
+
# * 'type'<~String> - type of owner
|
30
|
+
def add_node_service(service_id, ip, name, port, options = {})
|
31
|
+
unless options.has_key?('Enabled')
|
32
|
+
options['Enabled'] = true
|
33
|
+
end
|
34
|
+
data = <<-DATA
|
35
|
+
<NodeService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createNodeService">
|
36
|
+
<IpAddress>#{ip}</IpAddress>
|
37
|
+
<Name>#{name}</Name>
|
38
|
+
<Port>#{port}</Port>
|
39
|
+
<Enabled>#{options['Enabled']}</Enabled>
|
40
|
+
<Description>#{options['Description']}</Description>
|
41
|
+
</NodeService>
|
42
|
+
DATA
|
43
|
+
request(
|
44
|
+
:body => data,
|
45
|
+
:expects => 200,
|
46
|
+
:headers => {'Content-Type' => 'application/xml'},
|
47
|
+
:method => 'POST',
|
48
|
+
:parser => Fog::Parsers::Terremark::InternetService.new,
|
49
|
+
:path => "internetServices/#{service_id}/nodes"
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
class Mock
|
56
|
+
|
57
|
+
def add_node_service(ip)
|
58
|
+
raise MockNotImplemented.new("Contributions welcome!")
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|