1and1 1.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 (290) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/1and1-1.0.gem +0 -0
  4. data/1and1.gemspec +20 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +201 -0
  7. data/README.md +499 -0
  8. data/docs/reference.md +2447 -0
  9. data/examples/dvd_examples.rb +15 -0
  10. data/examples/example_app.rb +100 -0
  11. data/examples/firewall_examples.rb +137 -0
  12. data/examples/image_examples.rb +48 -0
  13. data/examples/load_balancer_examples.rb +145 -0
  14. data/examples/log_examples.rb +15 -0
  15. data/examples/monitoring_center_examples.rb +15 -0
  16. data/examples/monitoring_policy_examples.rb +343 -0
  17. data/examples/private_network_examples.rb +86 -0
  18. data/examples/public_ip_examples.rb +42 -0
  19. data/examples/role_examples.rb +113 -0
  20. data/examples/server_appliance_examples.rb +15 -0
  21. data/examples/server_examples.rb +438 -0
  22. data/examples/shared_storage_examples.rb +108 -0
  23. data/examples/usage_examples.rb +6 -0
  24. data/examples/user_examples.rb +113 -0
  25. data/examples/vpn_examples.rb +56 -0
  26. data/lib/1and1/datacenter.rb +73 -0
  27. data/lib/1and1/dvd.rb +73 -0
  28. data/lib/1and1/firewall.rb +427 -0
  29. data/lib/1and1/image.rb +231 -0
  30. data/lib/1and1/load_balancer.rb +448 -0
  31. data/lib/1and1/log.rb +77 -0
  32. data/lib/1and1/monitoring_center.rb +84 -0
  33. data/lib/1and1/monitoring_policy.rb +598 -0
  34. data/lib/1and1/oneandone.rb +57 -0
  35. data/lib/1and1/ping.rb +41 -0
  36. data/lib/1and1/ping_auth.rb +41 -0
  37. data/lib/1and1/pricing.rb +41 -0
  38. data/lib/1and1/private_network.rb +333 -0
  39. data/lib/1and1/public_ip.rb +192 -0
  40. data/lib/1and1/role.rb +381 -0
  41. data/lib/1and1/server.rb +1208 -0
  42. data/lib/1and1/server_appliance.rb +73 -0
  43. data/lib/1and1/shared_storage.rb +379 -0
  44. data/lib/1and1/usage.rb +58 -0
  45. data/lib/1and1/user.rb +374 -0
  46. data/lib/1and1/vpn.rb +249 -0
  47. data/lib/oneandone.rb +27 -0
  48. data/sphinx/Makefile +192 -0
  49. data/sphinx/_build/doctrees/dvds.doctree +0 -0
  50. data/sphinx/_build/doctrees/environment.pickle +0 -0
  51. data/sphinx/_build/doctrees/firewalls.doctree +0 -0
  52. data/sphinx/_build/doctrees/images.doctree +0 -0
  53. data/sphinx/_build/doctrees/index.doctree +0 -0
  54. data/sphinx/_build/doctrees/load_balancers.doctree +0 -0
  55. data/sphinx/_build/doctrees/logs.doctree +0 -0
  56. data/sphinx/_build/doctrees/monitoring_center.doctree +0 -0
  57. data/sphinx/_build/doctrees/monitoring_policies.doctree +0 -0
  58. data/sphinx/_build/doctrees/private_networks.doctree +0 -0
  59. data/sphinx/_build/doctrees/public_ips.doctree +0 -0
  60. data/sphinx/_build/doctrees/server_appliances.doctree +0 -0
  61. data/sphinx/_build/doctrees/servers.doctree +0 -0
  62. data/sphinx/_build/doctrees/shared_storages.doctree +0 -0
  63. data/sphinx/_build/doctrees/usages.doctree +0 -0
  64. data/sphinx/_build/doctrees/users.doctree +0 -0
  65. data/sphinx/_build/html/.buildinfo +4 -0
  66. data/sphinx/_build/html/_sources/dvds.txt +42 -0
  67. data/sphinx/_build/html/_sources/firewalls.txt +189 -0
  68. data/sphinx/_build/html/_sources/images.txt +101 -0
  69. data/sphinx/_build/html/_sources/index.txt +499 -0
  70. data/sphinx/_build/html/_sources/load_balancers.txt +231 -0
  71. data/sphinx/_build/html/_sources/logs.txt +55 -0
  72. data/sphinx/_build/html/_sources/monitoring_center.txt +55 -0
  73. data/sphinx/_build/html/_sources/monitoring_policies.txt +288 -0
  74. data/sphinx/_build/html/_sources/private_networks.txt +146 -0
  75. data/sphinx/_build/html/_sources/public_ips.txt +78 -0
  76. data/sphinx/_build/html/_sources/server_appliances.txt +42 -0
  77. data/sphinx/_build/html/_sources/servers.txt +630 -0
  78. data/sphinx/_build/html/_sources/shared_storages.txt +160 -0
  79. data/sphinx/_build/html/_sources/usages.txt +45 -0
  80. data/sphinx/_build/html/_sources/users.txt +172 -0
  81. data/sphinx/_build/html/_static/ajax-loader.gif +0 -0
  82. data/sphinx/_build/html/_static/alabaster.css +585 -0
  83. data/sphinx/_build/html/_static/basic.css +599 -0
  84. data/sphinx/_build/html/_static/comment-bright.png +0 -0
  85. data/sphinx/_build/html/_static/comment-close.png +0 -0
  86. data/sphinx/_build/html/_static/comment.png +0 -0
  87. data/sphinx/_build/html/_static/doctools.js +263 -0
  88. data/sphinx/_build/html/_static/down-pressed.png +0 -0
  89. data/sphinx/_build/html/_static/down.png +0 -0
  90. data/sphinx/_build/html/_static/file.png +0 -0
  91. data/sphinx/_build/html/_static/jquery-1.11.1.js +10308 -0
  92. data/sphinx/_build/html/_static/jquery.js +4 -0
  93. data/sphinx/_build/html/_static/minus.png +0 -0
  94. data/sphinx/_build/html/_static/plus.png +0 -0
  95. data/sphinx/_build/html/_static/pygments.css +63 -0
  96. data/sphinx/_build/html/_static/searchtools.js +651 -0
  97. data/sphinx/_build/html/_static/underscore-1.3.1.js +999 -0
  98. data/sphinx/_build/html/_static/underscore.js +31 -0
  99. data/sphinx/_build/html/_static/up-pressed.png +0 -0
  100. data/sphinx/_build/html/_static/up.png +0 -0
  101. data/sphinx/_build/html/_static/websupport.js +808 -0
  102. data/sphinx/_build/html/dvds.html +151 -0
  103. data/sphinx/_build/html/firewalls.html +397 -0
  104. data/sphinx/_build/html/genindex.html +114 -0
  105. data/sphinx/_build/html/images.html +236 -0
  106. data/sphinx/_build/html/index.html +571 -0
  107. data/sphinx/_build/html/load_balancers.html +409 -0
  108. data/sphinx/_build/html/logs.html +160 -0
  109. data/sphinx/_build/html/monitoring_center.html +160 -0
  110. data/sphinx/_build/html/monitoring_policies.html +530 -0
  111. data/sphinx/_build/html/objects.inv +0 -0
  112. data/sphinx/_build/html/private_networks.html +316 -0
  113. data/sphinx/_build/html/public_ips.html +215 -0
  114. data/sphinx/_build/html/rb-modindex.html +106 -0
  115. data/sphinx/_build/html/search.html +99 -0
  116. data/sphinx/_build/html/searchindex.js +1 -0
  117. data/sphinx/_build/html/server_appliances.html +153 -0
  118. data/sphinx/_build/html/servers.html +994 -0
  119. data/sphinx/_build/html/shared_storages.html +349 -0
  120. data/sphinx/_build/html/usages.html +140 -0
  121. data/sphinx/_build/html/users.html +363 -0
  122. data/sphinx/conf.py +287 -0
  123. data/sphinx/dvds.rst +42 -0
  124. data/sphinx/firewalls.rst +189 -0
  125. data/sphinx/images.rst +101 -0
  126. data/sphinx/index.rst +499 -0
  127. data/sphinx/load_balancers.rst +231 -0
  128. data/sphinx/logs.rst +55 -0
  129. data/sphinx/make.bat +263 -0
  130. data/sphinx/monitoring_center.rst +55 -0
  131. data/sphinx/monitoring_policies.rst +288 -0
  132. data/sphinx/private_networks.rst +146 -0
  133. data/sphinx/public_ips.rst +78 -0
  134. data/sphinx/server_appliances.rst +42 -0
  135. data/sphinx/servers.rst +630 -0
  136. data/sphinx/shared_storages.rst +160 -0
  137. data/sphinx/usages.rst +45 -0
  138. data/sphinx/users.rst +172 -0
  139. data/test/mock-api/add-firewall.json +66 -0
  140. data/test/mock-api/add-hdd.json +49 -0
  141. data/test/mock-api/add-lb.json +71 -0
  142. data/test/mock-api/add-new-ip.json +18 -0
  143. data/test/mock-api/add-pn.json +66 -0
  144. data/test/mock-api/add-port-mp.json +81 -0
  145. data/test/mock-api/add-process-mp.json +20 -0
  146. data/test/mock-api/add-rule-fp.json +33 -0
  147. data/test/mock-api/add-rule-lb.json +40 -0
  148. data/test/mock-api/add-server-ip.json +66 -0
  149. data/test/mock-api/add-server-mp.json +66 -0
  150. data/test/mock-api/assign-ip-fp.json +32 -0
  151. data/test/mock-api/assign-server-lb.json +39 -0
  152. data/test/mock-api/attach-server-pn.json +14 -0
  153. data/test/mock-api/attach-server-storage.json +24 -0
  154. data/test/mock-api/change-api-key.json +15 -0
  155. data/test/mock-api/change-password.json +5 -0
  156. data/test/mock-api/change-server-status.json +70 -0
  157. data/test/mock-api/clone-server.json +29 -0
  158. data/test/mock-api/create-fp.json +26 -0
  159. data/test/mock-api/create-image.json +30 -0
  160. data/test/mock-api/create-lb.json +33 -0
  161. data/test/mock-api/create-mp.json +81 -0
  162. data/test/mock-api/create-pn.json +11 -0
  163. data/test/mock-api/create-public-ip.json +10 -0
  164. data/test/mock-api/create-server.json +34 -0
  165. data/test/mock-api/create-snapshot.json +74 -0
  166. data/test/mock-api/create-storage.json +13 -0
  167. data/test/mock-api/create-user.json +14 -0
  168. data/test/mock-api/delete-fp.json +26 -0
  169. data/test/mock-api/delete-image.json +26 -0
  170. data/test/mock-api/delete-ip.json +15 -0
  171. data/test/mock-api/delete-lb.json +33 -0
  172. data/test/mock-api/delete-mp.json +71 -0
  173. data/test/mock-api/delete-pn.json +11 -0
  174. data/test/mock-api/delete-public-ip.json +10 -0
  175. data/test/mock-api/delete-rule-fp.json +26 -0
  176. data/test/mock-api/delete-server.json +50 -0
  177. data/test/mock-api/delete-snapshot.json +74 -0
  178. data/test/mock-api/delete-storage.json +24 -0
  179. data/test/mock-api/delete-user.json +15 -0
  180. data/test/mock-api/detach-server-lb.json +33 -0
  181. data/test/mock-api/detach-server-mp.json +65 -0
  182. data/test/mock-api/detach-server-storage.json +19 -0
  183. data/test/mock-api/edit-image.json +26 -0
  184. data/test/mock-api/eject-dvd.json +66 -0
  185. data/test/mock-api/fixed-server-flavors.json +70 -0
  186. data/test/mock-api/get-appliance.json +16 -0
  187. data/test/mock-api/get-dvd.json +9 -0
  188. data/test/mock-api/get-firewall.json +26 -0
  189. data/test/mock-api/get-fixed-server.json +17 -0
  190. data/test/mock-api/get-fp-rule.json +7 -0
  191. data/test/mock-api/get-hardware.json +13 -0
  192. data/test/mock-api/get-hdd.json +5 -0
  193. data/test/mock-api/get-image.json +26 -0
  194. data/test/mock-api/get-lb-rule.json +7 -0
  195. data/test/mock-api/get-lb-server.json +5 -0
  196. data/test/mock-api/get-load-balancer.json +33 -0
  197. data/test/mock-api/get-log.json +23 -0
  198. data/test/mock-api/get-monitoring-center.json +161 -0
  199. data/test/mock-api/get-mp-port.json +7 -0
  200. data/test/mock-api/get-mp-process.json +6 -0
  201. data/test/mock-api/get-mp-server.json +4 -0
  202. data/test/mock-api/get-mp.json +65 -0
  203. data/test/mock-api/get-pn-server.json +4 -0
  204. data/test/mock-api/get-private-network.json +20 -0
  205. data/test/mock-api/get-public-ip.json +10 -0
  206. data/test/mock-api/get-server-dvd.json +4 -0
  207. data/test/mock-api/get-server-image.json +4 -0
  208. data/test/mock-api/get-server-ip-fp.json +4 -0
  209. data/test/mock-api/get-server-ip.json +8 -0
  210. data/test/mock-api/get-server-pn.json +16 -0
  211. data/test/mock-api/get-server-status.json +4 -0
  212. data/test/mock-api/get-server-storage.json +5 -0
  213. data/test/mock-api/get-server.json +44 -0
  214. data/test/mock-api/get-storage.json +19 -0
  215. data/test/mock-api/get-usage.json +161 -0
  216. data/test/mock-api/get-user-api-key.json +3 -0
  217. data/test/mock-api/get-user-api.json +7 -0
  218. data/test/mock-api/get-user.json +15 -0
  219. data/test/mock-api/list-appliances.json +66 -0
  220. data/test/mock-api/list-credentials.json +5 -0
  221. data/test/mock-api/list-dvds.json +128 -0
  222. data/test/mock-api/list-firewalls.json +54 -0
  223. data/test/mock-api/list-fp-rules.json +16 -0
  224. data/test/mock-api/list-hdds.json +7 -0
  225. data/test/mock-api/list-images.json +54 -0
  226. data/test/mock-api/list-lb-rules.json +16 -0
  227. data/test/mock-api/list-lb-servers.json +12 -0
  228. data/test/mock-api/list-load-balancers.json +68 -0
  229. data/test/mock-api/list-logs.json +49 -0
  230. data/test/mock-api/list-monitoring-center-usages.json +90 -0
  231. data/test/mock-api/list-mp-ports.json +16 -0
  232. data/test/mock-api/list-mp-processes.json +14 -0
  233. data/test/mock-api/list-mp-servers.json +10 -0
  234. data/test/mock-api/list-mps.json +152 -0
  235. data/test/mock-api/list-pn-servers.json +10 -0
  236. data/test/mock-api/list-private-networks.json +24 -0
  237. data/test/mock-api/list-public-ips.json +44 -0
  238. data/test/mock-api/list-server-fps.json +4 -0
  239. data/test/mock-api/list-server-ips-fp.json +7 -0
  240. data/test/mock-api/list-server-ips.json +10 -0
  241. data/test/mock-api/list-server-lbs.json +6 -0
  242. data/test/mock-api/list-server-pns.json +6 -0
  243. data/test/mock-api/list-servers.json +66 -0
  244. data/test/mock-api/list-snapshots.json +7 -0
  245. data/test/mock-api/list-storages.json +47 -0
  246. data/test/mock-api/list-usages.json +144 -0
  247. data/test/mock-api/list-user-ips.json +5 -0
  248. data/test/mock-api/list-users.json +31 -0
  249. data/test/mock-api/load-dvd.json +63 -0
  250. data/test/mock-api/modify-fp.json +26 -0
  251. data/test/mock-api/modify-lb.json +33 -0
  252. data/test/mock-api/modify-mp.json +81 -0
  253. data/test/mock-api/modify-pn.json +20 -0
  254. data/test/mock-api/modify-port-mp.json +81 -0
  255. data/test/mock-api/modify-process-mp.json +73 -0
  256. data/test/mock-api/modify-public-ip.json +10 -0
  257. data/test/mock-api/modify-server-hardware.json +44 -0
  258. data/test/mock-api/modify-server-hdd.json +54 -0
  259. data/test/mock-api/modify-server.json +44 -0
  260. data/test/mock-api/modify-storage.json +19 -0
  261. data/test/mock-api/modify-user-api.json +15 -0
  262. data/test/mock-api/modify-user.json +15 -0
  263. data/test/mock-api/reinstall-image.json +52 -0
  264. data/test/mock-api/remove-firewall-policy.json +26 -0
  265. data/test/mock-api/remove-hdd.json +54 -0
  266. data/test/mock-api/remove-ip-fp.json +26 -0
  267. data/test/mock-api/remove-lb.json +66 -0
  268. data/test/mock-api/remove-pn.json +71 -0
  269. data/test/mock-api/remove-port-mp.json +73 -0
  270. data/test/mock-api/remove-process-mp.json +66 -0
  271. data/test/mock-api/remove-rule-lb.json +33 -0
  272. data/test/mock-api/remove-server-ip.json +58 -0
  273. data/test/mock-api/remove-server-pn.json +16 -0
  274. data/test/mock-api/restore-snapshot.json +55 -0
  275. data/test/mock-api/storage-servers.json +12 -0
  276. data/test/test_mock_dvd.rb +55 -0
  277. data/test/test_mock_firewall.rb +309 -0
  278. data/test/test_mock_image.rb +123 -0
  279. data/test/test_mock_load_balancer.rb +312 -0
  280. data/test/test_mock_log.rb +55 -0
  281. data/test/test_mock_monitoring_center.rb +55 -0
  282. data/test/test_mock_monitoring_policy.rb +587 -0
  283. data/test/test_mock_private_network.rb +206 -0
  284. data/test/test_mock_public_ip.rb +118 -0
  285. data/test/test_mock_server.rb +929 -0
  286. data/test/test_mock_server_appliance.rb +55 -0
  287. data/test/test_mock_shared_storage.rb +256 -0
  288. data/test/test_mock_usage.rb +34 -0
  289. data/test/test_mock_user.rb +270 -0
  290. metadata +360 -0
@@ -0,0 +1,77 @@
1
+ module OneAndOne
2
+
3
+
4
+ class Log
5
+
6
+
7
+ def initialize(test: false)
8
+
9
+ # Check if hitting mock api or live api
10
+ if test
11
+ @connection = Excon.new($base_url, :mock => true)
12
+ else
13
+ @connection = Excon.new($base_url)
14
+ end
15
+
16
+ end
17
+
18
+
19
+ def list(page: nil, per_page: nil, sort: nil, q: nil, fields: nil,
20
+ period: 'LAST_24H', start_date: nil, end_date: nil)
21
+
22
+ # Build hash for query parameters
23
+ keyword_args = {
24
+ :page => page,
25
+ :per_page => per_page,
26
+ :sort => sort,
27
+ :q => q,
28
+ :fields => fields,
29
+ :period => period,
30
+ :start_date => start_date,
31
+ :end_date => end_date
32
+ }
33
+
34
+ # Clean out null query parameters
35
+ params = OneAndOne.clean_hash(keyword_args)
36
+
37
+ # Build URL
38
+ path = OneAndOne.build_url('/logs')
39
+
40
+ # Perform request
41
+ response = @connection.request(:method => :get,
42
+ :path => path,
43
+ :headers => $header,
44
+ :query => params)
45
+
46
+ # Check response status
47
+ OneAndOne.check_response(response.body, response.status)
48
+
49
+ #JSON-ify the response string
50
+ JSON.parse(response.body)
51
+
52
+ end
53
+
54
+
55
+ def get(log_id: nil)
56
+
57
+ # Build URL
58
+ path = OneAndOne.build_url("/logs/#{log_id}")
59
+
60
+ # Perform request
61
+ response = @connection.request(:method => :get,
62
+ :path => path,
63
+ :headers => $header)
64
+
65
+ # Check response status
66
+ OneAndOne.check_response(response.body, response.status)
67
+
68
+ #JSON-ify the response string
69
+ JSON.parse(response.body)
70
+
71
+ end
72
+
73
+
74
+ end
75
+
76
+
77
+ end
@@ -0,0 +1,84 @@
1
+ module OneAndOne
2
+
3
+
4
+ class MonitoringCenter
5
+
6
+
7
+ def initialize(test: false)
8
+
9
+ # Check if hitting mock api or live api
10
+ if test
11
+ @connection = Excon.new($base_url, :mock => true)
12
+ else
13
+ @connection = Excon.new($base_url)
14
+ end
15
+
16
+ end
17
+
18
+
19
+ def list(page: nil, per_page: nil, sort: nil, q: nil, fields: nil)
20
+
21
+ # Build hash for query parameters
22
+ keyword_args = {
23
+ :page => page,
24
+ :per_page => per_page,
25
+ :sort => sort,
26
+ :q => q,
27
+ :fields => fields
28
+ }
29
+
30
+ # Clean out null query parameters
31
+ params = OneAndOne.clean_hash(keyword_args)
32
+
33
+ # Build URL
34
+ path = OneAndOne.build_url('/monitoring_center')
35
+
36
+ # Perform request
37
+ response = @connection.request(:method => :get,
38
+ :path => path,
39
+ :headers => $header,
40
+ :query => params)
41
+
42
+ # Check response status
43
+ OneAndOne.check_response(response.body, response.status)
44
+
45
+ #JSON-ify the response string
46
+ JSON.parse(response.body)
47
+
48
+ end
49
+
50
+
51
+ def get(server_id: nil, period: nil, start_date: nil, end_date: nil)
52
+
53
+ # Build hash for query parameters
54
+ keyword_args = {
55
+ :period => period,
56
+ :start_date => start_date,
57
+ :end_date => end_date
58
+ }
59
+
60
+ # Clean out null query parameters
61
+ params = OneAndOne.clean_hash(keyword_args)
62
+
63
+ # Build URL
64
+ path = OneAndOne.build_url("/monitoring_center/#{server_id}")
65
+
66
+ # Perform request
67
+ response = @connection.request(:method => :get,
68
+ :path => path,
69
+ :headers => $header,
70
+ :query => params)
71
+
72
+ # Check response status
73
+ OneAndOne.check_response(response.body, response.status)
74
+
75
+ #JSON-ify the response string
76
+ JSON.parse(response.body)
77
+
78
+ end
79
+
80
+
81
+ end
82
+
83
+
84
+ end
@@ -0,0 +1,598 @@
1
+ module OneAndOne
2
+
3
+
4
+ class MonitoringPolicy
5
+
6
+
7
+ attr_accessor :id
8
+ attr_accessor :specs
9
+
10
+
11
+ def initialize(test: false)
12
+ @id = nil
13
+ @specs = nil
14
+
15
+ # Check if hitting mock api or live api
16
+ if test
17
+ @connection = Excon.new($base_url, :mock => true)
18
+ else
19
+ @connection = Excon.new($base_url)
20
+ end
21
+
22
+ end
23
+
24
+
25
+ def list(page: nil, per_page: nil, sort: nil, q: nil, fields: nil)
26
+
27
+ # Build hash for query parameters
28
+ keyword_args = {
29
+ :page => page,
30
+ :per_page => per_page,
31
+ :sort => sort,
32
+ :q => q,
33
+ :fields => fields
34
+ }
35
+
36
+ # Clean out null query parameters
37
+ params = OneAndOne.clean_hash(keyword_args)
38
+
39
+ # Build URL
40
+ path = OneAndOne.build_url('/monitoring_policies')
41
+
42
+ # Perform request
43
+ response = @connection.request(:method => :get,
44
+ :path => path,
45
+ :headers => $header,
46
+ :query => params)
47
+
48
+ # Check response status
49
+ OneAndOne.check_response(response.body, response.status)
50
+
51
+ #JSON-ify the response string
52
+ JSON.parse(response.body)
53
+
54
+ end
55
+
56
+
57
+ def create(name: nil, description: nil, email: nil, agent: nil,
58
+ thresholds: nil, ports: nil, processes: nil)
59
+
60
+ # Build POST body
61
+ new_monitoring_policy = {
62
+ 'name' => name,
63
+ 'description' => description,
64
+ 'email' => email,
65
+ 'agent' => agent,
66
+ 'thresholds' => thresholds,
67
+ 'ports' => ports,
68
+ 'processes' => processes
69
+ }
70
+
71
+ # Clean out null keys in POST body
72
+ body = OneAndOne.clean_hash(new_monitoring_policy)
73
+
74
+ # Stringify the POST body
75
+ string_body = body.to_json
76
+
77
+ # Build URL
78
+ path = OneAndOne.build_url('/monitoring_policies')
79
+
80
+ # Perform request
81
+ response = @connection.request(:method => :post,
82
+ :path => path,
83
+ :headers => $header,
84
+ :body => string_body)
85
+
86
+ # Check response status
87
+ OneAndOne.check_response(response.body, response.status)
88
+
89
+ #JSON-ify the response string
90
+ json = JSON.parse(response.body)
91
+
92
+ # Save new monitoring policy ID to MonitoringPolicy instance
93
+ @id = json['id']
94
+ @specs = json
95
+
96
+ # If all good, return JSON
97
+ json
98
+
99
+ end
100
+
101
+
102
+ def get(monitoring_policy_id: @id)
103
+
104
+ # If user passed in monitoring policy ID, reassign
105
+ @id = monitoring_policy_id
106
+
107
+ # Build URL
108
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}")
109
+
110
+ # Perform request
111
+ response = @connection.request(:method => :get,
112
+ :path => path,
113
+ :headers => $header)
114
+
115
+ # Check response status
116
+ OneAndOne.check_response(response.body, response.status)
117
+
118
+ #JSON-ify the response string
119
+ json = JSON.parse(response.body)
120
+
121
+ # Reload specs attribute
122
+ @specs = json
123
+
124
+ # If all good, return JSON
125
+ json
126
+
127
+ end
128
+
129
+
130
+ def modify(monitoring_policy_id: @id, name: nil, description: nil,
131
+ email: nil, thresholds: nil)
132
+
133
+ # If user passed in monitoring policy ID, reassign
134
+ @id = monitoring_policy_id
135
+
136
+ # Build PUT body
137
+ modified_mp = {
138
+ 'name' => name,
139
+ 'description' => description,
140
+ 'email' => email,
141
+ 'thresholds' => thresholds
142
+ }
143
+
144
+ # Clean out null keys in PUT body
145
+ body = OneAndOne.clean_hash(modified_mp)
146
+
147
+ # Stringify the POST body
148
+ string_body = body.to_json
149
+
150
+ # Build URL
151
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}")
152
+
153
+ # Perform request
154
+ response = @connection.request(:method => :put,
155
+ :path => path,
156
+ :headers => $header,
157
+ :body => string_body)
158
+
159
+ # Check response status
160
+ OneAndOne.check_response(response.body, response.status)
161
+
162
+ #JSON-ify the response string
163
+ JSON.parse(response.body)
164
+
165
+ end
166
+
167
+
168
+ def delete(monitoring_policy_id: @id)
169
+
170
+ # If user passed in monitoring policy ID, reassign
171
+ @id = monitoring_policy_id
172
+
173
+ # Build URL
174
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}")
175
+
176
+ # Perform request
177
+ response = @connection.request(:method => :delete,
178
+ :path => path,
179
+ :headers => $header)
180
+
181
+ # Check response status
182
+ OneAndOne.check_response(response.body, response.status)
183
+
184
+ #JSON-ify the response string
185
+ JSON.parse(response.body)
186
+
187
+ end
188
+
189
+
190
+ def ports(monitoring_policy_id: @id)
191
+
192
+ # If user passed in monitoring policy ID, reassign
193
+ @id = monitoring_policy_id
194
+
195
+ # Build URL
196
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/ports")
197
+
198
+ # Perform request
199
+ response = @connection.request(:method => :get,
200
+ :path => path,
201
+ :headers => $header)
202
+
203
+ # Check response status
204
+ OneAndOne.check_response(response.body, response.status)
205
+
206
+ #JSON-ify the response string
207
+ JSON.parse(response.body)
208
+
209
+ end
210
+
211
+
212
+ def add_ports(monitoring_policy_id: @id, ports: nil)
213
+
214
+ # If user passed in monitoring policy ID, reassign
215
+ @id = monitoring_policy_id
216
+
217
+ # Build POST body
218
+ new_ports = {
219
+ 'ports' => ports
220
+ }
221
+
222
+ # Clean out null keys in POST body
223
+ body = OneAndOne.clean_hash(new_ports)
224
+
225
+ # Stringify the POST body
226
+ string_body = body.to_json
227
+
228
+ # Build URL
229
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/ports")
230
+
231
+ # Perform request
232
+ response = @connection.request(:method => :post,
233
+ :path => path,
234
+ :headers => $header,
235
+ :body => string_body)
236
+
237
+ # Check response status
238
+ OneAndOne.check_response(response.body, response.status)
239
+
240
+ #JSON-ify the response string
241
+ JSON.parse(response.body)
242
+
243
+ end
244
+
245
+
246
+ def port(monitoring_policy_id: @id, port_id: nil)
247
+
248
+ # If user passed in monitoring policy ID, reassign
249
+ @id = monitoring_policy_id
250
+
251
+ # Build URL
252
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/ports/#{port_id}")
253
+
254
+ # Perform request
255
+ response = @connection.request(:method => :get,
256
+ :path => path,
257
+ :headers => $header)
258
+
259
+ # Check response status
260
+ OneAndOne.check_response(response.body, response.status)
261
+
262
+ #JSON-ify the response string
263
+ JSON.parse(response.body)
264
+
265
+ end
266
+
267
+
268
+ def modify_port(monitoring_policy_id: @id, port_id: nil, new_port: nil)
269
+
270
+ # If user passed in monitoring policy ID, reassign
271
+ @id = monitoring_policy_id
272
+
273
+ # Build PUT body
274
+ modified_port = {
275
+ 'ports' => new_port
276
+ }
277
+
278
+ # Stringify the POST body
279
+ string_body = modified_port.to_json
280
+
281
+ # Build URL
282
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/ports/#{port_id}")
283
+
284
+ # Perform request
285
+ response = @connection.request(:method => :put,
286
+ :path => path,
287
+ :headers => $header,
288
+ :body => string_body)
289
+
290
+ # Check response status
291
+ OneAndOne.check_response(response.body, response.status)
292
+
293
+ #JSON-ify the response string
294
+ JSON.parse(response.body)
295
+
296
+ end
297
+
298
+
299
+ def delete_port(monitoring_policy_id: @id, port_id: nil)
300
+
301
+ # If user passed in monitoring policy ID, reassign
302
+ @id = monitoring_policy_id
303
+
304
+ # Build URL
305
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/ports/#{port_id}")
306
+
307
+ # Perform request
308
+ response = @connection.request(:method => :delete,
309
+ :path => path,
310
+ :headers => $header)
311
+
312
+ # Check response status
313
+ OneAndOne.check_response(response.body, response.status)
314
+
315
+ #JSON-ify the response string
316
+ JSON.parse(response.body)
317
+
318
+ end
319
+
320
+
321
+ def processes(monitoring_policy_id: @id)
322
+
323
+ # If user passed in monitoring policy ID, reassign
324
+ @id = monitoring_policy_id
325
+
326
+ # Build URL
327
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/processes")
328
+
329
+ # Perform request
330
+ response = @connection.request(:method => :get,
331
+ :path => path,
332
+ :headers => $header)
333
+
334
+ # Check response status
335
+ OneAndOne.check_response(response.body, response.status)
336
+
337
+ #JSON-ify the response string
338
+ JSON.parse(response.body)
339
+
340
+ end
341
+
342
+
343
+ def process(monitoring_policy_id: @id, process_id: nil)
344
+
345
+ # If user passed in monitoring policy ID, reassign
346
+ @id = monitoring_policy_id
347
+
348
+ # Build URL
349
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/processes/#{process_id}")
350
+
351
+ # Perform request
352
+ response = @connection.request(:method => :get,
353
+ :path => path,
354
+ :headers => $header)
355
+
356
+ # Check response status
357
+ OneAndOne.check_response(response.body, response.status)
358
+
359
+ #JSON-ify the response string
360
+ JSON.parse(response.body)
361
+
362
+ end
363
+
364
+
365
+ def add_processes(monitoring_policy_id: @id, processes: nil)
366
+
367
+ # If user passed in monitoring policy ID, reassign
368
+ @id = monitoring_policy_id
369
+
370
+ # Build POST body
371
+ new_processes = {
372
+ 'processes' => processes
373
+ }
374
+
375
+ # Clean out null keys in POST body
376
+ body = OneAndOne.clean_hash(new_processes)
377
+
378
+ # Stringify the POST body
379
+ string_body = body.to_json
380
+
381
+ # Build URL
382
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/processes")
383
+
384
+ # Perform request
385
+ response = @connection.request(:method => :post,
386
+ :path => path,
387
+ :headers => $header,
388
+ :body => string_body)
389
+
390
+ # Check response status
391
+ OneAndOne.check_response(response.body, response.status)
392
+
393
+ #JSON-ify the response string
394
+ JSON.parse(response.body)
395
+
396
+ end
397
+
398
+
399
+ def modify_process(monitoring_policy_id: @id, process_id: nil,
400
+ new_process: nil)
401
+
402
+ # If user passed in monitoring policy ID, reassign
403
+ @id = monitoring_policy_id
404
+
405
+ # Build PUT body
406
+ modified_process = {
407
+ 'processes' => new_process
408
+ }
409
+
410
+ # Stringify the POST body
411
+ string_body = modified_process.to_json
412
+
413
+ # Build URL
414
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/processes/#{process_id}")
415
+
416
+ # Perform request
417
+ response = @connection.request(:method => :put,
418
+ :path => path,
419
+ :headers => $header,
420
+ :body => string_body)
421
+
422
+ # Check response status
423
+ OneAndOne.check_response(response.body, response.status)
424
+
425
+ #JSON-ify the response string
426
+ JSON.parse(response.body)
427
+
428
+ end
429
+
430
+
431
+ def delete_process(monitoring_policy_id: @id, process_id: nil)
432
+
433
+ # If user passed in monitoring policy ID, reassign
434
+ @id = monitoring_policy_id
435
+
436
+ # Build URL
437
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/processes/#{process_id}")
438
+
439
+ # Perform request
440
+ response = @connection.request(:method => :delete,
441
+ :path => path,
442
+ :headers => $header)
443
+
444
+ # Check response status
445
+ OneAndOne.check_response(response.body, response.status)
446
+
447
+ #JSON-ify the response string
448
+ JSON.parse(response.body)
449
+
450
+ end
451
+
452
+
453
+ def servers(monitoring_policy_id: @id)
454
+
455
+ # If user passed in monitoring policy ID, reassign
456
+ @id = monitoring_policy_id
457
+
458
+ # Build URL
459
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/servers")
460
+
461
+ # Perform request
462
+ response = @connection.request(:method => :get,
463
+ :path => path,
464
+ :headers => $header)
465
+
466
+ # Check response status
467
+ OneAndOne.check_response(response.body, response.status)
468
+
469
+ #JSON-ify the response string
470
+ JSON.parse(response.body)
471
+
472
+ end
473
+
474
+
475
+ def server(monitoring_policy_id: @id, server_id: nil)
476
+
477
+ # If user passed in monitoring policy ID, reassign
478
+ @id = monitoring_policy_id
479
+
480
+ # Build URL
481
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/servers/#{server_id}")
482
+
483
+ # Perform request
484
+ response = @connection.request(:method => :get,
485
+ :path => path,
486
+ :headers => $header)
487
+
488
+ # Check response status
489
+ OneAndOne.check_response(response.body, response.status)
490
+
491
+ #JSON-ify the response string
492
+ JSON.parse(response.body)
493
+
494
+ end
495
+
496
+
497
+ def add_servers(monitoring_policy_id: @id, servers: nil)
498
+
499
+ # If user passed in monitoring policy ID, reassign
500
+ @id = monitoring_policy_id
501
+
502
+ # Build POST body
503
+ new_servers = {
504
+ 'servers' => servers
505
+ }
506
+
507
+ # Clean out null keys in POST body
508
+ body = OneAndOne.clean_hash(new_servers)
509
+
510
+ # Stringify the POST body
511
+ string_body = body.to_json
512
+
513
+ # Build URL
514
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/servers")
515
+
516
+ # Perform request
517
+ response = @connection.request(:method => :post,
518
+ :path => path,
519
+ :headers => $header,
520
+ :body => string_body)
521
+
522
+ # Check response status
523
+ OneAndOne.check_response(response.body, response.status)
524
+
525
+ #JSON-ify the response string
526
+ JSON.parse(response.body)
527
+
528
+ end
529
+
530
+
531
+ def remove_server(monitoring_policy_id: @id, server_id: nil)
532
+
533
+ # If user passed in monitoring policy ID, reassign
534
+ @id = monitoring_policy_id
535
+
536
+ # Build URL
537
+ path = OneAndOne.build_url("/monitoring_policies/#{@id}/servers/#{server_id}")
538
+
539
+ # Perform request
540
+ response = @connection.request(:method => :delete,
541
+ :path => path,
542
+ :headers => $header)
543
+
544
+ # Check response status
545
+ OneAndOne.check_response(response.body, response.status)
546
+
547
+ #JSON-ify the response string
548
+ JSON.parse(response.body)
549
+
550
+ end
551
+
552
+
553
+ def reload
554
+
555
+ # This reload fx is just a wrapper for the get fx
556
+ get
557
+
558
+ end
559
+
560
+
561
+ def wait_for(timeout: 25, interval: 1)
562
+
563
+ # Capture start time
564
+ start = Time.now
565
+
566
+ # Poll MP and check initial state
567
+ initial_response = get
568
+ mp_state = initial_response['state']
569
+
570
+ # Keep polling the MP's state until good
571
+ until $good_states.include? mp_state
572
+
573
+ # Wait 1 second before polling again
574
+ sleep interval
575
+
576
+ # Check MP state again
577
+ current_response = get
578
+ mp_state = current_response['state']
579
+
580
+ # Calculate current duration and check for timeout
581
+ duration = (Time.now - start) / 60
582
+ if duration > timeout
583
+ puts "The operation timed out after #{timeout} minutes.\n"
584
+ return
585
+ end
586
+
587
+ end
588
+
589
+ # Return Duration
590
+ {:duration => duration}
591
+
592
+ end
593
+
594
+
595
+ end
596
+
597
+
598
+ end