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.
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