fog-profitbricks 0.0.1

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 (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,61 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/set_internet_access'
6
+
7
+ # Connect an existing NIC to a public LAN to get internet access
8
+ #
9
+ # ==== Parameters
10
+ # * dataCenterId<~String> -
11
+ # * lanId<~Integer> -
12
+ # * internetAccess<~Boolean> -
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * setInternetAccessResponse<~Hash>:
18
+ # * requestId<~String> - ID of request
19
+ # * dataCenterId<~String> - UUID of virtual data center
20
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
21
+ #
22
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/SetInternetAccess.html]
23
+ def set_internet_access(data_center_id, lan_id, internet_access)
24
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
25
+ |xml| xml[:ws].setInternetAccess {
26
+ xml.dataCenterId(data_center_id)
27
+ xml.lanId(lan_id)
28
+ xml.internetAccess(internet_access)
29
+ }
30
+ }
31
+
32
+ request(
33
+ :expects => [200],
34
+ :method => 'POST',
35
+ :body => soap_envelope.to_xml,
36
+ :parser =>
37
+ Fog::Parsers::Compute::ProfitBricks::SetInternetAccess.new
38
+ )
39
+ rescue Excon::Errors::InternalServerError => error
40
+ Fog::Errors::NotFound.new(error)
41
+ end
42
+ end
43
+
44
+ class Mock
45
+ def set_internet_access(data_center_id, lan_id, internet_access)
46
+ response = Excon::Response.new
47
+ response.status = 200
48
+ response.body = {
49
+ 'setInternetAccessResponse' =>
50
+ {
51
+ 'requestId' => Fog::Mock::random_numbers(7),
52
+ 'dataCenterId' => Fog::UUID.uuid,
53
+ 'dataCenterVersion' => 1
54
+ }
55
+ }
56
+ response
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+
6
+ # Start specified virtual server
7
+ #
8
+ # ==== Parameters
9
+ # * serverId<~String> - UUID of a virtual server
10
+ #
11
+ # ==== Returns
12
+ # * response<~Excon::Response>:
13
+ # * body<~Hash>:
14
+ # * startServerResponse<~Hash>:
15
+ # * requestId<~String> - ID of request
16
+ #
17
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/StartServer.html]
18
+ def start_server(server_id)
19
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
20
+ xml[:ws].startServer {
21
+ xml.serverId(server_id)
22
+ }
23
+ end
24
+
25
+ request(
26
+ :expects => [200],
27
+ :method => "POST",
28
+ :body => soap_envelope.to_xml
29
+ )
30
+ rescue Excon::Errors::InternalServerError => error
31
+ Fog::Errors::NotFound.new(error)
32
+ end
33
+ end
34
+
35
+ class Mock
36
+ def start_server(server_id)
37
+
38
+ if server = self.data[:servers].find {
39
+ |attrib| attrib["serverId"] == server_id
40
+ }
41
+ server["machine_state"] = "RUNNING"
42
+ server["provisioning_state"] = "AVAILABLE"
43
+ else
44
+ raise Fog::Errors::NotFound.new("The requested server resource could not be found")
45
+ end
46
+
47
+ response = Excon::Response.new
48
+ response.status = 200
49
+ response.body = {
50
+ "startServerResponse" => {
51
+ "requestId" => Fog::Mock::random_numbers(7)
52
+ }
53
+ }
54
+ response
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+
6
+ # Stop specified virtual server
7
+ #
8
+ # ==== Parameters
9
+ # * serverId<~String> - UUID of a virtual server
10
+ #
11
+ # ==== Returns
12
+ # * response<~Excon::Response>:
13
+ # * body<~Hash>:
14
+ # * stopServerResponse<~Hash>:
15
+ # * requestId<~String> - ID of request
16
+ #
17
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/StopServer.html]
18
+ def stop_server(server_id)
19
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
20
+ xml[:ws].stopServer {
21
+ xml.serverId(server_id)
22
+ }
23
+ end
24
+
25
+ request(
26
+ :expects => [200],
27
+ :method => "POST",
28
+ :body => soap_envelope.to_xml
29
+ )
30
+ rescue Excon::Errors::InternalServerError => error
31
+ Fog::Errors::NotFound.new(error)
32
+ end
33
+ end
34
+
35
+ class Mock
36
+ def stop_server(server_id)
37
+
38
+ if server = self.data[:servers].find {
39
+ |attrib| attrib["serverId"] == server_id
40
+ }
41
+ server["machine_state"] = "SHUTOFF"
42
+ server["provisioning_state"] = "INACTIVE"
43
+ else
44
+ raise Fog::Errors::NotFound.new("The requested server resource could not be found")
45
+ end
46
+
47
+ response = Excon::Response.new
48
+ response.status = 200
49
+ response.body = {
50
+ "stopServerResponse" => {
51
+ "requestId" => Fog::Mock::random_numbers(7)
52
+ }
53
+ }
54
+ response
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,55 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/update_data_center'
6
+ def update_data_center(data_center_id, options={})
7
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
8
+ |xml| xml[:ws].updateDataCenter {
9
+ xml.request {
10
+ xml.dataCenterId(data_center_id)
11
+ options.each { |key, value| xml.send(key, value) }
12
+ }
13
+ }
14
+ }
15
+
16
+ request(
17
+ :expects => [200],
18
+ :method => 'POST',
19
+ :body => soap_envelope.to_xml,
20
+ :parser =>
21
+ Fog::Parsers::Compute::ProfitBricks::UpdateDataCenter.new
22
+ )
23
+ rescue Excon::Errors::InternalServerError => error
24
+ Fog::Errors::NotFound.new(error)
25
+ end
26
+ end
27
+
28
+ class Mock
29
+ def update_data_center(data_center_id, options={})
30
+
31
+ if data_center = self.data[:datacenters].find {
32
+ |attrib| attrib['dataCenterId'] == data_center_id
33
+ }
34
+ data_center['dataCenterName'] = options['dataCenterName']
35
+ data_center['dataCenterVersion'] += 1
36
+ else
37
+ raise Fog::Errors::NotFound.new('The requested resource could not be found')
38
+ end
39
+
40
+ response = Excon::Response.new
41
+ response.status = 200
42
+ response.body = {
43
+ 'updateDataCenterResponse' =>
44
+ {
45
+ 'requestId' => Fog::Mock::random_numbers(7),
46
+ 'dataCenterId' => Fog::UUID.uuid,
47
+ 'dataCenterVersion' => 1
48
+ }
49
+ }
50
+ response
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,76 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/update_nic'
6
+
7
+ # Update a virtual NIC
8
+ #
9
+ # ==== Parameters
10
+ # * nicId<~String> - Required,
11
+ # * options<~Hash>:
12
+ # * lanId<~Integer> - Optional,
13
+ # * nicName<~String> - Optional, name of the new virtual network interface
14
+ # * ip<~String> - Optional,
15
+ # * dhcpActive<~Boolean> - Optional,
16
+ #
17
+ # ==== Returns
18
+ # * response<~Excon::Response>:
19
+ # * body<~Hash>:
20
+ # * updateNicResponse<~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
+ #
25
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/UpdateNIC.html]
26
+ def update_nic(nic_id, options={})
27
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
28
+ |xml| xml[:ws].updateNic {
29
+ xml.request {
30
+ xml.nicId(nic_id)
31
+ options.each { |key, value| xml.send(key, value) }
32
+ }
33
+ }
34
+ }
35
+
36
+ request(
37
+ :expects => [200],
38
+ :method => 'POST',
39
+ :body => soap_envelope.to_xml,
40
+ :parser =>
41
+ Fog::Parsers::Compute::ProfitBricks::UpdateNic.new
42
+ )
43
+ rescue Excon::Errors::InternalServerError => error
44
+ Fog::Errors::NotFound.new(error)
45
+ end
46
+ end
47
+
48
+ class Mock
49
+ def update_nic(nic_id, options={})
50
+
51
+ if nic = self.data[:interfaces].find {
52
+ |attrib| attrib['nicId'] == nic_id
53
+ }
54
+ options.each do |key, value|
55
+ nic[key] = value
56
+ end
57
+ else
58
+ raise Fog::Errors::NotFound.new('The requested NIC could not be found')
59
+ end
60
+
61
+ response = Excon::Response.new
62
+ response.status = 200
63
+ response.body = {
64
+ 'updateNicResponse' =>
65
+ {
66
+ 'requestId' => Fog::Mock::random_numbers(7),
67
+ 'dataCenterId' => Fog::UUID.uuid,
68
+ 'dataCenterVersion' => 1
69
+ }
70
+ }
71
+ response
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,81 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/update_server'
6
+
7
+ # Update a virtual server
8
+ #
9
+ # ==== Parameters
10
+ # * serverId<~String> - Required, UUID of virtual server
11
+ # * options<~Hash>:
12
+ # * serverName<~String> - Optional,
13
+ # * cores<~Integer> - Optional,
14
+ # * ram<~Integer> Optional, Memory in MB
15
+ # * bootFromStorageId<~String> - Optional, UUID of boot storage
16
+ # * bootFromImageId<~String> -
17
+ # * osType<~String> - Optional, UNKNOWN, WINDOWS, LINUX, OTHER
18
+ # * availabilityZone<~String> - Optional, AUTO, ZONE_1, ZONE_2
19
+ #
20
+ # ==== Returns
21
+ # * response<~Excon::Response>:
22
+ # * body<~Hash>:
23
+ # * updateServerResponse<~Hash>:
24
+ # * requestId<~String> - ID of request
25
+ # * dataCenterId<~String> - UUID of virtual data center
26
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
27
+ #
28
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/UpdateServer.html]
29
+ def update_server(server_id, options={})
30
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
31
+ |xml| xml[:ws].updateServer {
32
+ xml.request {
33
+ xml.serverId(server_id)
34
+ options.each { |key, value| xml.send(key, value) }
35
+ }
36
+ }
37
+ }
38
+
39
+ request(
40
+ :expects => [200],
41
+ :method => 'POST',
42
+ :body => soap_envelope.to_xml,
43
+ :parser =>
44
+ Fog::Parsers::Compute::ProfitBricks::UpdateServer.new
45
+ )
46
+ rescue Excon::Errors::InternalServerError => error
47
+ Fog::Errors::NotFound.new(error)
48
+ end
49
+ end
50
+
51
+ class Mock
52
+ def update_server(server_id, options={})
53
+
54
+ if server = self.data[:servers].find {
55
+ |attrib| attrib['serverId'] == server_id
56
+ }
57
+ options.each do |key, value|
58
+ server[key] = value
59
+ end
60
+ else
61
+ raise Fog::Errors::NotFound.new(
62
+ 'The requested server resource could not be found'
63
+ )
64
+ end
65
+
66
+ response = Excon::Response.new
67
+ response.status = 200
68
+ response.body = {
69
+ 'updateServerResponse' =>
70
+ {
71
+ 'requestId' => Fog::Mock::random_numbers(7),
72
+ 'dataCenterId' => Fog::UUID.uuid,
73
+ 'dataCenterVersion' => 1
74
+ }
75
+ }
76
+ response
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,75 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require 'fog/profitbricks/parsers/compute/update_storage'
6
+
7
+ # Update a virtual storage
8
+ #
9
+ # ==== Parameters
10
+ # * storageId<~String> - Required, UUID of the virtual storage
11
+ # * options<~Hash>:
12
+ # * size<~Integer> - Optional, size of virtual storage in GB
13
+ # * storageName<~String> - Optional,
14
+ # * mountImageId<~String> - Optional,
15
+ #
16
+ # ==== Returns
17
+ # * response<~Excon::Response>:
18
+ # * body<~Hash>:
19
+ # * updateStorageResponse<~Hash>:
20
+ # * requestId<~String> - ID of request
21
+ # * dataCenterId<~String> - UUID of virtual data center
22
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
23
+ #
24
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/UpdateStorage.html]
25
+ def update_storage(storage_id, options={})
26
+ soap_envelope = Fog::ProfitBricks.construct_envelope {
27
+ |xml| xml[:ws].updateStorage {
28
+ xml.request {
29
+ xml.storageId(storage_id)
30
+ options.each { |key, value| xml.send(key, value) }
31
+ }
32
+ }
33
+ }
34
+
35
+ request(
36
+ :expects => [200],
37
+ :method => 'POST',
38
+ :body => soap_envelope.to_xml,
39
+ :parser =>
40
+ Fog::Parsers::Compute::ProfitBricks::UpdateStorage.new
41
+ )
42
+ rescue Excon::Errors::InternalServerError => error
43
+ Fog::Errors::NotFound.new(error)
44
+ end
45
+ end
46
+
47
+ class Mock
48
+ def update_storage(storage_id, options={})
49
+
50
+ if storage = self.data[:volumes].find {
51
+ |attrib| attrib['storageId'] == storage_id
52
+ }
53
+ options.each do |key, value|
54
+ storage[key] = value
55
+ end
56
+ else
57
+ raise Fog::Errors::NotFound.new('The requested resource could not be found')
58
+ end
59
+
60
+ response = Excon::Response.new
61
+ response.status = 200
62
+ response.body = {
63
+ 'updateStorageResponse' =>
64
+ {
65
+ 'requestId' => Fog::Mock::random_numbers(7),
66
+ 'dataCenterId' => Fog::UUID.uuid,
67
+ 'dataCenterVersion' => 1
68
+ }
69
+ }
70
+ response
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end