fog 0.3.16 → 0.3.17
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.rdoc +17 -12
- data/fog.gemspec +10 -5
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/models/storage/directory.rb +22 -0
- data/lib/fog/aws/models/storage/file.rb +15 -0
- data/lib/fog/aws/storage.rb +8 -0
- data/lib/fog/core/collection.rb +9 -8
- data/lib/fog/core/compute.rb +1 -1
- data/lib/fog/google/models/storage/directory.rb +23 -1
- data/lib/fog/google/models/storage/file.rb +16 -1
- data/lib/fog/google/parsers/storage/access_control_list.rb +16 -14
- data/lib/fog/local/models/storage/directory.rb +8 -0
- data/lib/fog/local/models/storage/file.rb +4 -0
- data/lib/fog/rackspace/cdn.rb +3 -3
- data/lib/fog/rackspace/models/storage/directory.rb +18 -0
- data/lib/fog/rackspace/models/storage/file.rb +7 -0
- data/lib/fog/rackspace/requests/cdn/{get_cdn_containers.rb → get_containers.rb} +3 -3
- data/lib/fog/rackspace/requests/cdn/{head_cdn_container.rb → head_container.rb} +3 -3
- data/lib/fog/rackspace/requests/cdn/{put_cdn_container.rb → put_container.rb} +3 -3
- data/lib/fog/rackspace/storage.rb +10 -0
- data/lib/fog/vcloud.rb +32 -153
- data/lib/fog/vcloud/collection.rb +18 -0
- data/lib/fog/vcloud/mock_data_classes.rb +701 -0
- data/lib/fog/vcloud/requests/get_network.rb +8 -8
- data/lib/fog/vcloud/requests/get_organization.rb +10 -10
- data/lib/fog/vcloud/requests/get_vdc.rb +18 -18
- data/lib/fog/vcloud/requests/get_versions.rb +3 -3
- data/lib/fog/vcloud/requests/login.rb +2 -2
- data/lib/fog/vcloud/terremark/ecloud.rb +65 -109
- data/lib/fog/vcloud/terremark/ecloud/models/catalog.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/network.rb +3 -2
- data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/nodes.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/server.rb +20 -8
- data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/tasks.rb +1 -0
- data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +2 -0
- data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +4 -8
- data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +4 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +18 -20
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb +6 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb +40 -9
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +2 -10
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_node.rb +2 -6
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +13 -1
- data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb +6 -6
- data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb +6 -7
- data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +34 -33
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +23 -24
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +10 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +15 -19
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +20 -22
- data/lib/fog/vcloud/terremark/ecloud/requests/get_node.rb +12 -15
- data/lib/fog/vcloud/terremark/ecloud/requests/get_nodes.rb +11 -12
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +5 -4
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +9 -8
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb +33 -17
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb +54 -53
- data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +13 -19
- data/lib/fog/vcloud/terremark/ecloud/requests/power_off.rb +9 -2
- data/lib/fog/vcloud/terremark/ecloud/requests/power_on.rb +2 -4
- data/spec/vcloud/bin_spec.rb +3 -6
- data/spec/vcloud/models/vdc_spec.rb +8 -8
- data/spec/vcloud/requests/get_network_spec.rb +8 -8
- data/spec/vcloud/requests/get_organization_spec.rb +9 -9
- data/spec/vcloud/requests/get_vdc_spec.rb +7 -7
- data/spec/vcloud/requests/get_versions_spec.rb +1 -1
- data/spec/vcloud/requests/login_spec.rb +2 -2
- data/spec/vcloud/spec_helper.rb +45 -30
- data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +10 -14
- data/spec/vcloud/terremark/ecloud/models/ip_spec.rb +5 -8
- data/spec/vcloud/terremark/ecloud/models/ips_spec.rb +2 -2
- data/spec/vcloud/terremark/ecloud/models/network_spec.rb +15 -16
- data/spec/vcloud/terremark/ecloud/models/node_spec.rb +7 -7
- data/spec/vcloud/terremark/ecloud/models/nodes_spec.rb +1 -1
- data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +4 -8
- data/spec/vcloud/terremark/ecloud/models/server_spec.rb +42 -0
- data/spec/vcloud/terremark/ecloud/models/vdc_spec.rb +7 -7
- data/spec/vcloud/terremark/ecloud/models/vdcs_spec.rb +1 -1
- data/spec/vcloud/terremark/ecloud/requests/add_internet_service_spec.rb +13 -18
- data/spec/vcloud/terremark/ecloud/requests/add_node_spec.rb +9 -5
- data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +5 -7
- data/spec/vcloud/terremark/ecloud/requests/configure_node_spec.rb +22 -28
- data/spec/vcloud/terremark/ecloud/requests/configure_vapp_spec.rb +71 -0
- data/spec/vcloud/terremark/ecloud/requests/delete_internet_service_spec.rb +7 -9
- data/spec/vcloud/terremark/ecloud/requests/delete_node_spec.rb +3 -7
- data/spec/vcloud/terremark/ecloud/requests/delete_vapp_spec.rb +83 -0
- data/spec/vcloud/terremark/ecloud/requests/get_catalog_item_spec.rb +6 -5
- data/spec/vcloud/terremark/ecloud/requests/get_catalog_spec.rb +2 -2
- data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +31 -42
- data/spec/vcloud/terremark/ecloud/requests/get_network_ip_spec.rb +4 -7
- data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +1 -1
- data/spec/vcloud/terremark/ecloud/requests/get_network_spec.rb +19 -11
- data/spec/vcloud/terremark/ecloud/requests/get_node_spec.rb +8 -8
- data/spec/vcloud/terremark/ecloud/requests/get_nodes_spec.rb +11 -11
- data/spec/vcloud/terremark/ecloud/requests/get_public_ip_spec.rb +4 -5
- data/spec/vcloud/terremark/ecloud/requests/get_public_ips_spec.rb +6 -6
- data/spec/vcloud/terremark/ecloud/requests/get_vapp_spec.rb +36 -19
- data/spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb +21 -18
- data/spec/vcloud/terremark/ecloud/requests/instantiate_vapp_template_spec.rb +27 -17
- data/spec/vcloud/terremark/ecloud/requests/power_off_spec.rb +34 -0
- data/spec/vcloud/terremark/ecloud/requests/power_on_spec.rb +3 -4
- data/spec/vcloud/vcloud_spec.rb +2 -2
- data/tests/helpers/storage/directory_tests.rb +8 -0
- data/tests/helpers/storage/file_tests.rb +4 -0
- metadata +11 -6
@@ -18,6 +18,7 @@ module Fog
|
|
18
18
|
#all_request lambda { |public_ips| public_ips.connection.get_public_ips(public_ips.href) }
|
19
19
|
|
20
20
|
def all
|
21
|
+
check_href!(:message => "the Public Ips href of the Vdc you want to enumerate")
|
21
22
|
if data = connection.get_public_ips(href).body[:PublicIPAddress]
|
22
23
|
load(data)
|
23
24
|
end
|
@@ -80,8 +80,10 @@ module Fog
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def cpus
|
83
|
-
|
84
|
-
:
|
83
|
+
if cpu_mess
|
84
|
+
{ :count => cpu_mess[:VirtualQuantity].to_i,
|
85
|
+
:units => cpu_mess[:AllocationUnits] }
|
86
|
+
end
|
85
87
|
end
|
86
88
|
|
87
89
|
def cpus=(qty)
|
@@ -90,8 +92,10 @@ module Fog
|
|
90
92
|
end
|
91
93
|
|
92
94
|
def memory
|
93
|
-
|
94
|
-
:
|
95
|
+
if memory_mess
|
96
|
+
{ :amount => memory_mess[:VirtualQuantity].to_i,
|
97
|
+
:units => memory_mess[:AllocationUnits] }
|
98
|
+
end
|
95
99
|
end
|
96
100
|
|
97
101
|
def memory=(amount)
|
@@ -112,7 +116,7 @@ module Fog
|
|
112
116
|
@disk_change = :added
|
113
117
|
load_unless_loaded!
|
114
118
|
virtual_hardware[:Item] << { :ResourceType => '17',
|
115
|
-
:AddressOnParent => (disk_mess.map { |dm| dm[:AddressOnParent] }.sort.last.to_i + 1).to_s,
|
119
|
+
:AddressOnParent => (disk_mess.map { |dm| dm[:AddressOnParent] }.sort.last.to_i + 1).to_s,
|
116
120
|
:VirtualQuantity => size.to_s }
|
117
121
|
end
|
118
122
|
true
|
@@ -168,17 +172,25 @@ module Fog
|
|
168
172
|
|
169
173
|
def memory_mess
|
170
174
|
load_unless_loaded!
|
171
|
-
virtual_hardware
|
175
|
+
if virtual_hardware && virtual_hardware[:Item]
|
176
|
+
virtual_hardware[:Item].detect { |item| item[:ResourceType] == "4" }
|
177
|
+
end
|
172
178
|
end
|
173
179
|
|
174
180
|
def cpu_mess
|
175
181
|
load_unless_loaded!
|
176
|
-
virtual_hardware
|
182
|
+
if virtual_hardware && virtual_hardware[:Item]
|
183
|
+
virtual_hardware[:Item].detect { |item| item[:ResourceType] == "3" }
|
184
|
+
end
|
177
185
|
end
|
178
186
|
|
179
187
|
def disk_mess
|
180
188
|
load_unless_loaded!
|
181
|
-
virtual_hardware
|
189
|
+
if virtual_hardware && virtual_hardware[:Item]
|
190
|
+
virtual_hardware[:Item].select { |item| item[:ResourceType] == "17" }
|
191
|
+
else
|
192
|
+
[]
|
193
|
+
end
|
182
194
|
end
|
183
195
|
|
184
196
|
def power_operation(op)
|
@@ -9,6 +9,8 @@ module Fog
|
|
9
9
|
|
10
10
|
model Fog::Vcloud::Terremark::Ecloud::Vdc
|
11
11
|
|
12
|
+
undef_method :create
|
13
|
+
|
12
14
|
def all
|
13
15
|
data = connection.get_organization(organization_uri).body[:Link].select { |link| link[:type] == "application/vnd.vmware.vcloud.vdc+xml" }
|
14
16
|
data.each { |link| link.delete_if { |key, value| [:rel].include?(key) } }
|
@@ -124,14 +124,10 @@ module Fog
|
|
124
124
|
|
125
125
|
internet_services_uri = ensure_unparsed(internet_services_uri)
|
126
126
|
|
127
|
-
if
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
:timeout => 2,
|
132
|
-
:nodes => [] } )
|
133
|
-
ip[:services] << new_service
|
134
|
-
xml = generate_internet_service_response( service_data, ip )
|
127
|
+
if public_ip_internet_service_collection = mock_data.public_ip_internet_service_collection_from_href(internet_services_uri)
|
128
|
+
new_public_ip_internet_service = MockPublicIpInternetService.new(service_data, public_ip_internet_service_collection)
|
129
|
+
public_ip_internet_service_collection.items << new_public_ip_internet_service
|
130
|
+
xml = generate_internet_service_response(new_public_ip_internet_service)
|
135
131
|
|
136
132
|
mock_it 200, xml, {'Content-Type' => 'application/vnd.tmrk.ecloud.internetService+xml'}
|
137
133
|
else
|
@@ -51,13 +51,10 @@ module Fog
|
|
51
51
|
|
52
52
|
def add_node(nodes_uri, node_data)
|
53
53
|
validate_node_data(node_data)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
id = rand(1000)
|
59
|
-
service[:nodes] << node_data.merge!( :id => id.to_s, :href => Fog::Vcloud::Terremark::Ecloud::Mock.extension_url + "/nodeService/#{id}" )
|
60
|
-
mock_it 200, mock_node_service_response(node_data, ecloud_xmlns), { 'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml' }
|
54
|
+
if node_collection = mock_data.public_ip_internet_service_node_collection_from_href(ensure_unparsed(nodes_uri))
|
55
|
+
new_node = MockPublicIpInternetServiceNode.new(node_data, node_collection)
|
56
|
+
node_collection.items << new_node
|
57
|
+
mock_it 200, mock_node_service_response(new_node), { 'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml' }
|
61
58
|
else
|
62
59
|
mock_error 200, "401 Unauthorized"
|
63
60
|
end
|
@@ -5,26 +5,26 @@ module Fog
|
|
5
5
|
module Shared
|
6
6
|
private
|
7
7
|
|
8
|
-
def generate_internet_service_response(
|
8
|
+
def generate_internet_service_response(public_ip_internet_service)
|
9
9
|
builder = Builder::XmlMarkup.new
|
10
10
|
builder.InternetService(:"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance",
|
11
11
|
:xmlns => "urn:tmrk:eCloudExtensions-2.3") {
|
12
|
-
builder.Id(
|
13
|
-
builder.Href(
|
14
|
-
builder.Name(
|
15
|
-
builder.Protocol(
|
16
|
-
builder.Port(
|
17
|
-
builder.Enabled(
|
18
|
-
builder.Description(
|
19
|
-
builder.Timeout(
|
20
|
-
builder.RedirectURL(
|
12
|
+
builder.Id(public_ip_internet_service.object_id)
|
13
|
+
builder.Href(public_ip_internet_service.href)
|
14
|
+
builder.Name(public_ip_internet_service.name)
|
15
|
+
builder.Protocol(public_ip_internet_service.protocol)
|
16
|
+
builder.Port(public_ip_internet_service.port)
|
17
|
+
builder.Enabled(public_ip_internet_service.enabled)
|
18
|
+
builder.Description(public_ip_internet_service.description)
|
19
|
+
builder.Timeout(public_ip_internet_service.timeout)
|
20
|
+
builder.RedirectURL(public_ip_internet_service.redirect_url)
|
21
21
|
builder.PublicIpAddress {
|
22
|
-
builder.Id(
|
23
|
-
builder.Href(
|
24
|
-
builder.Name(
|
22
|
+
builder.Id(public_ip_internet_service._parent._parent.object_id)
|
23
|
+
builder.Href(public_ip_internet_service._parent._parent.href)
|
24
|
+
builder.Name(public_ip_internet_service._parent._parent.name)
|
25
25
|
}
|
26
|
-
if monitor =
|
27
|
-
generate_monitor_section(builder,monitor)
|
26
|
+
if monitor = public_ip_internet_service.monitor
|
27
|
+
generate_monitor_section(builder, public_ip_internet_service.monitor)
|
28
28
|
end
|
29
29
|
}
|
30
30
|
end
|
@@ -79,11 +79,9 @@ module Fog
|
|
79
79
|
|
80
80
|
xml = nil
|
81
81
|
|
82
|
-
if
|
83
|
-
|
84
|
-
|
85
|
-
xml = generate_internet_service_response(service_data, ip)
|
86
|
-
end
|
82
|
+
if public_ip_internet_service = mock_data.public_ip_internet_service_from_href(internet_service_uri)
|
83
|
+
public_ip_internet_service.update(service_data.reject {|k, v| [:id, :href].include?(k) })
|
84
|
+
xml = generate_internet_service_response(public_ip_internet_service)
|
87
85
|
end
|
88
86
|
|
89
87
|
if xml
|
@@ -39,15 +39,14 @@ module Fog
|
|
39
39
|
include Shared
|
40
40
|
|
41
41
|
def configure_node(node_uri, node_data)
|
42
|
-
node_uri = ensure_unparsed(node_uri)
|
43
|
-
|
44
42
|
validate_node_data(node_data, true)
|
45
43
|
|
46
|
-
if node =
|
47
|
-
node
|
48
|
-
|
49
|
-
node
|
50
|
-
|
44
|
+
if node = mock_data.public_ip_internet_service_node_from_href(ensure_unparsed(node_uri))
|
45
|
+
node.update(node_data)
|
46
|
+
#if node_data[:enabled]
|
47
|
+
# node.enabled = (node_data[:enabled] == "true") ? true : false
|
48
|
+
#end
|
49
|
+
mock_it 200, mock_node_service_response(node), { 'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml' }
|
51
50
|
else
|
52
51
|
mock_error 200, "401 Unauthorized"
|
53
52
|
end
|
@@ -2,7 +2,19 @@ module Fog
|
|
2
2
|
class Vcloud
|
3
3
|
module Terremark
|
4
4
|
class Ecloud
|
5
|
+
module Shared
|
6
|
+
private
|
7
|
+
|
8
|
+
def validate_vapp_data(vapp_data)
|
9
|
+
valid_opts = [:name, :cpus, :memory, :disks]
|
10
|
+
unless valid_opts.all? { |opt| vapp_data.keys.include?(opt) }
|
11
|
+
raise ArgumentError.new("Required Vapp data missing: #{(valid_opts - vapp_data.keys).map(&:inspect).join(", ")}")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
5
16
|
class Real
|
17
|
+
include Shared
|
6
18
|
|
7
19
|
def generate_configure_vapp_request(vapp_uri, vapp_data)
|
8
20
|
rasd_xmlns = { "xmlns" => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" }
|
@@ -42,7 +54,7 @@ module Fog
|
|
42
54
|
|
43
55
|
#puts xml.root.to_s
|
44
56
|
xml.root.to_s
|
45
|
-
|
57
|
+
|
46
58
|
#builder = Builder::XmlMarkup.new
|
47
59
|
#builder.Vapp(:href => vapp_uri.to_s,
|
48
60
|
# :type => 'application/vnd.vmware.vcloud.vApp+xml',
|
@@ -82,13 +94,6 @@ module Fog
|
|
82
94
|
#}
|
83
95
|
end
|
84
96
|
|
85
|
-
def validate_vapp_data(vapp_data)
|
86
|
-
valid_opts = [:name, :cpus, :memory, :disks]
|
87
|
-
unless valid_opts.all? { |opt| vapp_data.keys.include?(opt) }
|
88
|
-
raise ArgumentError.new("Required Vapp data missing: #{(valid_opts - vapp_data.keys).map(&:inspect).join(", ")}")
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
97
|
def configure_vapp(vapp_uri, vapp_data)
|
93
98
|
validate_vapp_data(vapp_data)
|
94
99
|
|
@@ -105,8 +110,34 @@ module Fog
|
|
105
110
|
end
|
106
111
|
|
107
112
|
class Mock
|
113
|
+
include Shared
|
114
|
+
|
108
115
|
def configure_vapp(vapp_uri, vapp_data)
|
109
|
-
|
116
|
+
validate_vapp_data(vapp_data)
|
117
|
+
|
118
|
+
if vapp = mock_data.virtual_machine_from_href(vapp_uri)
|
119
|
+
vapp_data.each do |key, value|
|
120
|
+
case key
|
121
|
+
when :cpus, :memory
|
122
|
+
vapp[key] = value
|
123
|
+
when :disks
|
124
|
+
addresses_to_delete = vapp.disks.map {|d| d.address } - value.map {|d| d[:number] }
|
125
|
+
addresses_to_delete.each do |address_to_delete|
|
126
|
+
vapp.disks.delete(vapp.disks.at_address(address_to_delete))
|
127
|
+
end
|
128
|
+
|
129
|
+
current_addresses = vapp.disks.map {|d| d.address }
|
130
|
+
disks_to_add = value.find_all {|d| !current_addresses.include?(d[:number]) }
|
131
|
+
disks_to_add.each do |disk_to_add|
|
132
|
+
vapp.disks << MockVirtualMachineDisk.new(:size => disk_to_add[:size] / 1024, :address => disk_to_add[:number])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
mock_it 200, '', { "Location" => mock_data.base_url + "/some_tasks/1234" }
|
138
|
+
else
|
139
|
+
mock_error 200, "401 Unauthorized"
|
140
|
+
end
|
110
141
|
end
|
111
142
|
end
|
112
143
|
end
|
@@ -8,18 +8,10 @@ module Fog
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class Mock
|
11
|
-
|
12
11
|
def delete_internet_service(service_uri)
|
12
|
+
if public_ip_internet_service = mock_data.public_ip_internet_service_from_href(service_uri)
|
13
|
+
public_ip_internet_service._parent.items.delete(public_ip_internet_service)
|
13
14
|
|
14
|
-
deleted = false
|
15
|
-
if ip = mock_ip_from_service_url(service_uri)
|
16
|
-
if service = ip[:services].detect { |service| service[:href] == service_uri }
|
17
|
-
ip[:services].delete(service)
|
18
|
-
deleted = true
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
if deleted
|
23
15
|
mock_it 200, '', { }
|
24
16
|
else
|
25
17
|
mock_error 200, "401 Unauthorized"
|
@@ -10,12 +10,8 @@ module Fog
|
|
10
10
|
class Mock
|
11
11
|
|
12
12
|
def delete_node(node_uri)
|
13
|
-
|
14
|
-
|
15
|
-
node = mock_node_from_url(node_uri)
|
16
|
-
service = mock_service_from_node_url(node_uri)
|
17
|
-
if node and service
|
18
|
-
service[:nodes].delete(node)
|
13
|
+
if node = mock_data.public_ip_internet_service_node_from_href(ensure_unparsed(node_uri))
|
14
|
+
node._parent.items.delete(node)
|
19
15
|
mock_it 200, '', {}
|
20
16
|
else
|
21
17
|
mock_error 200, "401 Unauthorized"
|
@@ -9,7 +9,19 @@ module Fog
|
|
9
9
|
|
10
10
|
class Mock
|
11
11
|
def delete_vapp(vapp_uri)
|
12
|
-
|
12
|
+
if virtual_machine = mock_data.virtual_machine_from_href(vapp_uri)
|
13
|
+
vdc = virtual_machine._parent
|
14
|
+
|
15
|
+
if vdc.internet_service_collection.items.detect {|is| is.node_collection.items.any? {|isn| isn.ip_address == virtual_machine.ip } } ||
|
16
|
+
virtual_machine.status != 2
|
17
|
+
mock_it 202, '', {}
|
18
|
+
else
|
19
|
+
vdc.virtual_machines.delete(virtual_machine)
|
20
|
+
mock_it 202, '', { "Location" => mock_data.base_url + "/some_tasks/1234" }
|
21
|
+
end
|
22
|
+
else
|
23
|
+
mock_error 200, "401 Unauthorized"
|
24
|
+
end
|
13
25
|
end
|
14
26
|
end
|
15
27
|
end
|
@@ -12,20 +12,20 @@ module Fog
|
|
12
12
|
catalog_uri = ensure_unparsed(catalog_uri)
|
13
13
|
xml = nil
|
14
14
|
|
15
|
-
if
|
15
|
+
if catalog = mock_data.catalog_from_href(catalog_uri)
|
16
16
|
builder = Builder::XmlMarkup.new
|
17
17
|
|
18
18
|
xml = builder.Catalog(xmlns.merge(
|
19
19
|
:type => "application/vnd.vmware.vcloud.catalog+xml",
|
20
|
-
:href =>
|
21
|
-
:name =>
|
20
|
+
:href => catalog.href,
|
21
|
+
:name => catalog.name
|
22
22
|
)) do |xml|
|
23
23
|
xml.CatalogItems do |xml|
|
24
|
-
|
24
|
+
catalog.items.each do |catalog_item|
|
25
25
|
xml.CatalogItem(
|
26
26
|
:type => "application/vnd.vmware.vcloud.catalogItem+xml",
|
27
|
-
:href =>
|
28
|
-
:name => catalog_item
|
27
|
+
:href => catalog_item.href,
|
28
|
+
:name => catalog_item.name
|
29
29
|
)
|
30
30
|
end
|
31
31
|
end
|
@@ -15,22 +15,21 @@ module Fog
|
|
15
15
|
#
|
16
16
|
|
17
17
|
def get_catalog_item(catalog_item_uri)
|
18
|
-
if
|
19
|
-
catalog_item, vdc = catalog_item_and_vdc
|
18
|
+
if catalog_item = mock_data.catalog_item_from_href(catalog_item_uri)
|
20
19
|
builder = Builder::XmlMarkup.new
|
21
20
|
|
22
|
-
xml = builder.CatalogItem(xmlns.merge(:href =>
|
21
|
+
xml = builder.CatalogItem(xmlns.merge(:href => catalog_item.href, :name => catalog_item.name)) do
|
23
22
|
builder.Link(
|
24
23
|
:rel => "down",
|
25
|
-
:href =>
|
24
|
+
:href => catalog_item.customization.href,
|
26
25
|
:type => "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml",
|
27
|
-
:name =>
|
26
|
+
:name => catalog_item.customization.name
|
28
27
|
)
|
29
28
|
|
30
29
|
builder.Entity(
|
31
|
-
:href =>
|
30
|
+
:href => catalog_item.vapp_template.href,
|
32
31
|
:type => "application/vnd.vmware.vcloud.vAppTemplate+xml",
|
33
|
-
:name => catalog_item
|
32
|
+
:name => catalog_item.vapp_template.name
|
34
33
|
)
|
35
34
|
|
36
35
|
builder.Property(0, :key => "LicensingCost")
|
@@ -8,50 +8,23 @@ module Fog
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class Mock
|
11
|
-
|
12
11
|
#
|
13
12
|
#Based off of:
|
14
13
|
#http://support.theenterprisecloud.com/kb/default.asp?id=580&Lang=1&SID=
|
15
14
|
#http://support.theenterprisecloud.com/kb/default.asp?id=560&Lang=1&SID=
|
16
15
|
#
|
17
16
|
#
|
18
|
-
def self.internet_services_for_ip(xml,ip)
|
19
|
-
ip[:services].each do |service|
|
20
|
-
xml.InternetService {
|
21
|
-
xml.Id(service[:id])
|
22
|
-
xml.Href(Fog::Vcloud::Terremark::Ecloud::Mock.internet_service_href(service))
|
23
|
-
xml.Name(service[:name])
|
24
|
-
xml.PublicIpAddress {
|
25
|
-
xml.Id(ip[:id])
|
26
|
-
xml.Href(Fog::Vcloud::Terremark::Ecloud::Mock.public_ip_href(ip))
|
27
|
-
xml.Name(ip[:name])
|
28
|
-
}
|
29
|
-
xml.Port(service[:port])
|
30
|
-
xml.Protocol(service[:protocol])
|
31
|
-
xml.Enabled(service[:enabled])
|
32
|
-
xml.Timeout(service[:timeout])
|
33
|
-
xml.Description(service[:description])
|
34
|
-
xml.RedirectURL(service[:redirect_url])
|
35
|
-
xml.Monitor
|
36
|
-
}
|
37
|
-
end
|
38
|
-
end
|
39
17
|
|
40
18
|
def get_internet_services(internet_services_uri)
|
41
19
|
internet_services_uri = ensure_unparsed(internet_services_uri)
|
42
20
|
xml = nil
|
43
|
-
|
44
|
-
if
|
45
|
-
xml =
|
46
|
-
|
47
|
-
|
48
|
-
end
|
49
|
-
}
|
50
|
-
elsif ip = ip_from_uri(internet_services_uri)
|
51
|
-
xml = builder.InternetServices( :xmlns => "urn:tmrk:eCloudExtensions-2.3",:"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance" ) { |xml|
|
52
|
-
Fog::Vcloud::Terremark::Ecloud::Mock.internet_services_for_ip(xml,ip)
|
53
|
-
}
|
21
|
+
|
22
|
+
if vdc_internet_service_collection = mock_data.vdc_internet_service_collection_from_href(internet_services_uri)
|
23
|
+
xml = generate_internet_services(vdc_internet_service_collection.items)
|
24
|
+
elsif public_ip_internet_service_collection = mock_data.public_ip_internet_service_collection_from_href(internet_services_uri)
|
25
|
+
xml = generate_internet_services(public_ip_internet_service_collection.items)
|
54
26
|
end
|
27
|
+
|
55
28
|
if xml
|
56
29
|
mock_it 200,
|
57
30
|
xml, { 'Content-Type' => 'application/vnd.tmrk.ecloud.internetServicesList+xml' }
|
@@ -59,6 +32,34 @@ module Fog
|
|
59
32
|
mock_error 200, "401 Unauthorized"
|
60
33
|
end
|
61
34
|
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def generate_internet_services(services)
|
39
|
+
builder = Builder::XmlMarkup.new
|
40
|
+
|
41
|
+
builder.InternetServices(:xmlns => "urn:tmrk:eCloudExtensions-2.3",:"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance") {|xml|
|
42
|
+
services.each do |service|
|
43
|
+
xml.InternetService {
|
44
|
+
xml.Id service.object_id
|
45
|
+
xml.Href service.href
|
46
|
+
xml.Name service.name
|
47
|
+
xml.PublicIpAddress {
|
48
|
+
xml.Id service._parent._parent.object_id
|
49
|
+
xml.Href service._parent._parent.href
|
50
|
+
xml.Name service._parent._parent.name
|
51
|
+
}
|
52
|
+
xml.Port service.port
|
53
|
+
xml.Protocol service.protocol
|
54
|
+
xml.Enabled service.enabled
|
55
|
+
xml.Timeout service.timeout
|
56
|
+
xml.Description service.description
|
57
|
+
xml.RedirectURL service.redirect_url
|
58
|
+
xml.Monitor
|
59
|
+
}
|
60
|
+
end
|
61
|
+
}
|
62
|
+
end
|
62
63
|
end
|
63
64
|
end
|
64
65
|
end
|