fog-profitbricks 2.0.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/.travis.yml +11 -4
  4. data/README.md +8 -5
  5. data/Rakefile +1 -1
  6. data/examples/pb_demo.rb +49 -49
  7. data/fog-profitbricks.gemspec +4 -5
  8. data/gemfiles/Gemfile.1.9.2+ +1 -0
  9. data/lib/fog/bin/profitbricks.rb +5 -5
  10. data/lib/fog/profitbricks.rb +3 -3
  11. data/lib/fog/profitbricks/compute.rb +209 -204
  12. data/lib/fog/profitbricks/helpers/compute/data_helper.rb +1 -1
  13. data/lib/fog/profitbricks/models/compute/datacenter.rb +1 -1
  14. data/lib/fog/profitbricks/models/compute/datacenters.rb +6 -7
  15. data/lib/fog/profitbricks/models/compute/firewall_rule.rb +2 -2
  16. data/lib/fog/profitbricks/models/compute/firewall_rules.rb +5 -8
  17. data/lib/fog/profitbricks/models/compute/flavors.rb +1 -4
  18. data/lib/fog/profitbricks/models/compute/image.rb +4 -0
  19. data/lib/fog/profitbricks/models/compute/images.rb +2 -5
  20. data/lib/fog/profitbricks/models/compute/ip_block.rb +1 -1
  21. data/lib/fog/profitbricks/models/compute/ip_blocks.rb +3 -8
  22. data/lib/fog/profitbricks/models/compute/lan.rb +1 -1
  23. data/lib/fog/profitbricks/models/compute/lans.rb +4 -7
  24. data/lib/fog/profitbricks/models/compute/load_balancer.rb +6 -7
  25. data/lib/fog/profitbricks/models/compute/load_balancers.rb +5 -9
  26. data/lib/fog/profitbricks/models/compute/locations.rb +2 -5
  27. data/lib/fog/profitbricks/models/compute/nic.rb +6 -3
  28. data/lib/fog/profitbricks/models/compute/nics.rb +2 -5
  29. data/lib/fog/profitbricks/models/compute/regions.rb +1 -4
  30. data/lib/fog/profitbricks/models/compute/request.rb +0 -1
  31. data/lib/fog/profitbricks/models/compute/requests.rb +2 -4
  32. data/lib/fog/profitbricks/models/compute/server.rb +10 -13
  33. data/lib/fog/profitbricks/models/compute/servers.rb +3 -6
  34. data/lib/fog/profitbricks/models/compute/snapshot.rb +2 -2
  35. data/lib/fog/profitbricks/models/compute/snapshots.rb +3 -6
  36. data/lib/fog/profitbricks/models/compute/volume.rb +11 -9
  37. data/lib/fog/profitbricks/models/compute/volumes.rb +3 -6
  38. data/lib/fog/profitbricks/requests/compute/associate_nic_to_load_balancer.rb +26 -13
  39. data/lib/fog/profitbricks/requests/compute/attach_cdrom.rb +25 -16
  40. data/lib/fog/profitbricks/requests/compute/attach_volume.rb +25 -16
  41. data/lib/fog/profitbricks/requests/compute/create_datacenter.rb +22 -23
  42. data/lib/fog/profitbricks/requests/compute/create_firewall_rule.rb +24 -26
  43. data/lib/fog/profitbricks/requests/compute/create_flavor.rb +34 -34
  44. data/lib/fog/profitbricks/requests/compute/create_ip_block.rb +18 -20
  45. data/lib/fog/profitbricks/requests/compute/create_lan.rb +151 -150
  46. data/lib/fog/profitbricks/requests/compute/create_load_balancer.rb +67 -26
  47. data/lib/fog/profitbricks/requests/compute/create_nic.rb +24 -26
  48. data/lib/fog/profitbricks/requests/compute/create_server.rb +70 -61
  49. data/lib/fog/profitbricks/requests/compute/create_volume.rb +122 -122
  50. data/lib/fog/profitbricks/requests/compute/create_volume_snapshot.rb +42 -45
  51. data/lib/fog/profitbricks/requests/compute/delete_datacenter.rb +34 -36
  52. data/lib/fog/profitbricks/requests/compute/delete_firewall_rule.rb +8 -11
  53. data/lib/fog/profitbricks/requests/compute/delete_image.rb +7 -9
  54. data/lib/fog/profitbricks/requests/compute/delete_ip_block.rb +8 -10
  55. data/lib/fog/profitbricks/requests/compute/delete_lan.rb +7 -9
  56. data/lib/fog/profitbricks/requests/compute/delete_load_balancer.rb +8 -10
  57. data/lib/fog/profitbricks/requests/compute/delete_nic.rb +7 -10
  58. data/lib/fog/profitbricks/requests/compute/delete_server.rb +6 -10
  59. data/lib/fog/profitbricks/requests/compute/delete_snapshot.rb +7 -10
  60. data/lib/fog/profitbricks/requests/compute/delete_volume.rb +36 -38
  61. data/lib/fog/profitbricks/requests/compute/detach_cdrom.rb +11 -13
  62. data/lib/fog/profitbricks/requests/compute/detach_volume.rb +16 -13
  63. data/lib/fog/profitbricks/requests/compute/get_all_datacenters.rb +1 -1
  64. data/lib/fog/profitbricks/requests/compute/get_all_firewall_rules.rb +6 -7
  65. data/lib/fog/profitbricks/requests/compute/get_all_flavors.rb +72 -72
  66. data/lib/fog/profitbricks/requests/compute/get_all_images.rb +62 -62
  67. data/lib/fog/profitbricks/requests/compute/get_all_ip_blocks.rb +5 -5
  68. data/lib/fog/profitbricks/requests/compute/get_all_lans.rb +113 -113
  69. data/lib/fog/profitbricks/requests/compute/get_all_load_balanced_nics.rb +15 -9
  70. data/lib/fog/profitbricks/requests/compute/get_all_load_balancers.rb +9 -9
  71. data/lib/fog/profitbricks/requests/compute/get_all_locations.rb +6 -6
  72. data/lib/fog/profitbricks/requests/compute/get_all_nic.rb +94 -94
  73. data/lib/fog/profitbricks/requests/compute/get_all_requests.rb +38 -38
  74. data/lib/fog/profitbricks/requests/compute/get_all_servers.rb +8 -9
  75. data/lib/fog/profitbricks/requests/compute/get_all_snapshots.rb +4 -4
  76. data/lib/fog/profitbricks/requests/compute/get_all_volumes.rb +71 -71
  77. data/lib/fog/profitbricks/requests/compute/get_attached_cdrom.rb +11 -11
  78. data/lib/fog/profitbricks/requests/compute/get_attached_volume.rb +16 -11
  79. data/lib/fog/profitbricks/requests/compute/get_datacenter.rb +4 -6
  80. data/lib/fog/profitbricks/requests/compute/get_firewall_rule.rb +8 -11
  81. data/lib/fog/profitbricks/requests/compute/get_flavor.rb +9 -9
  82. data/lib/fog/profitbricks/requests/compute/get_image.rb +7 -9
  83. data/lib/fog/profitbricks/requests/compute/get_ip_block.rb +8 -10
  84. data/lib/fog/profitbricks/requests/compute/get_lan.rb +7 -10
  85. data/lib/fog/profitbricks/requests/compute/get_load_balanced_nic.rb +16 -12
  86. data/lib/fog/profitbricks/requests/compute/get_load_balancer.rb +7 -9
  87. data/lib/fog/profitbricks/requests/compute/get_location.rb +7 -9
  88. data/lib/fog/profitbricks/requests/compute/get_nic.rb +8 -11
  89. data/lib/fog/profitbricks/requests/compute/get_request.rb +55 -57
  90. data/lib/fog/profitbricks/requests/compute/get_request_status.rb +44 -46
  91. data/lib/fog/profitbricks/requests/compute/get_server.rb +7 -10
  92. data/lib/fog/profitbricks/requests/compute/get_snapshot.rb +7 -9
  93. data/lib/fog/profitbricks/requests/compute/get_volume.rb +7 -9
  94. data/lib/fog/profitbricks/requests/compute/list_attached_cdroms.rb +8 -8
  95. data/lib/fog/profitbricks/requests/compute/list_attached_volumes.rb +18 -8
  96. data/lib/fog/profitbricks/requests/compute/reboot_server.rb +7 -11
  97. data/lib/fog/profitbricks/requests/compute/remove_nic_association.rb +9 -11
  98. data/lib/fog/profitbricks/requests/compute/restore_volume_snapshot.rb +15 -17
  99. data/lib/fog/profitbricks/requests/compute/start_server.rb +7 -11
  100. data/lib/fog/profitbricks/requests/compute/stop_server.rb +7 -11
  101. data/lib/fog/profitbricks/requests/compute/update_datacenter.rb +20 -15
  102. data/lib/fog/profitbricks/requests/compute/update_firewall_rule.rb +9 -11
  103. data/lib/fog/profitbricks/requests/compute/update_image.rb +15 -15
  104. data/lib/fog/profitbricks/requests/compute/update_lan.rb +6 -8
  105. data/lib/fog/profitbricks/requests/compute/update_load_balancer.rb +10 -12
  106. data/lib/fog/profitbricks/requests/compute/update_nic.rb +10 -12
  107. data/lib/fog/profitbricks/requests/compute/update_server.rb +10 -13
  108. data/lib/fog/profitbricks/requests/compute/update_snapshot.rb +10 -13
  109. data/lib/fog/profitbricks/requests/compute/update_volume.rb +10 -13
  110. data/lib/fog/profitbricks/version.rb +1 -1
  111. data/spec/minitest_helper.rb +1 -3
  112. data/tests/helpers/formats_helper.rb +8 -8
  113. data/tests/profitbricks/models/compute/compute_tests.rb +529 -0
  114. data/tests/profitbricks/requests/compute/composite_create_tests.rb +16 -83
  115. data/tests/profitbricks/requests/compute/flavor_tests.rb +1 -4
  116. data/tests/profitbricks/requests/compute/location_tests.rb +14 -17
  117. data/tests/profitbricks/requests/compute/nic_tests.rb +60 -70
  118. data/tests/profitbricks/requests/compute/request_tests.rb +1 -3
  119. data/tests/profitbricks/requests/compute/server_tests.rb +163 -161
  120. 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
- :expects => [202],
60
- :method => 'PATCH',
61
- :path => "/images/#{image_id}",
62
- :body => Fog::JSON.encode(options)
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 = self.data[:images]["items"].find {
72
- |image| image["id"] == image_id
73
- }
74
- img['name'] = options[:name]
75
- img['description'] = options[:description]
76
- img['discVirtioHotPlug'] = options[:disc_virtio_hotplug]
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 Fog::Errors::NotFound.new("The requested resource could not be found")
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 = self.data[:lans]['items'].find {
109
- |attrib| attrib['datacenter_id'] == datacenter_id && attrib['id'] == lan_id
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.new('The requested LAN resource could not be found')
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
- :expects => [202],
40
- :method => 'PATCH',
41
- :path => "/datacenters/#{datacenter_id}/loadbalancers/#{load_balancer_id}",
42
- :body => Fog::JSON.encode(options)
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 = self.data[:load_balancers]['items'].find {
52
- |attribute| attribute["datacenter_id"] == datacenter_id && attribute["id"] == load_balancer_id
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.new('The requested resource could not be found')
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
- :expects => [202],
77
- :method => 'PATCH',
78
- :path => "/datacenters/#{datacenter_id}/servers/#{server_id}/nics/#{nic_id}",
79
- :body => Fog::JSON.encode(options)
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 = self.data[:nics]['items'].find {
89
- |attribute| attribute["datacenter_id"] == datacenter_id && attribute["server_id"] == server_id && attribute["id"] == nic_id
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.new('The requested resource could not be found')
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
- :expects => [202],
117
- :method => 'PATCH',
118
- :path => "/datacenters/#{datacenter_id}/servers/#{server_id}",
119
- :body => Fog::JSON.encode(properties)
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(datacenter_id, server_id, properties={})
128
-
129
- if server = self.data[:servers]['items'].find {
130
- |attrib| attrib['id'] == server_id
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.new('The requested server resource could not be found')
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
- :expects => [202],
59
- :method => 'PATCH',
60
- :path => "/snapshots/#{snapshot_id}",
61
- :body => Fog::JSON.encode(options)
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 = self.data[:snapshots]['items'].find {
71
- |snpsht| snpsht["id"] == snapshot_id
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.new('The requested resource could not be found')
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
- :expects => [202],
52
- :method => 'PATCH',
53
- :path => "/datacenters/#{datacenter_id}/volumes/#{volume_id}",
54
- :body => Fog::JSON.encode(options)
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
- if volume = self.data[:volumes]['items'].find {
65
- |vlm| vlm["id"] == volume_id && vlm["datacenter_id"] == datacenter_id
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 Fog::Errors::NotFound.new('The requested resource could not be found')
67
+ raise Excon::Error::HTTPStatus, 'The requested resource could not be found'
71
68
  end
72
69
 
73
70
  response = Excon::Response.new
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module ProfitBricks
3
- VERSION = "2.0.1"
3
+ VERSION = "3.0.0".freeze
4
4
  end
5
5
  end
@@ -28,6 +28,4 @@ end
28
28
 
29
29
  require File.join(File.dirname(__FILE__), '../lib/fog/profitbricks')
30
30
 
31
- if ENV['COVERAGE']
32
- Coveralls.wear!
33
- end
31
+ Coveralls.wear! if ENV['COVERAGE']
@@ -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