fog-oneandone 1.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 (174) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +36 -0
  3. data/CONTRIBUTING.md +276 -0
  4. data/CONTRIBUTORS.md +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.md +20 -0
  7. data/README.md +317 -0
  8. data/bin/fog +78 -0
  9. data/examples/example_app.rb +80 -0
  10. data/fog-oneandone.gemspec +22 -0
  11. data/gemfiles/Gemfile-edge +7 -0
  12. data/lib/fog-oneandone.rb +10 -0
  13. data/lib/oneandone/compute.rb +713 -0
  14. data/lib/oneandone/core.rb +11 -0
  15. data/lib/oneandone/models/compute/firewall.rb +128 -0
  16. data/lib/oneandone/models/compute/firewalls.rb +24 -0
  17. data/lib/oneandone/models/compute/image.rb +72 -0
  18. data/lib/oneandone/models/compute/images.rb +24 -0
  19. data/lib/oneandone/models/compute/load_balancer.rb +149 -0
  20. data/lib/oneandone/models/compute/load_balancers.rb +24 -0
  21. data/lib/oneandone/models/compute/monitoring_policies.rb +24 -0
  22. data/lib/oneandone/models/compute/monitoring_policy.rb +196 -0
  23. data/lib/oneandone/models/compute/private_network.rb +105 -0
  24. data/lib/oneandone/models/compute/private_networks.rb +24 -0
  25. data/lib/oneandone/models/compute/public_ip.rb +68 -0
  26. data/lib/oneandone/models/compute/public_ips.rb +24 -0
  27. data/lib/oneandone/models/compute/server.rb +434 -0
  28. data/lib/oneandone/models/compute/servers.rb +24 -0
  29. data/lib/oneandone/models/compute/shared_storage.rb +101 -0
  30. data/lib/oneandone/models/compute/shared_storages.rb +24 -0
  31. data/lib/oneandone/models/compute/vpn.rb +70 -0
  32. data/lib/oneandone/models/compute/vpns.rb +24 -0
  33. data/lib/oneandone/requests/compute/access.rb +35 -0
  34. data/lib/oneandone/requests/compute/add_firewall.rb +70 -0
  35. data/lib/oneandone/requests/compute/add_firewall_ips.rb +67 -0
  36. data/lib/oneandone/requests/compute/add_firewall_rules.rb +68 -0
  37. data/lib/oneandone/requests/compute/add_hdds.rb +65 -0
  38. data/lib/oneandone/requests/compute/add_load_balancer.rb +76 -0
  39. data/lib/oneandone/requests/compute/add_load_balancer_ips.rb +67 -0
  40. data/lib/oneandone/requests/compute/add_load_balancer_rules.rb +68 -0
  41. data/lib/oneandone/requests/compute/add_mp_servers.rb +64 -0
  42. data/lib/oneandone/requests/compute/add_ports.rb +65 -0
  43. data/lib/oneandone/requests/compute/add_private_network.rb +65 -0
  44. data/lib/oneandone/requests/compute/add_private_network_servers.rb +67 -0
  45. data/lib/oneandone/requests/compute/add_processes.rb +65 -0
  46. data/lib/oneandone/requests/compute/add_server_ip.rb +72 -0
  47. data/lib/oneandone/requests/compute/add_shared_storage_servers.rb +64 -0
  48. data/lib/oneandone/requests/compute/change_password.rb +45 -0
  49. data/lib/oneandone/requests/compute/change_status.rb +69 -0
  50. data/lib/oneandone/requests/compute/clone_server.rb +67 -0
  51. data/lib/oneandone/requests/compute/create_firewall.rb +78 -0
  52. data/lib/oneandone/requests/compute/create_image.rb +101 -0
  53. data/lib/oneandone/requests/compute/create_load_balancer.rb +104 -0
  54. data/lib/oneandone/requests/compute/create_monitoring_policy.rb +93 -0
  55. data/lib/oneandone/requests/compute/create_private_network.rb +82 -0
  56. data/lib/oneandone/requests/compute/create_public_ip.rb +77 -0
  57. data/lib/oneandone/requests/compute/create_server.rb +139 -0
  58. data/lib/oneandone/requests/compute/create_shared_storage.rb +83 -0
  59. data/lib/oneandone/requests/compute/create_snapshot.rb +51 -0
  60. data/lib/oneandone/requests/compute/create_vpn.rb +80 -0
  61. data/lib/oneandone/requests/compute/delete_firewall.rb +51 -0
  62. data/lib/oneandone/requests/compute/delete_firewall_rule.rb +60 -0
  63. data/lib/oneandone/requests/compute/delete_hdd.rb +61 -0
  64. data/lib/oneandone/requests/compute/delete_image.rb +51 -0
  65. data/lib/oneandone/requests/compute/delete_load_balancer.rb +51 -0
  66. data/lib/oneandone/requests/compute/delete_load_balancer_rule.rb +60 -0
  67. data/lib/oneandone/requests/compute/delete_monitoring_policy.rb +51 -0
  68. data/lib/oneandone/requests/compute/delete_port.rb +60 -0
  69. data/lib/oneandone/requests/compute/delete_private_network.rb +51 -0
  70. data/lib/oneandone/requests/compute/delete_process.rb +60 -0
  71. data/lib/oneandone/requests/compute/delete_public_ip.rb +51 -0
  72. data/lib/oneandone/requests/compute/delete_server.rb +51 -0
  73. data/lib/oneandone/requests/compute/delete_server_ip.rb +60 -0
  74. data/lib/oneandone/requests/compute/delete_shared_storage.rb +51 -0
  75. data/lib/oneandone/requests/compute/delete_snapshot.rb +51 -0
  76. data/lib/oneandone/requests/compute/delete_vpn.rb +51 -0
  77. data/lib/oneandone/requests/compute/eject_dvd.rb +51 -0
  78. data/lib/oneandone/requests/compute/get_datacenter.rb +50 -0
  79. data/lib/oneandone/requests/compute/get_dvd.rb +50 -0
  80. data/lib/oneandone/requests/compute/get_dvd_iso.rb +50 -0
  81. data/lib/oneandone/requests/compute/get_firewall.rb +50 -0
  82. data/lib/oneandone/requests/compute/get_firewall_ip.rb +59 -0
  83. data/lib/oneandone/requests/compute/get_firewall_rule.rb +59 -0
  84. data/lib/oneandone/requests/compute/get_fixed_server.rb +50 -0
  85. data/lib/oneandone/requests/compute/get_hardware.rb +50 -0
  86. data/lib/oneandone/requests/compute/get_hdd.rb +60 -0
  87. data/lib/oneandone/requests/compute/get_hdds.rb +50 -0
  88. data/lib/oneandone/requests/compute/get_image.rb +50 -0
  89. data/lib/oneandone/requests/compute/get_load_balancer.rb +50 -0
  90. data/lib/oneandone/requests/compute/get_load_balancer_ip.rb +59 -0
  91. data/lib/oneandone/requests/compute/get_load_balancer_rule.rb +59 -0
  92. data/lib/oneandone/requests/compute/get_log.rb +51 -0
  93. data/lib/oneandone/requests/compute/get_monitored_server.rb +49 -0
  94. data/lib/oneandone/requests/compute/get_monitoring_policy.rb +50 -0
  95. data/lib/oneandone/requests/compute/get_mp_server.rb +59 -0
  96. data/lib/oneandone/requests/compute/get_port.rb +59 -0
  97. data/lib/oneandone/requests/compute/get_private_network.rb +50 -0
  98. data/lib/oneandone/requests/compute/get_private_network_server.rb +59 -0
  99. data/lib/oneandone/requests/compute/get_process.rb +59 -0
  100. data/lib/oneandone/requests/compute/get_public_ip.rb +50 -0
  101. data/lib/oneandone/requests/compute/get_server.rb +50 -0
  102. data/lib/oneandone/requests/compute/get_server_appliance.rb +50 -0
  103. data/lib/oneandone/requests/compute/get_server_image.rb +50 -0
  104. data/lib/oneandone/requests/compute/get_server_ip.rb +59 -0
  105. data/lib/oneandone/requests/compute/get_server_private_network.rb +59 -0
  106. data/lib/oneandone/requests/compute/get_shared_storage.rb +50 -0
  107. data/lib/oneandone/requests/compute/get_shared_storage_server.rb +59 -0
  108. data/lib/oneandone/requests/compute/get_snapshot.rb +50 -0
  109. data/lib/oneandone/requests/compute/get_vpn.rb +50 -0
  110. data/lib/oneandone/requests/compute/install_server_image.rb +72 -0
  111. data/lib/oneandone/requests/compute/list_datacenters.rb +56 -0
  112. data/lib/oneandone/requests/compute/list_dvds.rb +56 -0
  113. data/lib/oneandone/requests/compute/list_firewall_ips.rb +50 -0
  114. data/lib/oneandone/requests/compute/list_firewall_rules.rb +50 -0
  115. data/lib/oneandone/requests/compute/list_firewalls.rb +56 -0
  116. data/lib/oneandone/requests/compute/list_fixed_servers.rb +40 -0
  117. data/lib/oneandone/requests/compute/list_images.rb +56 -0
  118. data/lib/oneandone/requests/compute/list_ip_firewalls.rb +59 -0
  119. data/lib/oneandone/requests/compute/list_ip_load_balancers.rb +59 -0
  120. data/lib/oneandone/requests/compute/list_load_balancer_ips.rb +50 -0
  121. data/lib/oneandone/requests/compute/list_load_balancer_rules.rb +50 -0
  122. data/lib/oneandone/requests/compute/list_load_balancers.rb +56 -0
  123. data/lib/oneandone/requests/compute/list_logs.rb +59 -0
  124. data/lib/oneandone/requests/compute/list_monitored_servers.rb +51 -0
  125. data/lib/oneandone/requests/compute/list_monitoring_policies.rb +56 -0
  126. data/lib/oneandone/requests/compute/list_mp_servers.rb +50 -0
  127. data/lib/oneandone/requests/compute/list_ports.rb +51 -0
  128. data/lib/oneandone/requests/compute/list_private_network_servers.rb +50 -0
  129. data/lib/oneandone/requests/compute/list_private_networks.rb +56 -0
  130. data/lib/oneandone/requests/compute/list_processes.rb +51 -0
  131. data/lib/oneandone/requests/compute/list_public_ips.rb +56 -0
  132. data/lib/oneandone/requests/compute/list_server_appliances.rb +56 -0
  133. data/lib/oneandone/requests/compute/list_server_ips.rb +50 -0
  134. data/lib/oneandone/requests/compute/list_server_private_networks.rb +50 -0
  135. data/lib/oneandone/requests/compute/list_servers.rb +56 -0
  136. data/lib/oneandone/requests/compute/list_shared_storage_servers.rb +50 -0
  137. data/lib/oneandone/requests/compute/list_shared_storages.rb +56 -0
  138. data/lib/oneandone/requests/compute/list_usages.rb +54 -0
  139. data/lib/oneandone/requests/compute/list_vpns.rb +56 -0
  140. data/lib/oneandone/requests/compute/load_dvd.rb +65 -0
  141. data/lib/oneandone/requests/compute/ping.rb +38 -0
  142. data/lib/oneandone/requests/compute/ping_auth.rb +38 -0
  143. data/lib/oneandone/requests/compute/remove_firewall.rb +60 -0
  144. data/lib/oneandone/requests/compute/remove_firewall_ip.rb +60 -0
  145. data/lib/oneandone/requests/compute/remove_load_balancer.rb +71 -0
  146. data/lib/oneandone/requests/compute/remove_load_balancer_ip.rb +60 -0
  147. data/lib/oneandone/requests/compute/remove_mp_server.rb +60 -0
  148. data/lib/oneandone/requests/compute/remove_private_network.rb +60 -0
  149. data/lib/oneandone/requests/compute/remove_private_network_server.rb +60 -0
  150. data/lib/oneandone/requests/compute/remove_shared_storage_server.rb +60 -0
  151. data/lib/oneandone/requests/compute/restore_snapshot.rb +35 -0
  152. data/lib/oneandone/requests/compute/status.rb +50 -0
  153. data/lib/oneandone/requests/compute/update_firewall.rb +76 -0
  154. data/lib/oneandone/requests/compute/update_hardware.rb +82 -0
  155. data/lib/oneandone/requests/compute/update_hdd.rb +71 -0
  156. data/lib/oneandone/requests/compute/update_image.rb +80 -0
  157. data/lib/oneandone/requests/compute/update_load_balancer.rb +96 -0
  158. data/lib/oneandone/requests/compute/update_monitoring_policy.rb +82 -0
  159. data/lib/oneandone/requests/compute/update_port.rb +74 -0
  160. data/lib/oneandone/requests/compute/update_private_network.rb +82 -0
  161. data/lib/oneandone/requests/compute/update_process.rb +76 -0
  162. data/lib/oneandone/requests/compute/update_public_ip.rb +71 -0
  163. data/lib/oneandone/requests/compute/update_server.rb +76 -0
  164. data/lib/oneandone/requests/compute/update_shared_storage.rb +80 -0
  165. data/lib/oneandone/requests/compute/update_vpn.rb +76 -0
  166. data/tests/oneandone/test_firewalls.rb +188 -0
  167. data/tests/oneandone/test_images.rb +79 -0
  168. data/tests/oneandone/test_load_balancers.rb +192 -0
  169. data/tests/oneandone/test_monitoring_policies.rb +342 -0
  170. data/tests/oneandone/test_private_networks.rb +123 -0
  171. data/tests/oneandone/test_public_ips.rb +75 -0
  172. data/tests/oneandone/test_servers.rb +465 -0
  173. data/tests/oneandone/test_shared_storages.rb +131 -0
  174. metadata +259 -0
@@ -0,0 +1,68 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add rules to a load balancer
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#load_balancers__load_balancer_id__rules_post]
10
+ ##
11
+ def add_load_balancer_rules(load_balancer_id: nil, rules: nil)
12
+
13
+ # Build POST body
14
+ new_rules = {
15
+ 'rules' => rules
16
+ }
17
+
18
+ # Clean out null keys in POST body
19
+ body = clean_hash(new_rules)
20
+
21
+ # Stringify the POST body
22
+ string_body = Fog::JSON.encode(body)
23
+
24
+ # Request
25
+ params = {
26
+ 'method' => :post,
27
+ 'endpoint' => "/load_balancers/#{load_balancer_id}/rules",
28
+ 'body' => string_body
29
+ }
30
+
31
+ request(params)
32
+
33
+ end
34
+
35
+ end # Real
36
+
37
+
38
+ class Mock
39
+
40
+ def add_load_balancer_rules(load_balancer_id: nil, rules: nil)
41
+
42
+ # Search for load balancer to return
43
+ if load_balancer = self.data[:load_balancers].find {
44
+ |hash| hash['id'] == load_balancer_id
45
+ }
46
+ # Add rules
47
+ rules.each do |rule|
48
+ rule['id'] = Fog::UUID.uuid
49
+ load_balancer['rules'] << rule
50
+ end
51
+ else
52
+ raise Fog::Errors::NotFound.new('The requested resource could
53
+ not be found.')
54
+ end
55
+
56
+ # Return Response Object to User
57
+ response = Excon::Response.new
58
+ response.status = 202
59
+ response.body = load_balancer
60
+ response
61
+
62
+ end
63
+
64
+ end # Mock
65
+
66
+ end # OneAndOne
67
+ end # Compute
68
+ end # Fog
@@ -0,0 +1,64 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add servers to a monitoring policy
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#monitoring_policies__monitoring_policy_id__servers_post]
10
+ ##
11
+ def add_mp_servers(monitoring_policy_id: nil, servers: nil)
12
+
13
+ # Build POST body
14
+ new_servers = {
15
+ 'servers' => servers
16
+ }
17
+
18
+ # Stringify the POST body
19
+ string_body = Fog::JSON.encode(new_servers)
20
+
21
+ # Request
22
+ params = {
23
+ 'method' => :post,
24
+ 'endpoint' => "/monitoring_policies/#{monitoring_policy_id}/servers",
25
+ 'body' => string_body
26
+ }
27
+
28
+ request(params)
29
+
30
+ end
31
+
32
+ end # Real
33
+
34
+
35
+ class Mock
36
+
37
+ def add_mp_servers(monitoring_policy_id: nil, servers: nil)
38
+
39
+ # Search for MP to return
40
+ if monitoring_policy = self.data[:monitoring_policies].find {
41
+ |hash| hash['id'] == monitoring_policy_id
42
+ }
43
+ # Add servers
44
+ servers.each do |server|
45
+ monitoring_policy['servers'] << server
46
+ end
47
+ else
48
+ raise Fog::Errors::NotFound.new('The requested resource could
49
+ not be found.')
50
+ end
51
+
52
+ # Return Response Object to User
53
+ response = Excon::Response.new
54
+ response.status = 202
55
+ response.body = monitoring_policy
56
+ response
57
+
58
+ end
59
+
60
+ end # Mock
61
+
62
+ end # OneAndOne
63
+ end # Compute
64
+ end # Fog
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add new ports to a monitoring policy
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#monitoring_policies__monitoring_policy_id__ports_post]
10
+ ##
11
+ def add_ports(monitoring_policy_id: nil, ports: nil)
12
+
13
+ # Build POST body
14
+ new_ports = {
15
+ 'ports' => ports
16
+ }
17
+
18
+ # Stringify the POST body
19
+ string_body = Fog::JSON.encode(body)
20
+
21
+ # Request
22
+ params = {
23
+ 'method' => :post,
24
+ 'endpoint' => "/monitoring_policies/#{monitoring_policy_id}/ports",
25
+ 'body' => string_body
26
+ }
27
+
28
+ request(params)
29
+
30
+ end
31
+
32
+ end # Real
33
+
34
+
35
+ class Mock
36
+
37
+ def add_ports(monitoring_policy_id: nil, ports: nil)
38
+
39
+ # Search for MP to return
40
+ if monitoring_policy = self.data[:monitoring_policies].find {
41
+ |hash| hash['id'] == monitoring_policy_id
42
+ }
43
+ # Add ports
44
+ ports.each do |port|
45
+ port['id'] = Fog::UUID.uuid
46
+ monitoring_policy['ports'] << port
47
+ end
48
+ else
49
+ raise Fog::Errors::NotFound.new('The requested resource could
50
+ not be found.')
51
+ end
52
+
53
+ # Return Response Object to User
54
+ response = Excon::Response.new
55
+ response.status = 202
56
+ response.body = monitoring_policy
57
+ response
58
+
59
+ end
60
+
61
+ end # Mock
62
+
63
+ end # OneAndOne
64
+ end # Compute
65
+ end # Fog
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Assigns a private network to the server
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#servers__server_id__private_networks_post]
10
+ ##
11
+ def add_private_network(server_id: nil, private_network_id: nil)
12
+
13
+ # Build PUT body
14
+ private_network_specs = {
15
+ 'id' => private_network_id
16
+ }
17
+
18
+ # Stringify the PUT body
19
+ string_body = Fog::JSON.encode(private_network_specs)
20
+
21
+ # Request
22
+ params = {
23
+ 'method' => :post,
24
+ 'endpoint' => "/servers/#{server_id}/private_networks",
25
+ 'body' => string_body
26
+ }
27
+
28
+ request(params)
29
+
30
+ end
31
+
32
+ end # Real
33
+
34
+
35
+ class Mock
36
+
37
+ def add_private_network(server_id: nil, private_network_id: nil)
38
+
39
+ # Search for server
40
+ if server = self.data[:servers].find {
41
+ |hash| hash['id'] == server_id
42
+ }
43
+ private_network = {
44
+ 'id' => private_network_id
45
+ }
46
+
47
+ server['private_networks'] << private_network
48
+ else
49
+ raise Fog::Errors::NotFound.new('The requested resource could
50
+ not be found.')
51
+ end
52
+
53
+ # Return Response Object to User
54
+ response = Excon::Response.new
55
+ response.status = 202
56
+ response.body = server
57
+ response
58
+
59
+ end
60
+
61
+ end # Mock
62
+
63
+ end # OneAndOne
64
+ end # Compute
65
+ end # Fog
@@ -0,0 +1,67 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add servers to a private network
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#private_networks__private_network_id__servers_post]
10
+ ##
11
+ def add_private_network_servers(private_network_id: nil, servers: nil)
12
+
13
+ # Build POST body
14
+ new_servers = {
15
+ 'servers' => servers
16
+ }
17
+
18
+ # Clean out null keys in POST body
19
+ body = clean_hash(new_servers)
20
+
21
+ # Stringify the POST body
22
+ string_body = Fog::JSON.encode(body)
23
+
24
+ # Request
25
+ params = {
26
+ 'method' => :post,
27
+ 'endpoint' => "/private_networks/#{private_network_id}/servers",
28
+ 'body' => string_body
29
+ }
30
+
31
+ request(params)
32
+
33
+ end
34
+
35
+ end # Real
36
+
37
+
38
+ class Mock
39
+
40
+ def add_private_network_servers(private_network_id: nil, servers: nil)
41
+
42
+ # Search for private network to return
43
+ if private_network = self.data[:private_networks].find {
44
+ |hash| hash['id'] == private_network_id
45
+ }
46
+ # Add servers
47
+ servers.each do |server|
48
+ private_network['servers'] << server
49
+ end
50
+ else
51
+ raise Fog::Errors::NotFound.new('The requested resource could
52
+ not be found.')
53
+ end
54
+
55
+ # Return Response Object to User
56
+ response = Excon::Response.new
57
+ response.status = 202
58
+ response.body = private_network
59
+ response
60
+
61
+ end
62
+
63
+ end # Mock
64
+
65
+ end # OneAndOne
66
+ end # Compute
67
+ end # Fog
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add new processes to a monitoring policy
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#monitoring_policies__monitoring_policy_id__processes_post]
10
+ ##
11
+ def add_processes(monitoring_policy_id: nil, processes: nil)
12
+
13
+ # Build POST body
14
+ new_processes = {
15
+ 'processes' => processes
16
+ }
17
+
18
+ # Stringify the POST body
19
+ string_body = Fog::JSON.encode(new_processes)
20
+
21
+ # Request
22
+ params = {
23
+ 'method' => :post,
24
+ 'endpoint' => "/monitoring_policies/#{monitoring_policy_id}/processes",
25
+ 'body' => string_body
26
+ }
27
+
28
+ request(params)
29
+
30
+ end
31
+
32
+ end # Real
33
+
34
+
35
+ class Mock
36
+
37
+ def add_processes(monitoring_policy_id: nil, processes: nil)
38
+
39
+ # Search for MP to return
40
+ if monitoring_policy = self.data[:monitoring_policies].find {
41
+ |hash| hash['id'] == monitoring_policy_id
42
+ }
43
+ # Add processes
44
+ processes.each do |process|
45
+ process['id'] = Fog::UUID.uuid
46
+ monitoring_policy['processes'] << process
47
+ end
48
+ else
49
+ raise Fog::Errors::NotFound.new('The requested resource could
50
+ not be found.')
51
+ end
52
+
53
+ # Return Response Object to User
54
+ response = Excon::Response.new
55
+ response.status = 202
56
+ response.body = monitoring_policy
57
+ response
58
+
59
+ end
60
+
61
+ end # Mock
62
+
63
+ end # OneAndOne
64
+ end # Compute
65
+ end # Fog
@@ -0,0 +1,72 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add a new IP to the server
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#servers__server_id__ips_post]
10
+ ##
11
+ def add_server_ip(server_id: nil, type: nil)
12
+
13
+ # Build POST body
14
+ ip_specs = {
15
+ 'type' => type
16
+ }
17
+
18
+ # Clean out null keys in POST body
19
+ body = clean_hash(ip_specs)
20
+
21
+ # Stringify the POST body
22
+ string_body = Fog::JSON.encode(body)
23
+
24
+ # Request
25
+ params = {
26
+ 'method' => :post,
27
+ 'endpoint' => "/servers/#{server_id}/ips",
28
+ 'body' => string_body
29
+ }
30
+
31
+ request(params)
32
+
33
+ end
34
+
35
+ end # Real
36
+
37
+
38
+ class Mock
39
+
40
+ def add_server_ip(server_id: nil, type: nil)
41
+
42
+ # Search for server to return
43
+ if server = self.data[:servers].find {
44
+ |hash| hash['id'] == server_id
45
+ }
46
+ # Add IP
47
+ new_ip = {
48
+ 'id' => Fog::UUID.uuid,
49
+ 'type' => type,
50
+ 'firewall_policy' => {},
51
+ 'load_balancers' => []
52
+ }
53
+
54
+ server['ips'] << new_ip
55
+ else
56
+ raise Fog::Errors::NotFound.new('The requested resource could
57
+ not be found.')
58
+ end
59
+
60
+ # Return Response Object to User
61
+ response = Excon::Response.new
62
+ response.status = 202
63
+ response.body = server
64
+ response
65
+
66
+ end
67
+
68
+ end # Mock
69
+
70
+ end # OneAndOne
71
+ end # Compute
72
+ end # Fog
@@ -0,0 +1,64 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Add servers to a shared storage
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#shared_storages__shared_storage_id__servers_post]
10
+ ##
11
+ def add_shared_storage_servers(shared_storage_id: nil, servers: nil)
12
+
13
+ # Build POST body
14
+ add_servers = {
15
+ 'servers' => servers
16
+ }
17
+
18
+ # Stringify the POST body
19
+ string_body = Fog::JSON.encode(add_servers)
20
+
21
+ # Request
22
+ params = {
23
+ 'method' => :post,
24
+ 'endpoint' => "/shared_storages/#{shared_storage_id}/servers",
25
+ 'body' => string_body
26
+ }
27
+
28
+ request(params)
29
+
30
+ end
31
+
32
+ end # Real
33
+
34
+
35
+ class Mock
36
+
37
+ def add_shared_storage_servers(shared_storage_id: nil, servers: nil)
38
+
39
+ # Search for shared storage to return
40
+ if shared_storage = self.data[:shared_storages].find {
41
+ |hash| hash['id'] == shared_storage_id
42
+ }
43
+ # Add servers
44
+ servers.each do |server|
45
+ shared_storage['servers'] << server
46
+ end
47
+ else
48
+ raise Fog::Errors::NotFound.new('The requested resource could
49
+ not be found.')
50
+ end
51
+
52
+ # Return Response Object to User
53
+ response = Excon::Response.new
54
+ response.status = 202
55
+ response.body = shared_storage
56
+ response
57
+
58
+ end
59
+
60
+ end # Mock
61
+
62
+ end # OneAndOne
63
+ end # Compute
64
+ end # Fog
@@ -0,0 +1,45 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Returns the credentials for accessing the shared storages
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#shared_storages_access_get]
10
+ ##
11
+ def change_password(password)
12
+
13
+ # Create PUT body
14
+ new_password = {
15
+ 'password' => password
16
+ }
17
+
18
+ # Stringify the PUT body
19
+ string_body = Fog::JSON.encode(new_password)
20
+
21
+ # Request
22
+ params = {
23
+ 'method' => :put,
24
+ 'endpoint' => '/shared_storages/access',
25
+ 'body' => string_body
26
+ }
27
+
28
+ request(params)
29
+
30
+ end
31
+
32
+ end # Real
33
+
34
+
35
+ class Mock
36
+
37
+ def change_password(password)
38
+ Fog::Mock.not_implemented
39
+ end
40
+
41
+ end # Mock
42
+
43
+ end # OneAndOne
44
+ end # Compute
45
+ end # Fog
@@ -0,0 +1,69 @@
1
+ module Fog
2
+ module Compute
3
+ class OneAndOne
4
+
5
+ class Real
6
+
7
+ ##
8
+ # Change a server's status
9
+ # URL: [https://cloudpanel-api.1and1.com/documentation/1and1/v1/en/documentation.html#servers__server_id__status_action_put]
10
+ ##
11
+ def change_status(server_id: nil, action: nil, method: nil)
12
+
13
+ # Build PUT body
14
+ status_specs = {
15
+ 'action' => action,
16
+ 'method' => method
17
+ }
18
+
19
+ # Stringify the PUT body
20
+ string_body = Fog::JSON.encode(status_specs)
21
+
22
+ # Request
23
+ params = {
24
+ 'method' => :put,
25
+ 'endpoint' => "/servers/#{server_id}/status/action",
26
+ 'body' => string_body
27
+ }
28
+
29
+ request(params)
30
+
31
+ end
32
+
33
+ end # Real
34
+
35
+
36
+ class Mock
37
+
38
+ def change_status(server_id: nil, action: nil, method: nil)
39
+
40
+ # Search for server
41
+ if server = self.data[:servers].find {
42
+ |hash| hash['id'] == server_id
43
+ }
44
+ if action == 'POWER_ON'
45
+ server['status']['state'] = 'POWERED_ON'
46
+ elsif action == 'POWER_OFF'
47
+ server['status']['state'] = 'POWERED_OFF'
48
+ elsif action == 'REBOOT'
49
+ sleep 3
50
+ server['status']['state'] = 'POWERED_ON'
51
+ end
52
+ else
53
+ raise Fog::Errors::NotFound.new('The requested resource could
54
+ not be found.')
55
+ end
56
+
57
+ # Return Response Object to User
58
+ response = Excon::Response.new
59
+ response.status = 202
60
+ response.body = server
61
+ response
62
+
63
+ end
64
+
65
+ end # Mock
66
+
67
+ end # OneAndOne
68
+ end # Compute
69
+ end # Fog