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,82 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ def get_flavor(flavor_id)
6
+ response = Excon::Response.new
7
+ response.status = 200
8
+ response.body = {
9
+ "getFlavorResponse" => [
10
+ {
11
+ "flavorId" => "00db4c8f-5e83-49b0-a70b-ac4aad786163",
12
+ "flavorName" => "Micro",
13
+ "ram" => 1024,
14
+ "cores" => 1
15
+ },
16
+ {
17
+ "flavorId" => "dc64957b-be9d-431e-91cd-9e217f94d3de",
18
+ "flavorName" => "Small",
19
+ "ram" => 2048,
20
+ "cores" => 1
21
+ },
22
+ {
23
+ "flavorId" => "b37d000e-b347-4592-b572-df13ef8f68e1",
24
+ "flavorName" => "Medium",
25
+ "ram" => 4096,
26
+ "cores" => 2
27
+ },
28
+ {
29
+ "flavorId" => "a5a4389f-54b6-4f47-b6e8-1c5c55976b94",
30
+ "flavorName" => "Large",
31
+ "ram" => 7168,
32
+ "cores" => 4
33
+ },
34
+ {
35
+ "flavorId" => "0052db40-f1dd-4ecf-a711-5980081b7059",
36
+ "flavorName" => "Extra Large",
37
+ "ram" => 14336,
38
+ "cores" => 8
39
+ },
40
+ {
41
+ "flavorId" => "8b2b835d-be09-48cf-aae2-7e35aafe92d6",
42
+ "flavorName" => "Memory Intensive Small",
43
+ "ram" => 16384,
44
+ "cores" => 2
45
+ },
46
+ {
47
+ "flavorId" => "45c28f8b-6a67-4f69-8c94-231d371da2b6",
48
+ "flavorName" => "Memory Intensive Medium",
49
+ "ram" => 28672,
50
+ "cores" => 4
51
+ },
52
+ {
53
+ "flavorId" => "1d22436d-d958-4151-b144-43a8e180c4c4",
54
+ "flavorName" => "Memory Intensive Large",
55
+ "ram" => 57344,
56
+ "cores" => 8
57
+ },
58
+ ].find { |flavor| flavor["flavorId"] == flavor_id } || raise(Fog::Errors::NotFound)
59
+ }
60
+ response
61
+ end
62
+ end
63
+
64
+ class Mock
65
+ def get_flavor(flavor_id)
66
+ response = Excon::Response.new
67
+ response.status = 200
68
+
69
+ if flavor = self.data[:flavors].find {
70
+ |attrib| attrib["flavorId"] == flavor_id
71
+ }
72
+ else
73
+ raise Fog::Errors::NotFound.new("The requested flavor could not be found")
74
+ end
75
+
76
+ response.body = { "getFlavorResponse" => flavor }
77
+ response
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,71 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require "fog/profitbricks/parsers/compute/get_image"
6
+
7
+ # Displays a list of all available images.
8
+ #
9
+ # ==== Parameters
10
+ # * imageId<~String> - Name of the new virtual data center
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * getAllImagesResponse<~Hash>:
16
+ # * imageId<~String> - Identifer of the image
17
+ # * imageName<~String> - Name of the image
18
+ # * imageSize<~Integer> - Size of the image (in MB?)
19
+ # * imageType<~String> - Image type HDD or CD-ROM/DVD (ISO) image
20
+ # * writeable<~String> - Image is writable (TRUE/FALSE)
21
+ # * bootable<~String> - Image is bootable
22
+ # * cpuHotplug<~String> -Image supports CPU Hot-Plugging
23
+ # * cpuHotUnplug<~String> -
24
+ # * ramHotPlug<~String> - Image supports memory Hot-Plugging
25
+ # * ramHotUnPlug<~String> -
26
+ # * discVirtioHotPlug<~String> -
27
+ # * discVirtioHotUnplug<~String> -
28
+ # * nicHotPlug<~String> -
29
+ # * nicHotUnplug<~String> -
30
+ # * serverIds<~String> - List all servers by ID on which the image is used
31
+ # * location<~String> - Location where the image has been uploaded
32
+ # * osType<~String> - OS type of an image (WINDOWS, LINUX, OTHER, UNKNOWN)
33
+ # * public<~String> - Shows if image is publicly available or private
34
+ #
35
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/APIDocumentation.html?GetImages.html]
36
+ def get_image(image_id)
37
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
38
+ xml[:ws].getImage {
39
+ xml.imageId(image_id)
40
+ }
41
+ end
42
+
43
+ request(
44
+ :expects => [200],
45
+ :method => "POST",
46
+ :body => soap_envelope.to_xml,
47
+ :parser => Fog::Parsers::Compute::ProfitBricks::GetImage.new
48
+ )
49
+ rescue Excon::Errors::InternalServerError => error
50
+ Fog::Errors::NotFound.new(error)
51
+ end
52
+ end
53
+
54
+ class Mock
55
+ def get_image(image_id)
56
+ if data_center = self.data[:images].find {
57
+ |attrib| attrib["imageId"] == image_id
58
+ }
59
+ else
60
+ raise Fog::Errors::NotFound.new("The requested resource could not be found")
61
+ end
62
+
63
+ response = Excon::Response.new
64
+ response.status = 200
65
+ response.body = { "getImageResponse" => data_center }
66
+ response
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,48 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ def get_location(location_id)
6
+ response = Excon::Response.new
7
+ response.status = 200
8
+ response.body = {
9
+ "getLocationResponse" => [
10
+ {
11
+ "locationId" => "c0420cc0-90e8-4f4b-8860-df0a07d18047",
12
+ "locationName" => "de/fkb",
13
+ "country" => "DEU"
14
+ },
15
+ {
16
+ "locationId" => "68c4099a-d9d8-4683-bdc2-12789aacfa2a",
17
+ "locationName" => "de/fra",
18
+ "country" => "DEU"
19
+ },
20
+ {
21
+ "locationId" => "e102ba74-6764-47f3-8896-246141da8ada",
22
+ "locationName" => "us/las",
23
+ "country" => "USA"
24
+ }
25
+ ].find { |location| location["locationId"] == location_id } || raise(Fog::Errors::NotFound)
26
+ }
27
+ response
28
+ end
29
+ end
30
+
31
+ class Mock
32
+ def get_location(location_id)
33
+ if location = self.data[:regions].find {
34
+ |attrib| attrib["locationId"] == location_id
35
+ }
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 = { "getLocationResponse" => location }
43
+ response
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require "fog/profitbricks/parsers/compute/get_nic"
6
+
7
+ # Return virtual NIC information
8
+ #
9
+ # ==== Parameters
10
+ # * N/A
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * getNicResponse<~Hash>:
16
+ # * nicId<~String> - UUID of the network interface
17
+ # * nicName<~String> - Name of the network interface
18
+ # * lanId<~Integer> -
19
+ # * internetAccess<~Boolean> -
20
+ # * serverId<~String> -
21
+ # * ips<~String> -
22
+ # * macAddress<~String> -
23
+ # * firewall<~Hash>:
24
+ # * ...
25
+ # * dhcpActive<~Boolean> -
26
+ # * gatewayIp<~String> -
27
+ # * provisioningState<~String> - INACTIVE, INPROCESS, AVAILABLE, DELETED, ERROR
28
+ #
29
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetNIC.html]
30
+ def get_nic(nic_id)
31
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
32
+ xml[:ws].getNic {
33
+ xml.nicId(nic_id)
34
+ }
35
+ end
36
+
37
+ request(
38
+ :expects => [200],
39
+ :method => "POST",
40
+ :body => soap_envelope.to_xml,
41
+ :parser => Fog::Parsers::Compute::ProfitBricks::GetNic.new
42
+ )
43
+ rescue Excon::Errors::InternalServerError => error
44
+ Fog::Errors::NotFound.new(error)
45
+ end
46
+ end
47
+
48
+ class Mock
49
+ def get_nic(nic_id)
50
+ if nic = self.data[:interfaces].find {
51
+ |attrib| attrib["nicId"] == nic_id
52
+ }
53
+ else
54
+ raise Fog::Errors::NotFound.new("The requested resource could not be found")
55
+ end
56
+
57
+ response = Excon::Response.new
58
+ response.status = 200
59
+ response.body = { "getNicResponse" => nic }
60
+ response
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,100 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require "fog/profitbricks/parsers/compute/get_server"
6
+
7
+ # Create new virtual server
8
+ #
9
+ # ==== Parameters
10
+ # * serverId<~String> - UUID of a virtual server
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * getServerResponse<~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
+ # * serverId<~String> - UUID of the new virtual server
20
+ # * serverName<~String> -
21
+ # * cores<~Integer> -
22
+ # * ram<~Integer> -
23
+ # * internetAccess<~String> -
24
+ # * ips<~String> -
25
+ # * connectedStorages<~Array>:
26
+ # * bootDevice<~Integer> -
27
+ # * busType<~String> - VIRTIO|IDE
28
+ # * deviceNumber<~Integer> -
29
+ # * size<~Integer> -
30
+ # * storageId<~String> -
31
+ # * storageName<~String> -
32
+ # * nics<~Array>:
33
+ # * dataCenterId<~String> -
34
+ # * dataCenterVersion<~Integer> -
35
+ # * nicId<~String> -
36
+ # * lanId<~Integer> -
37
+ # * internetAccess<~String> -
38
+ # * serverId<~String> -
39
+ # * ips<~String> -
40
+ # * macAddress<~String> -
41
+ # * firewall<~Hash>:
42
+ # * active<~String> -
43
+ # * firewallId<~String> -
44
+ # * nicId<~String> -
45
+ # * provisioningState<~String> -
46
+ # * dhcpActive<~String> -
47
+ # * provisioningState<~String> -
48
+ # * provisioningState<~String> -
49
+ # * virtualMachineState<~String> -
50
+ # * creationTime<~Time> -
51
+ # * lastModificationTime<~Time> -
52
+ # * osType<~String> -
53
+ # * availabilityZone<~String> -
54
+ # * cpuHotPlug<~String> -
55
+ # * ramHotPlug<~String> -
56
+ # * nicHotPlug<~String> -
57
+ # * nicHotUnPlug<~String> -
58
+ # * discVirtioHotPlug<~String> -
59
+ # * discVirtioHotUnPlug<~String> -
60
+ #
61
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/APIDocumentation.html?getServer.html]
62
+ def get_server(server_id)
63
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
64
+ xml[:ws].getServer {
65
+ xml.serverId(server_id)
66
+ }
67
+ end
68
+
69
+ request(
70
+ :expects => [200],
71
+ :method => "POST",
72
+ :body => soap_envelope.to_xml,
73
+ :parser => Fog::Parsers::Compute::ProfitBricks::GetServer.new
74
+ )
75
+ rescue Excon::Errors::InternalServerError => error
76
+ Fog::Errors::NotFound.new(error)
77
+ end
78
+ end
79
+
80
+ class Mock
81
+ def get_server(server_id)
82
+
83
+ if server = self.data[:servers].find {
84
+ |attrib| attrib["serverId"] == server_id
85
+ }
86
+ else
87
+ raise Fog::Errors::NotFound.new("The server resource could not be found")
88
+ end
89
+
90
+ server["requestId"] = Fog::Mock::random_numbers(7)
91
+
92
+ response = Excon::Response.new
93
+ response.status = 200
94
+ response.body = { "getServerResponse" => server }
95
+ response
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require "fog/profitbricks/parsers/compute/get_storage"
6
+
7
+ # Returns all virtual storage information
8
+ #
9
+ # ==== Parameters
10
+ # * N/A
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * getStorage<~Hash>:
16
+ # * dataCenterId<~String> - UUID of the virtual data center
17
+ # * dataCenterVersion<~Integer> - Version of the virtual data center
18
+ # * storageId<~String> - UUID of the virtual storage
19
+ # * size<~Integer> - Size of the virtual storage in GB
20
+ # * storageName<~String> - Name of the virtual storage
21
+ # * mountImage<~Hash>:
22
+ # * imageId<~String> -
23
+ # * imageName<~String> -
24
+ # * serverIds<~String> - List of servers connected to the virtual storage by UUID
25
+ # * provisioningState<~String> - Current provisioning state of virtual storage
26
+ # * creationTime<~Time> - Time when virtual storage was created
27
+ # * lastModificationTime<~Time> - Time when the virtual storage was last modified
28
+ #
29
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetStorage.html]
30
+ def get_storage(storage_id)
31
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
32
+ xml[:ws].getStorage {
33
+ xml.storageId(storage_id)
34
+ }
35
+ end
36
+
37
+ request(
38
+ :expects => [200],
39
+ :method => "POST",
40
+ :body => soap_envelope.to_xml,
41
+ :parser => Fog::Parsers::Compute::ProfitBricks::GetStorage.new
42
+ )
43
+ rescue Excon::Errors::InternalServerError => error
44
+ Fog::Errors::NotFound.new(error)
45
+ end
46
+ end
47
+
48
+ class Mock
49
+ def get_storage(storage_id)
50
+ if storage = self.data[:volumes].find {
51
+ |attrib| attrib["storageId"] == storage_id
52
+ }
53
+ else
54
+ raise Fog::Errors::NotFound.new("The requested resource could not be found")
55
+ end
56
+
57
+ response = Excon::Response.new
58
+ response.status = 200
59
+ response.body = { "getStorageResponse" => storage }
60
+ response
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module Compute
3
+ class ProfitBricks
4
+ class Real
5
+ require "fog/profitbricks/parsers/compute/reset_server"
6
+
7
+ # Reset specified virtual server
8
+ #
9
+ # ==== Parameters
10
+ # * serverId<~String> - UUID of a virtual server
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * resetServerResponse<~Hash>:
16
+ # * requestId<~String> - ID of request
17
+ #
18
+ # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/ResetServer.html]
19
+ def reset_server(server_id)
20
+ soap_envelope = Fog::ProfitBricks.construct_envelope do |xml|
21
+ xml[:ws].resetServer {
22
+ xml.serverId(server_id)
23
+ }
24
+ end
25
+
26
+ request(
27
+ :expects => [200],
28
+ :method => "POST",
29
+ :body => soap_envelope.to_xml,
30
+ :parser => Fog::Parsers::Compute::ProfitBricks::ResetServer.new
31
+ )
32
+ rescue Excon::Errors::InternalServerError => error
33
+ Fog::Errors::NotFound.new(error)
34
+ end
35
+ end
36
+
37
+ class Mock
38
+ def reset_server(server_id)
39
+ response = Excon::Response.new
40
+ response.status = 200
41
+ response.body = {
42
+ "resetServerResponse" => {
43
+ "requestId" => Fog::Mock::random_numbers(7)
44
+ }
45
+ }
46
+ response
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end