fog-profitbricks 2.0.1 → 3.0.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.travis.yml +11 -4
- data/README.md +8 -5
- data/Rakefile +1 -1
- data/examples/pb_demo.rb +49 -49
- data/fog-profitbricks.gemspec +4 -5
- data/gemfiles/Gemfile.1.9.2+ +1 -0
- data/lib/fog/bin/profitbricks.rb +5 -5
- data/lib/fog/profitbricks.rb +3 -3
- data/lib/fog/profitbricks/compute.rb +209 -204
- data/lib/fog/profitbricks/helpers/compute/data_helper.rb +1 -1
- data/lib/fog/profitbricks/models/compute/datacenter.rb +1 -1
- data/lib/fog/profitbricks/models/compute/datacenters.rb +6 -7
- data/lib/fog/profitbricks/models/compute/firewall_rule.rb +2 -2
- data/lib/fog/profitbricks/models/compute/firewall_rules.rb +5 -8
- data/lib/fog/profitbricks/models/compute/flavors.rb +1 -4
- data/lib/fog/profitbricks/models/compute/image.rb +4 -0
- data/lib/fog/profitbricks/models/compute/images.rb +2 -5
- data/lib/fog/profitbricks/models/compute/ip_block.rb +1 -1
- data/lib/fog/profitbricks/models/compute/ip_blocks.rb +3 -8
- data/lib/fog/profitbricks/models/compute/lan.rb +1 -1
- data/lib/fog/profitbricks/models/compute/lans.rb +4 -7
- data/lib/fog/profitbricks/models/compute/load_balancer.rb +6 -7
- data/lib/fog/profitbricks/models/compute/load_balancers.rb +5 -9
- data/lib/fog/profitbricks/models/compute/locations.rb +2 -5
- data/lib/fog/profitbricks/models/compute/nic.rb +6 -3
- data/lib/fog/profitbricks/models/compute/nics.rb +2 -5
- data/lib/fog/profitbricks/models/compute/regions.rb +1 -4
- data/lib/fog/profitbricks/models/compute/request.rb +0 -1
- data/lib/fog/profitbricks/models/compute/requests.rb +2 -4
- data/lib/fog/profitbricks/models/compute/server.rb +10 -13
- data/lib/fog/profitbricks/models/compute/servers.rb +3 -6
- data/lib/fog/profitbricks/models/compute/snapshot.rb +2 -2
- data/lib/fog/profitbricks/models/compute/snapshots.rb +3 -6
- data/lib/fog/profitbricks/models/compute/volume.rb +11 -9
- data/lib/fog/profitbricks/models/compute/volumes.rb +3 -6
- data/lib/fog/profitbricks/requests/compute/associate_nic_to_load_balancer.rb +26 -13
- data/lib/fog/profitbricks/requests/compute/attach_cdrom.rb +25 -16
- data/lib/fog/profitbricks/requests/compute/attach_volume.rb +25 -16
- data/lib/fog/profitbricks/requests/compute/create_datacenter.rb +22 -23
- data/lib/fog/profitbricks/requests/compute/create_firewall_rule.rb +24 -26
- data/lib/fog/profitbricks/requests/compute/create_flavor.rb +34 -34
- data/lib/fog/profitbricks/requests/compute/create_ip_block.rb +18 -20
- data/lib/fog/profitbricks/requests/compute/create_lan.rb +151 -150
- data/lib/fog/profitbricks/requests/compute/create_load_balancer.rb +67 -26
- data/lib/fog/profitbricks/requests/compute/create_nic.rb +24 -26
- data/lib/fog/profitbricks/requests/compute/create_server.rb +70 -61
- data/lib/fog/profitbricks/requests/compute/create_volume.rb +122 -122
- data/lib/fog/profitbricks/requests/compute/create_volume_snapshot.rb +42 -45
- data/lib/fog/profitbricks/requests/compute/delete_datacenter.rb +34 -36
- data/lib/fog/profitbricks/requests/compute/delete_firewall_rule.rb +8 -11
- data/lib/fog/profitbricks/requests/compute/delete_image.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/delete_ip_block.rb +8 -10
- data/lib/fog/profitbricks/requests/compute/delete_lan.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/delete_load_balancer.rb +8 -10
- data/lib/fog/profitbricks/requests/compute/delete_nic.rb +7 -10
- data/lib/fog/profitbricks/requests/compute/delete_server.rb +6 -10
- data/lib/fog/profitbricks/requests/compute/delete_snapshot.rb +7 -10
- data/lib/fog/profitbricks/requests/compute/delete_volume.rb +36 -38
- data/lib/fog/profitbricks/requests/compute/detach_cdrom.rb +11 -13
- data/lib/fog/profitbricks/requests/compute/detach_volume.rb +16 -13
- data/lib/fog/profitbricks/requests/compute/get_all_datacenters.rb +1 -1
- data/lib/fog/profitbricks/requests/compute/get_all_firewall_rules.rb +6 -7
- data/lib/fog/profitbricks/requests/compute/get_all_flavors.rb +72 -72
- data/lib/fog/profitbricks/requests/compute/get_all_images.rb +62 -62
- data/lib/fog/profitbricks/requests/compute/get_all_ip_blocks.rb +5 -5
- data/lib/fog/profitbricks/requests/compute/get_all_lans.rb +113 -113
- data/lib/fog/profitbricks/requests/compute/get_all_load_balanced_nics.rb +15 -9
- data/lib/fog/profitbricks/requests/compute/get_all_load_balancers.rb +9 -9
- data/lib/fog/profitbricks/requests/compute/get_all_locations.rb +6 -6
- data/lib/fog/profitbricks/requests/compute/get_all_nic.rb +94 -94
- data/lib/fog/profitbricks/requests/compute/get_all_requests.rb +38 -38
- data/lib/fog/profitbricks/requests/compute/get_all_servers.rb +8 -9
- data/lib/fog/profitbricks/requests/compute/get_all_snapshots.rb +4 -4
- data/lib/fog/profitbricks/requests/compute/get_all_volumes.rb +71 -71
- data/lib/fog/profitbricks/requests/compute/get_attached_cdrom.rb +11 -11
- data/lib/fog/profitbricks/requests/compute/get_attached_volume.rb +16 -11
- data/lib/fog/profitbricks/requests/compute/get_datacenter.rb +4 -6
- data/lib/fog/profitbricks/requests/compute/get_firewall_rule.rb +8 -11
- data/lib/fog/profitbricks/requests/compute/get_flavor.rb +9 -9
- data/lib/fog/profitbricks/requests/compute/get_image.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/get_ip_block.rb +8 -10
- data/lib/fog/profitbricks/requests/compute/get_lan.rb +7 -10
- data/lib/fog/profitbricks/requests/compute/get_load_balanced_nic.rb +16 -12
- data/lib/fog/profitbricks/requests/compute/get_load_balancer.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/get_location.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/get_nic.rb +8 -11
- data/lib/fog/profitbricks/requests/compute/get_request.rb +55 -57
- data/lib/fog/profitbricks/requests/compute/get_request_status.rb +44 -46
- data/lib/fog/profitbricks/requests/compute/get_server.rb +7 -10
- data/lib/fog/profitbricks/requests/compute/get_snapshot.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/get_volume.rb +7 -9
- data/lib/fog/profitbricks/requests/compute/list_attached_cdroms.rb +8 -8
- data/lib/fog/profitbricks/requests/compute/list_attached_volumes.rb +18 -8
- data/lib/fog/profitbricks/requests/compute/reboot_server.rb +7 -11
- data/lib/fog/profitbricks/requests/compute/remove_nic_association.rb +9 -11
- data/lib/fog/profitbricks/requests/compute/restore_volume_snapshot.rb +15 -17
- data/lib/fog/profitbricks/requests/compute/start_server.rb +7 -11
- data/lib/fog/profitbricks/requests/compute/stop_server.rb +7 -11
- data/lib/fog/profitbricks/requests/compute/update_datacenter.rb +20 -15
- data/lib/fog/profitbricks/requests/compute/update_firewall_rule.rb +9 -11
- data/lib/fog/profitbricks/requests/compute/update_image.rb +15 -15
- data/lib/fog/profitbricks/requests/compute/update_lan.rb +6 -8
- data/lib/fog/profitbricks/requests/compute/update_load_balancer.rb +10 -12
- data/lib/fog/profitbricks/requests/compute/update_nic.rb +10 -12
- data/lib/fog/profitbricks/requests/compute/update_server.rb +10 -13
- data/lib/fog/profitbricks/requests/compute/update_snapshot.rb +10 -13
- data/lib/fog/profitbricks/requests/compute/update_volume.rb +10 -13
- data/lib/fog/profitbricks/version.rb +1 -1
- data/spec/minitest_helper.rb +1 -3
- data/tests/helpers/formats_helper.rb +8 -8
- data/tests/profitbricks/models/compute/compute_tests.rb +529 -0
- data/tests/profitbricks/requests/compute/composite_create_tests.rb +16 -83
- data/tests/profitbricks/requests/compute/flavor_tests.rb +1 -4
- data/tests/profitbricks/requests/compute/location_tests.rb +14 -17
- data/tests/profitbricks/requests/compute/nic_tests.rb +60 -70
- data/tests/profitbricks/requests/compute/request_tests.rb +1 -3
- data/tests/profitbricks/requests/compute/server_tests.rb +163 -161
- metadata +5 -18
@@ -54,28 +54,28 @@ module Fog
|
|
54
54
|
# * public<~String> - Indicates if the image is part of the public repository or not
|
55
55
|
#
|
56
56
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-image]
|
57
|
-
def update_image(image_id, options={})
|
57
|
+
def update_image(image_id, options = {})
|
58
58
|
request(
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
:expects => [202],
|
60
|
+
:method => 'PATCH',
|
61
|
+
:path => "/images/#{image_id}",
|
62
|
+
:body => Fog::JSON.encode(options)
|
63
63
|
)
|
64
|
-
rescue => error
|
65
|
-
Fog::Errors::NotFound.new(error)
|
66
64
|
end
|
67
65
|
end
|
68
66
|
|
69
67
|
class Mock
|
70
|
-
def update_image(image_id, options={})
|
71
|
-
if img =
|
72
|
-
|
73
|
-
|
74
|
-
img['
|
75
|
-
|
76
|
-
|
68
|
+
def update_image(image_id, options = {})
|
69
|
+
if img = data[:images]["items"].find do |image|
|
70
|
+
image["id"] == image_id
|
71
|
+
end
|
72
|
+
img['licenceType'] = options[:licenceType]
|
73
|
+
options.each do |key, value|
|
74
|
+
img[key.to_s] = value
|
75
|
+
end
|
76
|
+
|
77
77
|
else
|
78
|
-
raise
|
78
|
+
raise Excon::Error::HTTPStatus, "The requested resource could not be found"
|
79
79
|
end
|
80
80
|
|
81
81
|
response = Excon::Response.new
|
@@ -91,28 +91,26 @@ module Fog
|
|
91
91
|
# portRangeEnd value null to allow all ports
|
92
92
|
#
|
93
93
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-lan]
|
94
|
-
def update_lan(datacenter_id, lan_id, options={})
|
94
|
+
def update_lan(datacenter_id, lan_id, options = {})
|
95
95
|
request(
|
96
96
|
:expects => [202],
|
97
97
|
:method => 'PATCH',
|
98
98
|
:path => "/datacenters/#{datacenter_id}/lans/#{lan_id}",
|
99
99
|
:body => Fog::JSON.encode(options)
|
100
100
|
)
|
101
|
-
rescue => error
|
102
|
-
Fog::Errors::NotFound.new(error)
|
103
101
|
end
|
104
102
|
end
|
105
103
|
|
106
104
|
class Mock
|
107
|
-
def update_lan(datacenter_id, lan_id, options={})
|
108
|
-
if lan =
|
109
|
-
|
110
|
-
|
105
|
+
def update_lan(datacenter_id, lan_id, options = {})
|
106
|
+
if lan = data[:lans]['items'].find do |attrib|
|
107
|
+
attrib['datacenter_id'] == datacenter_id && attrib['id'] == lan_id
|
108
|
+
end
|
111
109
|
options.each do |key, value|
|
112
110
|
lan[key] = value
|
113
111
|
end
|
114
112
|
else
|
115
|
-
raise Fog::Errors::NotFound
|
113
|
+
raise Fog::Errors::NotFound, 'The requested LAN resource could not be found'
|
116
114
|
end
|
117
115
|
|
118
116
|
response = Excon::Response.new
|
@@ -34,28 +34,26 @@ module Fog
|
|
34
34
|
# See the NIC section for attribute definitions
|
35
35
|
#
|
36
36
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-load-balancer]
|
37
|
-
def update_load_balancer(datacenter_id, load_balancer_id, options={})
|
37
|
+
def update_load_balancer(datacenter_id, load_balancer_id, options = {})
|
38
38
|
request(
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
:expects => [202],
|
40
|
+
:method => 'PATCH',
|
41
|
+
:path => "/datacenters/#{datacenter_id}/loadbalancers/#{load_balancer_id}",
|
42
|
+
:body => Fog::JSON.encode(options)
|
43
43
|
)
|
44
|
-
rescue => error
|
45
|
-
Fog::Errors::NotFound.new(error)
|
46
44
|
end
|
47
45
|
end
|
48
46
|
|
49
47
|
class Mock
|
50
|
-
def update_load_balancer(datacenter_id, load_balancer_id, options={})
|
51
|
-
if load_balancer =
|
52
|
-
|
53
|
-
|
48
|
+
def update_load_balancer(datacenter_id, load_balancer_id, options = {})
|
49
|
+
if load_balancer = data[:load_balancers]['items'].find do |attribute|
|
50
|
+
attribute["datacenter_id"] == datacenter_id && attribute["id"] == load_balancer_id
|
51
|
+
end
|
54
52
|
options.each do |key, value|
|
55
53
|
load_balancer[key] = value
|
56
54
|
end
|
57
55
|
else
|
58
|
-
raise Fog::Errors::NotFound
|
56
|
+
raise Fog::Errors::NotFound, 'The requested resource could not be found'
|
59
57
|
end
|
60
58
|
|
61
59
|
response = Excon::Response.new
|
@@ -71,28 +71,26 @@ module Fog
|
|
71
71
|
# portRangeEnd value null to allow all ports
|
72
72
|
#
|
73
73
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-a-nic]
|
74
|
-
def update_nic(datacenter_id, server_id, nic_id, options={})
|
74
|
+
def update_nic(datacenter_id, server_id, nic_id, options = {})
|
75
75
|
request(
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
76
|
+
:expects => [202],
|
77
|
+
:method => 'PATCH',
|
78
|
+
:path => "/datacenters/#{datacenter_id}/servers/#{server_id}/nics/#{nic_id}",
|
79
|
+
:body => Fog::JSON.encode(options)
|
80
80
|
)
|
81
|
-
rescue => error
|
82
|
-
Fog::Errors::NotFound.new(error)
|
83
81
|
end
|
84
82
|
end
|
85
83
|
|
86
84
|
class Mock
|
87
|
-
def update_nic(datacenter_id, server_id, nic_id, options={})
|
88
|
-
if nic =
|
89
|
-
|
90
|
-
|
85
|
+
def update_nic(datacenter_id, server_id, nic_id, options = {})
|
86
|
+
if nic = data[:nics]['items'].find do |attribute|
|
87
|
+
attribute["datacenter_id"] == datacenter_id && attribute["server_id"] == server_id && attribute["id"] == nic_id
|
88
|
+
end
|
91
89
|
options.each do |key, value|
|
92
90
|
nic[key] = value
|
93
91
|
end
|
94
92
|
else
|
95
|
-
raise Fog::Errors::NotFound
|
93
|
+
raise Fog::Errors::NotFound, 'The requested resource could not be found'
|
96
94
|
end
|
97
95
|
|
98
96
|
response = Excon::Response.new
|
@@ -111,29 +111,26 @@ module Fog
|
|
111
111
|
# * items<~Array> - An array of individual firewall rules associated to the NIC
|
112
112
|
#
|
113
113
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-a-server]
|
114
|
-
def update_server(datacenter_id, server_id, properties={})
|
114
|
+
def update_server(datacenter_id, server_id, properties = {})
|
115
115
|
request(
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
116
|
+
:expects => [202],
|
117
|
+
:method => 'PATCH',
|
118
|
+
:path => "/datacenters/#{datacenter_id}/servers/#{server_id}",
|
119
|
+
:body => Fog::JSON.encode(properties)
|
120
120
|
)
|
121
|
-
rescue => error
|
122
|
-
Fog::Errors::NotFound.new(error)
|
123
121
|
end
|
124
122
|
end
|
125
123
|
|
126
124
|
class Mock
|
127
|
-
def update_server(
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
}
|
125
|
+
def update_server(_datacenter_id, server_id, properties = {})
|
126
|
+
if server = data[:servers]['items'].find do |attrib|
|
127
|
+
attrib['id'] == server_id
|
128
|
+
end
|
132
129
|
properties.each do |key, value|
|
133
130
|
server[key] = value
|
134
131
|
end
|
135
132
|
else
|
136
|
-
raise Fog::Errors::NotFound
|
133
|
+
raise Fog::Errors::NotFound, 'The requested server resource could not be found'
|
137
134
|
end
|
138
135
|
|
139
136
|
response = Excon::Response.new
|
@@ -53,28 +53,26 @@ module Fog
|
|
53
53
|
# * licencetype<~String> - The snapshot's licence type: LINUX, WINDOWS, or UNKNOWN.
|
54
54
|
#
|
55
55
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-snapshot]
|
56
|
-
def update_snapshot(snapshot_id, options={})
|
56
|
+
def update_snapshot(snapshot_id, options = {})
|
57
57
|
request(
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
:expects => [202],
|
59
|
+
:method => 'PATCH',
|
60
|
+
:path => "/snapshots/#{snapshot_id}",
|
61
|
+
:body => Fog::JSON.encode(options)
|
62
62
|
)
|
63
|
-
rescue => error
|
64
|
-
Fog::Errors::NotFound.new(error)
|
65
63
|
end
|
66
64
|
end
|
67
65
|
|
68
66
|
class Mock
|
69
|
-
def update_snapshot(snapshot_id, options={})
|
70
|
-
if snapshot =
|
71
|
-
|
72
|
-
|
67
|
+
def update_snapshot(snapshot_id, options = {})
|
68
|
+
if snapshot = data[:snapshots]['items'].find do |snpsht|
|
69
|
+
snpsht["id"] == snapshot_id
|
70
|
+
end
|
73
71
|
options.each do |key, value|
|
74
72
|
snapshot[key] = value
|
75
73
|
end
|
76
74
|
else
|
77
|
-
raise Fog::Errors::NotFound
|
75
|
+
raise Fog::Errors::NotFound, 'The requested resource could not be found'
|
78
76
|
end
|
79
77
|
|
80
78
|
response = Excon::Response.new
|
@@ -84,7 +82,6 @@ module Fog
|
|
84
82
|
response
|
85
83
|
end
|
86
84
|
end
|
87
|
-
|
88
85
|
end
|
89
86
|
end
|
90
87
|
end
|
@@ -46,28 +46,25 @@ module Fog
|
|
46
46
|
# * deviceNumber<~Integer> - The LUN ID of the volume volume
|
47
47
|
#
|
48
48
|
# {ProfitBricks API Documentation}[https://devops.profitbricks.com/api/cloud/v2/#update-volume]
|
49
|
-
def update_volume(datacenter_id, volume_id, options={})
|
49
|
+
def update_volume(datacenter_id, volume_id, options = {})
|
50
50
|
request(
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
:expects => [202],
|
52
|
+
:method => 'PATCH',
|
53
|
+
:path => "/datacenters/#{datacenter_id}/volumes/#{volume_id}",
|
54
|
+
:body => Fog::JSON.encode(options)
|
55
55
|
)
|
56
|
-
rescue => error
|
57
|
-
Fog::Errors::NotFound.new(error)
|
58
56
|
end
|
59
57
|
end
|
60
58
|
|
61
59
|
class Mock
|
62
|
-
def update_volume(datacenter_id, volume_id, options={})
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
}
|
60
|
+
def update_volume(datacenter_id, volume_id, options = {})
|
61
|
+
if volume = data[:volumes]['items'].find do |vlm|
|
62
|
+
vlm["id"] == volume_id && vlm["datacenter_id"] == datacenter_id
|
63
|
+
end
|
67
64
|
volume['name'] = options[:name]
|
68
65
|
volume['size'] = options[:size]
|
69
66
|
else
|
70
|
-
raise
|
67
|
+
raise Excon::Error::HTTPStatus, 'The requested resource could not be found'
|
71
68
|
end
|
72
69
|
|
73
70
|
response = Excon::Response.new
|
data/spec/minitest_helper.rb
CHANGED
@@ -13,11 +13,11 @@ module Fog
|
|
13
13
|
module Array; end
|
14
14
|
end
|
15
15
|
end
|
16
|
-
[FalseClass, TrueClass].each {|klass| klass.send(:include, Fog::Boolean)}
|
17
|
-
[FalseClass, TrueClass, NilClass, Fog::Boolean].each {|klass| klass.send(:include, Fog::Nullable::Boolean)}
|
18
|
-
[NilClass, String].each {|klass| klass.send(:include, Fog::Nullable::String)}
|
19
|
-
[NilClass, Time].each {|klass| klass.send(:include, Fog::Nullable::Time)}
|
20
|
-
[Integer, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Integer)}
|
21
|
-
[Float, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Float)}
|
22
|
-
[Hash, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Hash)}
|
23
|
-
[Array, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Array)}
|
16
|
+
[FalseClass, TrueClass].each { |klass| klass.send(:include, Fog::Boolean) }
|
17
|
+
[FalseClass, TrueClass, NilClass, Fog::Boolean].each { |klass| klass.send(:include, Fog::Nullable::Boolean) }
|
18
|
+
[NilClass, String].each { |klass| klass.send(:include, Fog::Nullable::String) }
|
19
|
+
[NilClass, Time].each { |klass| klass.send(:include, Fog::Nullable::Time) }
|
20
|
+
[Integer, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Integer) }
|
21
|
+
[Float, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Float) }
|
22
|
+
[Hash, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Hash) }
|
23
|
+
[Array, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Array) }
|
@@ -0,0 +1,529 @@
|
|
1
|
+
Shindo.tests('Fog::Compute[:profitbricks] | compute models', %w(profitbricks compute)) do
|
2
|
+
compute = Fog::Compute[:profitbricks]
|
3
|
+
|
4
|
+
tests('success') do
|
5
|
+
Excon.defaults[:connection_timeout] = 500
|
6
|
+
|
7
|
+
tests('should create a datacenter').succeeds do
|
8
|
+
datacenter = compute.datacenters.create(:name => 'fog-demo',
|
9
|
+
:location => 'de/fra',
|
10
|
+
:description => 'testing fog rest implementation')
|
11
|
+
datacenter.wait_for { ready? }
|
12
|
+
|
13
|
+
@datacenter_id = datacenter.id
|
14
|
+
|
15
|
+
datacenter.name == 'fog-demo'
|
16
|
+
datacenter.location == 'de/fra'
|
17
|
+
datacenter.description == 'testing fog rest implementation'
|
18
|
+
end
|
19
|
+
|
20
|
+
tests('should retrieve a datacenter by id').succeeds do
|
21
|
+
datacenter = compute.datacenters.get(@datacenter_id)
|
22
|
+
|
23
|
+
datacenter.name == 'fog-demo'
|
24
|
+
datacenter.location == 'de/fra'
|
25
|
+
datacenter.description == 'testing fog rest implementation'
|
26
|
+
end
|
27
|
+
|
28
|
+
tests('should update a datacenter').succeeds do
|
29
|
+
datacenter = compute.datacenters.get(@datacenter_id)
|
30
|
+
datacenter.name = datacenter.name + ' - updated'
|
31
|
+
datacenter.description = datacenter.description + ' - updated'
|
32
|
+
datacenter.update
|
33
|
+
|
34
|
+
datacenter.wait_for { ready? }
|
35
|
+
|
36
|
+
datacenter.name == 'fog-demo - updated'
|
37
|
+
datacenter.description == 'testing fog rest implementation - updated'
|
38
|
+
end
|
39
|
+
|
40
|
+
tests('should retrieve all datacenters').succeeds do
|
41
|
+
datacenters = compute.datacenters.all
|
42
|
+
|
43
|
+
!datacenters.empty?
|
44
|
+
end
|
45
|
+
|
46
|
+
tests('should retrieve all locations').succeeds do
|
47
|
+
locations = compute.locations.all
|
48
|
+
|
49
|
+
!locations.empty?
|
50
|
+
end
|
51
|
+
|
52
|
+
tests('should retrieve a location by id').succeeds do
|
53
|
+
location = compute.locations.get('us/las')
|
54
|
+
|
55
|
+
location.name == 'lasvegas'
|
56
|
+
end
|
57
|
+
|
58
|
+
tests('should create a volume').succeeds do
|
59
|
+
volume = compute.volumes.create(:datacenter_id => @datacenter_id,
|
60
|
+
:name => 'fog-demo-volume',
|
61
|
+
:size => 5,
|
62
|
+
:licence_type => 'OTHER',
|
63
|
+
:type => 'HDD',
|
64
|
+
:availability_zone => 'AUTO')
|
65
|
+
volume.wait_for { ready? }
|
66
|
+
|
67
|
+
@volume_id = volume.id
|
68
|
+
|
69
|
+
volume.name == 'fog-demo-volume'
|
70
|
+
volume.size == 5
|
71
|
+
volume.type == 'HDD'
|
72
|
+
volume.licence_type == 'OTHER'
|
73
|
+
end
|
74
|
+
|
75
|
+
tests('should retrieve a volume by id').succeeds do
|
76
|
+
volume = compute.volumes.get(@datacenter_id, @volume_id)
|
77
|
+
|
78
|
+
volume.name == 'fog-demo-volume'
|
79
|
+
volume.size == 5
|
80
|
+
volume.type == 'HDD'
|
81
|
+
volume.licence_type == 'OTHER'
|
82
|
+
end
|
83
|
+
|
84
|
+
tests('should update a volume').succeeds do
|
85
|
+
volume = compute.volumes.get(@datacenter_id, @volume_id)
|
86
|
+
volume.name = volume.name + ' - updated'
|
87
|
+
volume.update
|
88
|
+
|
89
|
+
volume.wait_for { ready? }
|
90
|
+
|
91
|
+
volume.name == 'fog-demo-volume - updated'
|
92
|
+
end
|
93
|
+
|
94
|
+
tests('should retrieve all volumes').succeeds do
|
95
|
+
volumes = compute.volumes.all(@datacenter_id)
|
96
|
+
|
97
|
+
!volumes.empty?
|
98
|
+
end
|
99
|
+
|
100
|
+
tests('should create a volume snapshot').succeeds do
|
101
|
+
volume = compute.volumes.get(@datacenter_id, @volume_id)
|
102
|
+
|
103
|
+
volume.create_snapshot('fog-demo-snapshot', 'part of fog models test suite') == true
|
104
|
+
volume.reload
|
105
|
+
end
|
106
|
+
|
107
|
+
tests('should retrieve all snapshots').succeeds do
|
108
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
109
|
+
|
110
|
+
snapshots = compute.snapshots.all
|
111
|
+
|
112
|
+
!snapshots.empty?
|
113
|
+
|
114
|
+
snapshot = snapshots.find do |snp|
|
115
|
+
snp.name == 'fog-demo-snapshot'
|
116
|
+
end
|
117
|
+
|
118
|
+
@snapshot_id = snapshot.id
|
119
|
+
end
|
120
|
+
|
121
|
+
tests('should retrieve a snapshot by id').succeeds do
|
122
|
+
snapshot = compute.snapshots.get(@snapshot_id)
|
123
|
+
|
124
|
+
snapshot.name == 'fog-demo-snapshot'
|
125
|
+
end
|
126
|
+
|
127
|
+
tests('should update a snapshot').succeeds do
|
128
|
+
snapshot = compute.snapshots.get(@snapshot_id)
|
129
|
+
|
130
|
+
snapshot.name = snapshot.name + ' - updated'
|
131
|
+
snapshot.update
|
132
|
+
|
133
|
+
snapshot.name == 'fog-demo-snapshot - updated'
|
134
|
+
end
|
135
|
+
|
136
|
+
tests('should restore a volume snapshot').succeeds do
|
137
|
+
volume = compute.volumes.get(@datacenter_id, @volume_id)
|
138
|
+
|
139
|
+
volume.restore_snapshot(@snapshot_id) == true
|
140
|
+
end
|
141
|
+
|
142
|
+
tests('should retrieve all images').succeeds do
|
143
|
+
images = compute.images.all
|
144
|
+
|
145
|
+
!images.empty?
|
146
|
+
|
147
|
+
image = images.find do |img|
|
148
|
+
img.image_type == 'CDROM' &&
|
149
|
+
img.licence_type == 'LINUX'
|
150
|
+
end
|
151
|
+
|
152
|
+
@image_id = image.id
|
153
|
+
end
|
154
|
+
|
155
|
+
tests('should retrieve an image by id').succeeds do
|
156
|
+
image = compute.images.get(@image_id)
|
157
|
+
|
158
|
+
image.image_type == 'CDROM'
|
159
|
+
image.licence_type == 'LINUX'
|
160
|
+
end
|
161
|
+
|
162
|
+
if ENV["FOG_MOCK"] == "true"
|
163
|
+
tests('should update an image').succeeds do
|
164
|
+
image = compute.images.get(@image_id)
|
165
|
+
image.licence_type = 'UNKNOWN'
|
166
|
+
image.update
|
167
|
+
|
168
|
+
image.licence_type == 'UNKNOWN'
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
tests('should create a server').succeeds do
|
173
|
+
server = compute.servers.create(:datacenter_id => @datacenter_id,
|
174
|
+
:name => 'fog-demo-server',
|
175
|
+
:cores => 2,
|
176
|
+
:ram => 2048,
|
177
|
+
:licenceType => 'OTHER')
|
178
|
+
server.wait_for { ready? }
|
179
|
+
|
180
|
+
@server_id = server.id
|
181
|
+
|
182
|
+
server.name == 'fog-demo-server'
|
183
|
+
server.cores == 2
|
184
|
+
server.ram == 2048
|
185
|
+
end
|
186
|
+
|
187
|
+
tests('should retrieve a server by id').succeeds do
|
188
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
189
|
+
|
190
|
+
server.name == 'fog-demo-server'
|
191
|
+
server.cores == 2
|
192
|
+
server.ram == 2048
|
193
|
+
end
|
194
|
+
|
195
|
+
tests('should retrieve all servers').succeeds do
|
196
|
+
servers = compute.servers.all(@datacenter_id)
|
197
|
+
|
198
|
+
!servers.empty?
|
199
|
+
end
|
200
|
+
|
201
|
+
tests('should update a server').succeeds do
|
202
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
203
|
+
|
204
|
+
server.name = server.name + ' - updated'
|
205
|
+
server.update
|
206
|
+
|
207
|
+
server.wait_for { ready? }
|
208
|
+
|
209
|
+
server.name == 'fog-demo-server - updated'
|
210
|
+
end
|
211
|
+
|
212
|
+
tests('should attach a volume to the server').succeeds do
|
213
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
214
|
+
|
215
|
+
volume = server.attach_volume(@volume_id)
|
216
|
+
|
217
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
218
|
+
|
219
|
+
volume['id'] == @volume_id
|
220
|
+
end
|
221
|
+
|
222
|
+
tests('should retrieve all attached volumes').succeeds do
|
223
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
224
|
+
|
225
|
+
volumes = server.list_volumes
|
226
|
+
end
|
227
|
+
|
228
|
+
tests('should retrieve an attached volume').succeeds do
|
229
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
230
|
+
|
231
|
+
volume = server.get_attached_volume(@volume_id)
|
232
|
+
end
|
233
|
+
|
234
|
+
tests('should detach a volume from the server').succeeds do
|
235
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
236
|
+
|
237
|
+
server.detach_volume(@volume_id)
|
238
|
+
end
|
239
|
+
|
240
|
+
tests('should attach a CD-ROM to the server').succeeds do
|
241
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
242
|
+
|
243
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
244
|
+
|
245
|
+
cdrom = server.attach_cdrom(@image_id)
|
246
|
+
|
247
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
248
|
+
|
249
|
+
@cdrom_id = cdrom['id']
|
250
|
+
end
|
251
|
+
|
252
|
+
tests('should retrieve all attached CD-ROMs').succeeds do
|
253
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
254
|
+
|
255
|
+
cdroms = server.list_cdroms
|
256
|
+
end
|
257
|
+
|
258
|
+
if ENV["FOG_MOCK"] != "true"
|
259
|
+
tests('should detach a CD-ROM from the server').succeeds do
|
260
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
261
|
+
|
262
|
+
if !server.list_cdroms['items'].empty?
|
263
|
+
server.detach_cdrom(@image_id)
|
264
|
+
else
|
265
|
+
server.list_cdroms
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
tests('should reboot a server').succeeds do
|
271
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
272
|
+
|
273
|
+
server.reboot
|
274
|
+
end
|
275
|
+
|
276
|
+
tests('should stop a server').succeeds do
|
277
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
278
|
+
|
279
|
+
server.stop
|
280
|
+
end
|
281
|
+
|
282
|
+
tests('should start a server').succeeds do
|
283
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
284
|
+
|
285
|
+
server.stop
|
286
|
+
end
|
287
|
+
|
288
|
+
tests('should create a lan').succeeds do
|
289
|
+
lan = compute.lans.create(:datacenter_id => @datacenter_id,
|
290
|
+
:name => 'fog-demo-lan',
|
291
|
+
:public => false)
|
292
|
+
|
293
|
+
@lan_id = lan.id
|
294
|
+
|
295
|
+
lan.name == 'fog-demo-lan'
|
296
|
+
end
|
297
|
+
|
298
|
+
tests('should retrieve all lans').succeeds do
|
299
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
300
|
+
|
301
|
+
lans = compute.lans.all(@datacenter_id)
|
302
|
+
end
|
303
|
+
|
304
|
+
tests('should retrieve a lan by id').succeeds do
|
305
|
+
lan = compute.lans.get(@datacenter_id, @lan_id)
|
306
|
+
|
307
|
+
lan.name == 'fog-demo-lan'
|
308
|
+
end
|
309
|
+
|
310
|
+
tests('should update a lan').succeeds do
|
311
|
+
lan = compute.lans.get(@datacenter_id, @lan_id)
|
312
|
+
lan.name == lan.name + ' - updated'
|
313
|
+
lan.update
|
314
|
+
end
|
315
|
+
|
316
|
+
tests('should create a NIC').succeeds do
|
317
|
+
nic = compute.nics.create(:datacenter_id => @datacenter_id,
|
318
|
+
:server_id => @server_id,
|
319
|
+
:lan => @lan_id,
|
320
|
+
:name => 'fog-demo-nic',
|
321
|
+
:nat => false)
|
322
|
+
|
323
|
+
@nic_id = nic.id
|
324
|
+
|
325
|
+
nic.name == 'fog-demo-nic'
|
326
|
+
end
|
327
|
+
|
328
|
+
tests('should retrieve all NICs').succeeds do
|
329
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
330
|
+
|
331
|
+
nics = compute.nics.all(@datacenter_id, @server_id)
|
332
|
+
end
|
333
|
+
|
334
|
+
tests('should retrieve a NIC by id').succeeds do
|
335
|
+
nic = compute.nics.get(@datacenter_id, @server_id, @nic_id)
|
336
|
+
|
337
|
+
nic.name == 'fog-demo-nic'
|
338
|
+
end
|
339
|
+
|
340
|
+
tests('should update a NIC').succeeds do
|
341
|
+
nic = compute.nics.get(@datacenter_id, @server_id, @nic_id)
|
342
|
+
nic.name = nic.name + ' - updated'
|
343
|
+
nic.update
|
344
|
+
end
|
345
|
+
|
346
|
+
tests('should create a load balancer').succeeds do
|
347
|
+
load_balancer = compute.load_balancers.create(:datacenter_id => @datacenter_id,
|
348
|
+
:name => 'fog-demo-load-balancer')
|
349
|
+
|
350
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
351
|
+
|
352
|
+
@load_balancer_id = load_balancer.id
|
353
|
+
|
354
|
+
load_balancer.name == 'fog-demo-load-balancer'
|
355
|
+
end
|
356
|
+
|
357
|
+
tests('should retrieve a load balancer by id').succeeds do
|
358
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
359
|
+
|
360
|
+
load_balancer.name == 'fog-demo-load-balancer'
|
361
|
+
end
|
362
|
+
|
363
|
+
tests('should retrieve all load balancers').succeeds do
|
364
|
+
load_balancers = compute.load_balancers.all(@datacenter_id)
|
365
|
+
|
366
|
+
!load_balancers.empty?
|
367
|
+
end
|
368
|
+
|
369
|
+
tests('should update a load balancer').succeeds do
|
370
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
371
|
+
load_balancer.name = load_balancer.name + ' - updated'
|
372
|
+
load_balancer.update
|
373
|
+
end
|
374
|
+
|
375
|
+
tests('should associate a NIC to a load balancer').succeeds do
|
376
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
377
|
+
nic = load_balancer.associate_nic(@nic_id)
|
378
|
+
|
379
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
380
|
+
|
381
|
+
nic
|
382
|
+
end
|
383
|
+
|
384
|
+
tests('should retrieve all load balanced NICs').succeeds do
|
385
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
386
|
+
|
387
|
+
load_balancer.list_nics
|
388
|
+
end
|
389
|
+
|
390
|
+
tests('should retrieve a load balanced NIC').succeeds do
|
391
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
392
|
+
nic = load_balancer.get_nic(@nic_id)
|
393
|
+
|
394
|
+
nic['id'] == @nic_id
|
395
|
+
end
|
396
|
+
|
397
|
+
tests('should remove a NIC association from a load balancer').succeeds do
|
398
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
399
|
+
result = load_balancer.remove_nic_association(@nic_id)
|
400
|
+
|
401
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
402
|
+
|
403
|
+
result
|
404
|
+
end
|
405
|
+
|
406
|
+
tests('should update a load balancer').succeeds do
|
407
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
408
|
+
load_balancer.name = load_balancer.name + ' - updated'
|
409
|
+
load_balancer.update
|
410
|
+
end
|
411
|
+
|
412
|
+
tests('should create an ip block').succeeds do
|
413
|
+
ip_block = compute.ip_blocks.create(:location => 'de/fra',
|
414
|
+
:size => 1,
|
415
|
+
:name => 'fog-demo-ip-block')
|
416
|
+
|
417
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
418
|
+
|
419
|
+
@ip_block_id = ip_block.id
|
420
|
+
ip_block.name == 'fog-demo-ip-block'
|
421
|
+
end
|
422
|
+
|
423
|
+
tests('should retrieve an ip block by id').succeeds do
|
424
|
+
ip_block = compute.ip_blocks.get(@ip_block_id)
|
425
|
+
|
426
|
+
ip_block.name == 'fog-demo-ip-block'
|
427
|
+
end
|
428
|
+
|
429
|
+
tests('should retrieve all ip blocks').succeeds do
|
430
|
+
ip_blocks = compute.ip_blocks.all
|
431
|
+
|
432
|
+
!ip_blocks.empty?
|
433
|
+
end
|
434
|
+
|
435
|
+
tests('should create a firewall rule').succeeds do
|
436
|
+
firewall_rule = compute.firewall_rules.create(:datacenter_id => @datacenter_id,
|
437
|
+
:server_id => @server_id,
|
438
|
+
:nic_id => @nic_id,
|
439
|
+
:name => 'fog-demo-firewall-rule',
|
440
|
+
:protocol => 'TCP')
|
441
|
+
|
442
|
+
sleep(60) if ENV["FOG_MOCK"] != "true"
|
443
|
+
|
444
|
+
@firewall_rule_id = firewall_rule.id
|
445
|
+
|
446
|
+
firewall_rule.name == 'fog-demo-firewall-rule'
|
447
|
+
end
|
448
|
+
|
449
|
+
tests('should retrieve a firewall rule').succeeds do
|
450
|
+
firewall_rule = compute.firewall_rules.get(@datacenter_id, @server_id, @nic_id, @firewall_rule_id)
|
451
|
+
|
452
|
+
firewall_rule.name == 'fog-demo-firewall-rule'
|
453
|
+
end
|
454
|
+
|
455
|
+
tests('should retrieve all firewall rules').succeeds do
|
456
|
+
firewall_rules = compute.firewall_rules.all(@datacenter_id, @server_id, @nic_id)
|
457
|
+
|
458
|
+
!firewall_rules.empty?
|
459
|
+
end
|
460
|
+
|
461
|
+
tests('should update a firewall rule').succeeds do
|
462
|
+
firewall_rule = compute.firewall_rules.get(@datacenter_id, @server_id, @nic_id, @firewall_rule_id)
|
463
|
+
firewall_rule.name = firewall_rule.name + ' - updated'
|
464
|
+
firewall_rule.update
|
465
|
+
end
|
466
|
+
|
467
|
+
tests('should delete a firewall rule').succeeds do
|
468
|
+
firewall_rule = compute.firewall_rules.get(@datacenter_id, @server_id, @nic_id, @firewall_rule_id)
|
469
|
+
|
470
|
+
firewall_rule.delete
|
471
|
+
end
|
472
|
+
|
473
|
+
tests('should delete a NIC').succeeds do
|
474
|
+
nic = compute.nics.get(@datacenter_id, @server_id, @nic_id)
|
475
|
+
|
476
|
+
nic.delete
|
477
|
+
end
|
478
|
+
|
479
|
+
tests('should delete a lan').succeeds do
|
480
|
+
lan = compute.lans.get(@datacenter_id, @lan_id)
|
481
|
+
|
482
|
+
lan.delete
|
483
|
+
end
|
484
|
+
|
485
|
+
tests('should delete a load balancer').succeeds do
|
486
|
+
load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
|
487
|
+
|
488
|
+
load_balancer.delete
|
489
|
+
end
|
490
|
+
|
491
|
+
tests('should delete an ip block').succeeds do
|
492
|
+
ip_block = compute.ip_blocks.get(@ip_block_id)
|
493
|
+
|
494
|
+
ip_block.delete
|
495
|
+
end
|
496
|
+
|
497
|
+
tests('should delete a server').succeeds do
|
498
|
+
server = compute.servers.get(@datacenter_id, @server_id)
|
499
|
+
|
500
|
+
server.delete
|
501
|
+
end
|
502
|
+
|
503
|
+
tests('should delete a volume').succeeds do
|
504
|
+
volume = compute.volumes.get(@datacenter_id, @volume_id)
|
505
|
+
|
506
|
+
volume.delete
|
507
|
+
end
|
508
|
+
|
509
|
+
if ENV["FOG_MOCK"] == "true"
|
510
|
+
tests('should delete an image').succeeds do
|
511
|
+
image = compute.images.get(@image_id)
|
512
|
+
|
513
|
+
image.delete
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
517
|
+
tests('should delete a snapshot').succeeds do
|
518
|
+
snapshot = compute.snapshots.get(@snapshot_id)
|
519
|
+
|
520
|
+
snapshot.delete
|
521
|
+
end
|
522
|
+
|
523
|
+
tests('should delete a datacenter').succeeds do
|
524
|
+
datacenter = compute.datacenters.get(@datacenter_id)
|
525
|
+
|
526
|
+
datacenter.delete
|
527
|
+
end
|
528
|
+
end
|
529
|
+
end
|