fog-profitbricks 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.rubocop.yml +21 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +25 -0
  7. data/CONTRIBUTING.md +18 -0
  8. data/CONTRIBUTORS.md +2 -0
  9. data/Gemfile +4 -0
  10. data/LICENSE.md +20 -0
  11. data/README.md +29 -0
  12. data/Rakefile +21 -0
  13. data/examples/pb_demo.rb +53 -0
  14. data/fog-profitbricks.gemspec +31 -0
  15. data/gemfiles/Gemfile.1.8.7 +7 -0
  16. data/gemfiles/Gemfile.1.9.2+ +6 -0
  17. data/lib/fog/bin/profitbricks.rb +29 -0
  18. data/lib/fog/profitbricks.rb +13 -0
  19. data/lib/fog/profitbricks/compute.rb +215 -0
  20. data/lib/fog/profitbricks/core.rb +18 -0
  21. data/lib/fog/profitbricks/models/compute/datacenter.rb +59 -0
  22. data/lib/fog/profitbricks/models/compute/datacenters.rb +24 -0
  23. data/lib/fog/profitbricks/models/compute/flavor.rb +27 -0
  24. data/lib/fog/profitbricks/models/compute/flavors.rb +24 -0
  25. data/lib/fog/profitbricks/models/compute/image.rb +30 -0
  26. data/lib/fog/profitbricks/models/compute/images.rb +23 -0
  27. data/lib/fog/profitbricks/models/compute/interface.rb +64 -0
  28. data/lib/fog/profitbricks/models/compute/interfaces.rb +24 -0
  29. data/lib/fog/profitbricks/models/compute/region.rb +15 -0
  30. data/lib/fog/profitbricks/models/compute/regions.rb +24 -0
  31. data/lib/fog/profitbricks/models/compute/server.rb +107 -0
  32. data/lib/fog/profitbricks/models/compute/servers.rb +23 -0
  33. data/lib/fog/profitbricks/models/compute/volume.rb +74 -0
  34. data/lib/fog/profitbricks/models/compute/volumes.rb +24 -0
  35. data/lib/fog/profitbricks/parsers/base.rb +49 -0
  36. data/lib/fog/profitbricks/parsers/compute/clear_data_center.rb +22 -0
  37. data/lib/fog/profitbricks/parsers/compute/connect_storage_to_server.rb +22 -0
  38. data/lib/fog/profitbricks/parsers/compute/create_data_center.rb +22 -0
  39. data/lib/fog/profitbricks/parsers/compute/create_nic.rb +22 -0
  40. data/lib/fog/profitbricks/parsers/compute/create_server.rb +22 -0
  41. data/lib/fog/profitbricks/parsers/compute/create_storage.rb +22 -0
  42. data/lib/fog/profitbricks/parsers/compute/delete_data_center.rb +20 -0
  43. data/lib/fog/profitbricks/parsers/compute/delete_nic.rb +22 -0
  44. data/lib/fog/profitbricks/parsers/compute/delete_server.rb +22 -0
  45. data/lib/fog/profitbricks/parsers/compute/delete_storage.rb +22 -0
  46. data/lib/fog/profitbricks/parsers/compute/disconnect_storage_from_server.rb +22 -0
  47. data/lib/fog/profitbricks/parsers/compute/get_all_data_centers.rb +26 -0
  48. data/lib/fog/profitbricks/parsers/compute/get_all_images.rb +30 -0
  49. data/lib/fog/profitbricks/parsers/compute/get_all_nic.rb +30 -0
  50. data/lib/fog/profitbricks/parsers/compute/get_all_servers.rb +56 -0
  51. data/lib/fog/profitbricks/parsers/compute/get_all_storages.rb +33 -0
  52. data/lib/fog/profitbricks/parsers/compute/get_data_center.rb +23 -0
  53. data/lib/fog/profitbricks/parsers/compute/get_data_center_state.rb +20 -0
  54. data/lib/fog/profitbricks/parsers/compute/get_image.rb +26 -0
  55. data/lib/fog/profitbricks/parsers/compute/get_nic.rb +27 -0
  56. data/lib/fog/profitbricks/parsers/compute/get_server.rb +55 -0
  57. data/lib/fog/profitbricks/parsers/compute/get_storage.rb +30 -0
  58. data/lib/fog/profitbricks/parsers/compute/reset_server.rb +20 -0
  59. data/lib/fog/profitbricks/parsers/compute/set_internet_access.rb +22 -0
  60. data/lib/fog/profitbricks/parsers/compute/update_data_center.rb +22 -0
  61. data/lib/fog/profitbricks/parsers/compute/update_nic.rb +22 -0
  62. data/lib/fog/profitbricks/parsers/compute/update_server.rb +22 -0
  63. data/lib/fog/profitbricks/parsers/compute/update_storage.rb +22 -0
  64. data/lib/fog/profitbricks/requests/compute/clear_data_center.rb +53 -0
  65. data/lib/fog/profitbricks/requests/compute/connect_storage_to_server.rb +85 -0
  66. data/lib/fog/profitbricks/requests/compute/create_data_center.rb +64 -0
  67. data/lib/fog/profitbricks/requests/compute/create_flavor.rb +40 -0
  68. data/lib/fog/profitbricks/requests/compute/create_nic.rb +81 -0
  69. data/lib/fog/profitbricks/requests/compute/create_server.rb +107 -0
  70. data/lib/fog/profitbricks/requests/compute/create_storage.rb +98 -0
  71. data/lib/fog/profitbricks/requests/compute/delete_data_center.rb +62 -0
  72. data/lib/fog/profitbricks/requests/compute/delete_nic.rb +66 -0
  73. data/lib/fog/profitbricks/requests/compute/delete_server.rb +66 -0
  74. data/lib/fog/profitbricks/requests/compute/delete_storage.rb +66 -0
  75. data/lib/fog/profitbricks/requests/compute/disconnect_storage_from_server.rb +78 -0
  76. data/lib/fog/profitbricks/requests/compute/get_all_data_centers.rb +32 -0
  77. data/lib/fog/profitbricks/requests/compute/get_all_flavors.rb +77 -0
  78. data/lib/fog/profitbricks/requests/compute/get_all_images.rb +67 -0
  79. data/lib/fog/profitbricks/requests/compute/get_all_locations.rb +44 -0
  80. data/lib/fog/profitbricks/requests/compute/get_all_nic.rb +55 -0
  81. data/lib/fog/profitbricks/requests/compute/get_all_servers.rb +58 -0
  82. data/lib/fog/profitbricks/requests/compute/get_all_storages.rb +58 -0
  83. data/lib/fog/profitbricks/requests/compute/get_data_center.rb +40 -0
  84. data/lib/fog/profitbricks/requests/compute/get_data_center_state.rb +43 -0
  85. data/lib/fog/profitbricks/requests/compute/get_flavor.rb +82 -0
  86. data/lib/fog/profitbricks/requests/compute/get_image.rb +71 -0
  87. data/lib/fog/profitbricks/requests/compute/get_location.rb +48 -0
  88. data/lib/fog/profitbricks/requests/compute/get_nic.rb +65 -0
  89. data/lib/fog/profitbricks/requests/compute/get_server.rb +100 -0
  90. data/lib/fog/profitbricks/requests/compute/get_storage.rb +65 -0
  91. data/lib/fog/profitbricks/requests/compute/reset_server.rb +51 -0
  92. data/lib/fog/profitbricks/requests/compute/set_internet_access.rb +61 -0
  93. data/lib/fog/profitbricks/requests/compute/start_server.rb +59 -0
  94. data/lib/fog/profitbricks/requests/compute/stop_server.rb +59 -0
  95. data/lib/fog/profitbricks/requests/compute/update_data_center.rb +55 -0
  96. data/lib/fog/profitbricks/requests/compute/update_nic.rb +76 -0
  97. data/lib/fog/profitbricks/requests/compute/update_server.rb +81 -0
  98. data/lib/fog/profitbricks/requests/compute/update_storage.rb +75 -0
  99. data/lib/fog/profitbricks/version.rb +5 -0
  100. data/spec/minitest_helper.rb +33 -0
  101. data/tests/helper.rb +19 -0
  102. data/tests/helpers/formats_helper.rb +23 -0
  103. data/tests/helpers/mock_helper.rb +8 -0
  104. data/tests/profitbricks/requests/compute/flavor_tests.rb +43 -0
  105. data/tests/profitbricks/requests/compute/image_tests.rb +50 -0
  106. data/tests/profitbricks/requests/compute/interface_tests.rb +101 -0
  107. data/tests/profitbricks/requests/compute/location_tests.rb +33 -0
  108. data/tests/profitbricks/requests/compute/server_tests.rb +246 -0
  109. metadata +293 -0
@@ -0,0 +1,98 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/create_storage'
6
+
7
+ # Create new virtual storage
8
+ #
9
+ # ==== Parameters
10
+ # * dataCenterId<~String> - Required, UUID of virtual data center
11
+ # * size<~Integer> - Required, size of virtual storage
12
+ # * options<~Hash>:
13
+ # * storageName<~String> - Optional, name of the new virtual storage
14
+ # * mountImageId<~String> - Optional, UUID of image
15
+ # * profitBricksImagePassword<~String> - Optional,
16
+ #
17
+ # ==== Returns
18
+ # * response<~Excon::Response>:
19
+ # * body<~Hash>:
20
+ # * createStorageResponse<~Hash>:
21
+ # * requestId<~String> - ID of request
22
+ # * dataCenterId<~String> - UUID of virtual data center
23
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
24
+ # * storageId<~String> - UUID of the new virtual storage
25
+ #
26
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/CreateStorage.html]
27
+ def create_storage(data_center_id, size, options={})
28
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
29
+ |xml| xml[:ws].createStorage {
30
+ xml.request {
31
+ xml.dataCenterId(data_center_id)
32
+ xml.size(size)
33
+ options.each { |key, value| xml.send(key, value) }
34
+ }
35
+ }
36
+ }
37
+
38
+ request(
39
+ :expects => [200],
40
+ :method => 'POST',
41
+ :body => soap_envelope.to_xml,
42
+ :parser =>
43
+ Fog::Parsers::Compute::ProfitBricks::CreateStorage.new
44
+ )
45
+ end
46
+ end
47
+
48
+ class Mock
49
+ def create_storage(data_center_id, size, options={})
50
+ response = Excon::Response.new
51
+ response.status = 200
52
+
53
+ if data_center = self.data[:datacenters].find {
54
+ |attrib| attrib['dataCenterId'] == data_center_id
55
+ }
56
+ data_center['dataCenterVersion'] += 1
57
+ else
58
+ raise Fog::Errors::NotFound.new('Data center resource could not be found')
59
+ end
60
+
61
+ if image = self.data[:images].find {
62
+ |attrib| attrib['imageId'] == options['mountImageId']
63
+ }
64
+ mount_image = {
65
+ 'imageId' => options['mountImageId'],
66
+ 'imageName' => image['imageName']
67
+ }
68
+ end
69
+
70
+ storage_id = Fog::UUID.uuid
71
+ storage = {
72
+ 'dataCenterId' => data_center_id,
73
+ 'dataCenterVersion' => data_center['dataCenterVersion'],
74
+ 'storageId' => storage_id,
75
+ 'size' => size,
76
+ 'storageName' => options['storageName'] || '',
77
+ 'mountImage' => mount_image || {},
78
+ 'provisioningState' => 'AVAILABLE',
79
+ 'creationTime' => Time.now,
80
+ 'lastModificationTime' => Time.now,
81
+ 'profitBricksImagePassword' => options['profitBricksImagePassword'] || ''
82
+ }
83
+
84
+ self.data[:volumes] << storage
85
+ response.body = {
86
+ 'createStorageResponse' => {
87
+ 'requestId' => Fog::Mock::random_numbers(7),
88
+ 'dataCenterId' => Fog::UUID.uuid,
89
+ 'dataCenterVersion' => 1,
90
+ 'storageId' => storage_id
91
+ }
92
+ }
93
+ response
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,62 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/delete_data_center'
6
+
7
+ # Delete virtual data center
8
+ #
9
+ # ==== Parameters
10
+ # * dataCenterId<~String> - UUID of the virtual data center
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * deleteDataCenterResponse<~Hash>:
16
+ # * requestId<~String> - ID of request
17
+ # * dataCenterId<~String> - UUID of virtual data center
18
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
19
+ #
20
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteDataCenter.html]
21
+ def delete_data_center(data_center_id)
22
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
23
+ |xml| xml[:ws].deleteDataCenter {
24
+ xml.dataCenterId(data_center_id)
25
+ }
26
+ }
27
+
28
+ request(
29
+ :expects => [200],
30
+ :method => 'POST',
31
+ :body => soap_envelope.to_xml,
32
+ :parser =>
33
+ Fog::Parsers::Compute::ProfitBricks::DeleteDataCenter.new
34
+ )
35
+ rescue Excon::Errors::InternalServerError => error
36
+ Fog::Errors::NotFound.new(error)
37
+ end
38
+ end
39
+
40
+ class Mock
41
+ def delete_data_center(data_center_id)
42
+ response = Excon::Response.new
43
+ response.status = 200
44
+
45
+ if data_center = self.data[:datacenters].find {
46
+ |attrib| attrib['dataCenterId'] == data_center_id
47
+ }
48
+ self.data[:datacenters].delete(data_center)
49
+ else
50
+ raise Fog::Errors::NotFound.new('The requested resource could not be found')
51
+ end
52
+
53
+ response.body = { 'deleteDataCenterResponse' => {
54
+ 'requestId' => data_center['requestId']
55
+ }
56
+ }
57
+ response
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,66 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/delete_nic'
6
+
7
+ # Delete virtual network interface
8
+ #
9
+ # ==== Parameters
10
+ # * nicId<~String> - UUID of the virtual network interface
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * deleteNicResponse<~Hash>:
16
+ # * requestId<~String> - ID of request
17
+ # * dataCenterId<~String> - UUID of virtual data center
18
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
19
+ #
20
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteNic.html]
21
+ def delete_nic(nic_id)
22
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
23
+ |xml| xml[:ws].deleteNic {
24
+ xml.nicId(nic_id)
25
+ }
26
+ }
27
+
28
+ request(
29
+ :expects => [200],
30
+ :method => 'POST',
31
+ :body => soap_envelope.to_xml,
32
+ :parser =>
33
+ Fog::Parsers::Compute::ProfitBricks::DeleteNic.new
34
+ )
35
+ rescue Excon::Errors::InternalServerError => error
36
+ Fog::Errors::NotFound.new(error)
37
+ end
38
+ end
39
+
40
+ class Mock
41
+ def delete_nic(nic_id)
42
+ response = Excon::Response.new
43
+ response.status = 200
44
+
45
+ if nic = self.data[:interfaces].find {
46
+ |attrib| attrib['nicId'] == nic_id
47
+ }
48
+ self.data[:interfaces].delete(nic)
49
+ else
50
+ raise Fog::Errors::NotFound.new(
51
+ 'The requested NIC could not be found'
52
+ )
53
+ end
54
+
55
+ response.body = { 'deleteNicResponse' => {
56
+ 'requestId' => Fog::Mock::random_numbers(7),
57
+ 'dataCenterId' => Fog::UUID.uuid,
58
+ 'dataCenterVersion' => 1,
59
+ }
60
+ }
61
+ response
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,66 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/delete_server'
6
+
7
+ # Delete virtual server
8
+ #
9
+ # ==== Parameters
10
+ # * serverId<~String> - UUID of the virtual server
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * deleteServerResponse<~Hash>:
16
+ # * requestId<~String> - ID of request
17
+ # * dataCenterId<~String> - UUID of virtual data center
18
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
19
+ #
20
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteServer.html]
21
+ def delete_server(server_id)
22
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
23
+ |xml| xml[:ws].deleteServer {
24
+ xml.serverId(server_id)
25
+ }
26
+ }
27
+
28
+ request(
29
+ :expects => [200],
30
+ :method => 'POST',
31
+ :body => soap_envelope.to_xml,
32
+ :parser =>
33
+ Fog::Parsers::Compute::ProfitBricks::DeleteServer.new
34
+ )
35
+ rescue Excon::Errors::InternalServerError => error
36
+ Fog::Errors::NotFound.new(error)
37
+ end
38
+ end
39
+
40
+ class Mock
41
+ def delete_server(server_id)
42
+
43
+ if server = self.data[:servers].find {
44
+ |attrib| attrib['serverId'] == server_id
45
+ }
46
+ self.data[:servers].delete(server)
47
+ else
48
+ raise Fog::Errors::NotFound.new(
49
+ 'The requested server resource could not be found'
50
+ )
51
+ end
52
+
53
+ response = Excon::Response.new
54
+ response.status = 200
55
+ response.body = { 'deleteServerResponse' => {
56
+ 'requestId' => Fog::Mock::random_numbers(7),
57
+ 'dataCenterId' => Fog::UUID.uuid,
58
+ 'dataCenterVersion' => 1,
59
+ }
60
+ }
61
+ response
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,66 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/delete_storage'
6
+
7
+ # Delete a virtual storage
8
+ #
9
+ # ==== Parameters
10
+ # * storageId<~String> -
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * deleteStorageResponse<~Hash>:
16
+ # * requestId<~String> - ID of request
17
+ # * dataCenterId<~String> - UUID of virtual data center
18
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
19
+ #
20
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteStorage.html]
21
+ def delete_storage(storage_id)
22
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
23
+ |xml| xml[:ws].deleteStorage {
24
+ xml.storageId(storage_id)
25
+ }
26
+ }
27
+
28
+ request(
29
+ :expects => [200],
30
+ :method => 'POST',
31
+ :body => soap_envelope.to_xml,
32
+ :parser =>
33
+ Fog::Parsers::Compute::ProfitBricks::DeleteStorage.new
34
+ )
35
+ rescue Excon::Errors::InternalServerError => error
36
+ Fog::Errors::NotFound.new(error)
37
+ end
38
+ end
39
+
40
+ class Mock
41
+ def delete_storage(storage_id)
42
+ response = Excon::Response.new
43
+ response.status = 200
44
+
45
+ if storage = self.data[:volumes].find {
46
+ |attrib| attrib['storageId'] == storage_id
47
+ }
48
+ self.data[:volumes].delete(storage)
49
+ else
50
+ raise Fog::Errors::NotFound.new(
51
+ 'The requested resource could not be found'
52
+ )
53
+ end
54
+
55
+ response.body = { 'deleteStorageResponse' => {
56
+ 'requestId' => Fog::Mock::random_numbers(7),
57
+ 'dataCenterId' => Fog::UUID.uuid,
58
+ 'dataCenterVersion' => 3
59
+ }
60
+ }
61
+ response
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,78 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/disconnect_storage_from_server'
6
+
7
+ # Disconnect virtual storage
8
+ #
9
+ # ==== Parameters
10
+ # * serverId<~String> - UUID of virtual server
11
+ # * storageId<~String> - UUID of virtual storage
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Hash>:
16
+ # * disconnectStorageToServerResponse<~Hash>:
17
+ # * requestId<~String> - ID of request
18
+ # * dataCenterId<~String> - UUID of virtual data center
19
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
20
+ #
21
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DisconnectStorage.html]
22
+ def disconnect_storage_from_server(storage_id, server_id)
23
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
24
+ |xml| xml[:ws].disconnectStorageFromServer {
25
+ xml.serverId(server_id)
26
+ xml.storageId(storage_id)
27
+ }
28
+ }
29
+
30
+ request(
31
+ :expects => [200],
32
+ :method => 'POST',
33
+ :body => soap_envelope.to_xml,
34
+ :parser =>
35
+ Fog::Parsers::Compute::ProfitBricks::DisconnectStorageFromServer.new
36
+ )
37
+ rescue Excon::Errors::InternalServerError => error
38
+ Fog::Errors::NotFound.new(error)
39
+ end
40
+ end
41
+
42
+ class Mock
43
+ def disconnect_storage_from_server(storage_id, server_id)
44
+
45
+ if storage = self.data[:volumes].find {
46
+ |attrib| attrib['storageId'] == storage_id
47
+ }
48
+ else
49
+ raise Fog::Errors::NotFound.new(
50
+ 'The requested storage resource could not be found'
51
+ )
52
+ end
53
+
54
+ if server = self.data[:servers].find {
55
+ |attrib| attrib['serverId'] == server_id
56
+ }['connectedStorages'].delete(storage)
57
+ else
58
+ raise Fog::Errors::NotFound.new(
59
+ 'The requested server resource could not be found'
60
+ )
61
+ end
62
+
63
+ response = Excon::Response.new
64
+ response.status = 200
65
+ response.body =
66
+ { 'disconnectStorageFromServerResponse' =>
67
+ {
68
+ 'requestId' => Fog::Mock::random_numbers(7),
69
+ 'dataCenterId' => Fog::UUID.uuid,
70
+ 'dataCenterVersion' => 1
71
+ }
72
+ }
73
+ response
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require "fog/profitbricks/parsers/compute/get_all_data_centers"
6
+ def get_all_data_centers
7
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
8
+ xml[:ws].getAllDataCenters
9
+ end
10
+
11
+ request(
12
+ :expects => [200],
13
+ :method => "POST",
14
+ :body => soap_envelope.to_xml,
15
+ :parser => Fog::Parsers::Compute::ProfitBricks::GetAllDataCenters.new
16
+ )
17
+ end
18
+ end
19
+
20
+ class Mock
21
+ def get_all_data_centers
22
+ response = Excon::Response.new
23
+ response.status = 200
24
+ response.body = {
25
+ "getAllDataCentersResponse" => self.data[:datacenters]
26
+ }
27
+ response
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end