crowbar-client 1.0.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 (232) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +6 -0
  3. data/LICENSE +202 -0
  4. data/README.md +49 -0
  5. data/bin/crowbar +37 -0
  6. data/lib/crowbar-client.rb +17 -0
  7. data/lib/crowbar/client.rb +82 -0
  8. data/lib/crowbar/client/app.rb +60 -0
  9. data/lib/crowbar/client/app/barclamp.rb +77 -0
  10. data/lib/crowbar/client/app/base.rb +97 -0
  11. data/lib/crowbar/client/app/batch.rb +100 -0
  12. data/lib/crowbar/client/app/entry.rb +121 -0
  13. data/lib/crowbar/client/app/host_ip.rb +65 -0
  14. data/lib/crowbar/client/app/interface.rb +63 -0
  15. data/lib/crowbar/client/app/network.rb +35 -0
  16. data/lib/crowbar/client/app/node.rb +451 -0
  17. data/lib/crowbar/client/app/proposal.rb +300 -0
  18. data/lib/crowbar/client/app/repository.rb +149 -0
  19. data/lib/crowbar/client/app/reset.rb +58 -0
  20. data/lib/crowbar/client/app/role.rb +140 -0
  21. data/lib/crowbar/client/app/virtual_ip.rb +65 -0
  22. data/lib/crowbar/client/command.rb +54 -0
  23. data/lib/crowbar/client/command/barclamp.rb +26 -0
  24. data/lib/crowbar/client/command/barclamp/list.rb +64 -0
  25. data/lib/crowbar/client/command/base.rb +55 -0
  26. data/lib/crowbar/client/command/batch.rb +29 -0
  27. data/lib/crowbar/client/command/batch/build.rb +36 -0
  28. data/lib/crowbar/client/command/batch/export.rb +36 -0
  29. data/lib/crowbar/client/command/host_ip.rb +29 -0
  30. data/lib/crowbar/client/command/host_ip/allocate.rb +50 -0
  31. data/lib/crowbar/client/command/host_ip/deallocate.rb +42 -0
  32. data/lib/crowbar/client/command/interface.rb +29 -0
  33. data/lib/crowbar/client/command/interface/disable.rb +42 -0
  34. data/lib/crowbar/client/command/interface/enable.rb +50 -0
  35. data/lib/crowbar/client/command/node.rb +74 -0
  36. data/lib/crowbar/client/command/node/allocate.rb +48 -0
  37. data/lib/crowbar/client/command/node/delete.rb +44 -0
  38. data/lib/crowbar/client/command/node/hardware.rb +48 -0
  39. data/lib/crowbar/client/command/node/identify.rb +48 -0
  40. data/lib/crowbar/client/command/node/list.rb +71 -0
  41. data/lib/crowbar/client/command/node/powercycle.rb +48 -0
  42. data/lib/crowbar/client/command/node/poweroff.rb +48 -0
  43. data/lib/crowbar/client/command/node/poweron.rb +48 -0
  44. data/lib/crowbar/client/command/node/reboot.rb +48 -0
  45. data/lib/crowbar/client/command/node/reinstall.rb +48 -0
  46. data/lib/crowbar/client/command/node/rename.rb +44 -0
  47. data/lib/crowbar/client/command/node/reset.rb +48 -0
  48. data/lib/crowbar/client/command/node/role.rb +44 -0
  49. data/lib/crowbar/client/command/node/show.rb +67 -0
  50. data/lib/crowbar/client/command/node/shutdown.rb +48 -0
  51. data/lib/crowbar/client/command/node/status.rb +71 -0
  52. data/lib/crowbar/client/command/node/transition.rb +44 -0
  53. data/lib/crowbar/client/command/proposal.rb +44 -0
  54. data/lib/crowbar/client/command/proposal/commit.rb +50 -0
  55. data/lib/crowbar/client/command/proposal/create.rb +130 -0
  56. data/lib/crowbar/client/command/proposal/delete.rb +48 -0
  57. data/lib/crowbar/client/command/proposal/dequeue.rb +48 -0
  58. data/lib/crowbar/client/command/proposal/edit.rb +129 -0
  59. data/lib/crowbar/client/command/proposal/list.rb +68 -0
  60. data/lib/crowbar/client/command/proposal/show.rb +71 -0
  61. data/lib/crowbar/client/command/repository.rb +38 -0
  62. data/lib/crowbar/client/command/repository/activate.rb +44 -0
  63. data/lib/crowbar/client/command/repository/activate_all.rb +42 -0
  64. data/lib/crowbar/client/command/repository/deactivate.rb +44 -0
  65. data/lib/crowbar/client/command/repository/deactivate_all.rb +42 -0
  66. data/lib/crowbar/client/command/repository/list.rb +71 -0
  67. data/lib/crowbar/client/command/reset.rb +29 -0
  68. data/lib/crowbar/client/command/reset/nodes.rb +36 -0
  69. data/lib/crowbar/client/command/reset/proposal.rb +36 -0
  70. data/lib/crowbar/client/command/role.rb +29 -0
  71. data/lib/crowbar/client/command/role/list.rb +70 -0
  72. data/lib/crowbar/client/command/role/show.rb +70 -0
  73. data/lib/crowbar/client/command/virtual_ip.rb +29 -0
  74. data/lib/crowbar/client/command/virtual_ip/allocate.rb +50 -0
  75. data/lib/crowbar/client/command/virtual_ip/deallocate.rb +42 -0
  76. data/lib/crowbar/client/config.rb +178 -0
  77. data/lib/crowbar/client/filter.rb +33 -0
  78. data/lib/crowbar/client/filter/array.rb +29 -0
  79. data/lib/crowbar/client/filter/base.rb +41 -0
  80. data/lib/crowbar/client/filter/hash.rb +33 -0
  81. data/lib/crowbar/client/filter/subset.rb +45 -0
  82. data/lib/crowbar/client/formatter.rb +33 -0
  83. data/lib/crowbar/client/formatter/array.rb +49 -0
  84. data/lib/crowbar/client/formatter/base.rb +47 -0
  85. data/lib/crowbar/client/formatter/hash.rb +51 -0
  86. data/lib/crowbar/client/formatter/nested.rb +134 -0
  87. data/lib/crowbar/client/mixin.rb +30 -0
  88. data/lib/crowbar/client/mixin/barclamp.rb +41 -0
  89. data/lib/crowbar/client/mixin/filter.rb +33 -0
  90. data/lib/crowbar/client/mixin/format.rb +56 -0
  91. data/lib/crowbar/client/request.rb +57 -0
  92. data/lib/crowbar/client/request/barclamp.rb +26 -0
  93. data/lib/crowbar/client/request/barclamp/list.rb +35 -0
  94. data/lib/crowbar/client/request/base.rb +71 -0
  95. data/lib/crowbar/client/request/batch.rb +29 -0
  96. data/lib/crowbar/client/request/batch/build.rb +33 -0
  97. data/lib/crowbar/client/request/batch/export.rb +33 -0
  98. data/lib/crowbar/client/request/host_ip.rb +29 -0
  99. data/lib/crowbar/client/request/host_ip/allocate.rb +50 -0
  100. data/lib/crowbar/client/request/host_ip/deallocate.rb +48 -0
  101. data/lib/crowbar/client/request/interface.rb +29 -0
  102. data/lib/crowbar/client/request/interface/disable.rb +48 -0
  103. data/lib/crowbar/client/request/interface/enable.rb +48 -0
  104. data/lib/crowbar/client/request/node.rb +47 -0
  105. data/lib/crowbar/client/request/node/action.rb +39 -0
  106. data/lib/crowbar/client/request/node/delete.rb +38 -0
  107. data/lib/crowbar/client/request/node/list.rb +37 -0
  108. data/lib/crowbar/client/request/node/rename.rb +47 -0
  109. data/lib/crowbar/client/request/node/role.rb +47 -0
  110. data/lib/crowbar/client/request/node/show.rb +38 -0
  111. data/lib/crowbar/client/request/node/status.rb +36 -0
  112. data/lib/crowbar/client/request/node/transition.rb +48 -0
  113. data/lib/crowbar/client/request/party.rb +79 -0
  114. data/lib/crowbar/client/request/proposal.rb +47 -0
  115. data/lib/crowbar/client/request/proposal/commit.rb +40 -0
  116. data/lib/crowbar/client/request/proposal/create.rb +46 -0
  117. data/lib/crowbar/client/request/proposal/delete.rb +39 -0
  118. data/lib/crowbar/client/request/proposal/dequeue.rb +40 -0
  119. data/lib/crowbar/client/request/proposal/edit.rb +47 -0
  120. data/lib/crowbar/client/request/proposal/list.rb +38 -0
  121. data/lib/crowbar/client/request/proposal/show.rb +39 -0
  122. data/lib/crowbar/client/request/proposal/template.rb +39 -0
  123. data/lib/crowbar/client/request/repository.rb +38 -0
  124. data/lib/crowbar/client/request/repository/activate.rb +46 -0
  125. data/lib/crowbar/client/request/repository/activate_all.rb +37 -0
  126. data/lib/crowbar/client/request/repository/deactivate.rb +46 -0
  127. data/lib/crowbar/client/request/repository/deactivate_all.rb +37 -0
  128. data/lib/crowbar/client/request/repository/list.rb +36 -0
  129. data/lib/crowbar/client/request/reset.rb +29 -0
  130. data/lib/crowbar/client/request/reset/nodes.rb +33 -0
  131. data/lib/crowbar/client/request/reset/proposal.rb +33 -0
  132. data/lib/crowbar/client/request/role.rb +29 -0
  133. data/lib/crowbar/client/request/role/list.rb +38 -0
  134. data/lib/crowbar/client/request/role/show.rb +39 -0
  135. data/lib/crowbar/client/request/virtual_ip.rb +29 -0
  136. data/lib/crowbar/client/request/virtual_ip/allocate.rb +50 -0
  137. data/lib/crowbar/client/request/virtual_ip/deallocate.rb +48 -0
  138. data/lib/crowbar/client/util.rb +27 -0
  139. data/lib/crowbar/client/util/editor.rb +107 -0
  140. data/lib/crowbar/client/util/runner.rb +77 -0
  141. data/lib/crowbar/client/version.rb +33 -0
  142. data/spec/crowbar/client/app_spec.rb +21 -0
  143. data/spec/crowbar/client/command/barclamp/list_spec.rb +39 -0
  144. data/spec/crowbar/client/command/batch/build_spec.rb +39 -0
  145. data/spec/crowbar/client/command/batch/export_spec.rb +39 -0
  146. data/spec/crowbar/client/command/host_ip/allocate_spec.rb +39 -0
  147. data/spec/crowbar/client/command/host_ip/deallocate_spec.rb +39 -0
  148. data/spec/crowbar/client/command/interface/disable_spec.rb +39 -0
  149. data/spec/crowbar/client/command/interface/enable_spec.rb +39 -0
  150. data/spec/crowbar/client/command/node/allocate_spec.rb +39 -0
  151. data/spec/crowbar/client/command/node/delete_spec.rb +39 -0
  152. data/spec/crowbar/client/command/node/hardware_spec.rb +39 -0
  153. data/spec/crowbar/client/command/node/identify_spec.rb +39 -0
  154. data/spec/crowbar/client/command/node/list_spec.rb +39 -0
  155. data/spec/crowbar/client/command/node/powercycle_spec.rb +39 -0
  156. data/spec/crowbar/client/command/node/poweroff_spec.rb +39 -0
  157. data/spec/crowbar/client/command/node/poweron_spec.rb +39 -0
  158. data/spec/crowbar/client/command/node/reboot_spec.rb +39 -0
  159. data/spec/crowbar/client/command/node/reinstall_spec.rb +39 -0
  160. data/spec/crowbar/client/command/node/rename_spec.rb +39 -0
  161. data/spec/crowbar/client/command/node/reset_spec.rb +39 -0
  162. data/spec/crowbar/client/command/node/role_spec.rb +39 -0
  163. data/spec/crowbar/client/command/node/show_spec.rb +39 -0
  164. data/spec/crowbar/client/command/node/shutdown_spec.rb +39 -0
  165. data/spec/crowbar/client/command/node/status_spec.rb +39 -0
  166. data/spec/crowbar/client/command/node/transition_spec.rb +39 -0
  167. data/spec/crowbar/client/command/proposal/commit_spec.rb +39 -0
  168. data/spec/crowbar/client/command/proposal/create_spec.rb +61 -0
  169. data/spec/crowbar/client/command/proposal/delete_spec.rb +39 -0
  170. data/spec/crowbar/client/command/proposal/dequeue_spec.rb +39 -0
  171. data/spec/crowbar/client/command/proposal/edit_spec.rb +62 -0
  172. data/spec/crowbar/client/command/proposal/list_spec.rb +39 -0
  173. data/spec/crowbar/client/command/proposal/show_spec.rb +39 -0
  174. data/spec/crowbar/client/command/repository/activate_all_spec.rb +39 -0
  175. data/spec/crowbar/client/command/repository/activate_spec.rb +39 -0
  176. data/spec/crowbar/client/command/repository/deactivate_all_spec.rb +39 -0
  177. data/spec/crowbar/client/command/repository/deactivate_spec.rb +39 -0
  178. data/spec/crowbar/client/command/repository/list_spec.rb +39 -0
  179. data/spec/crowbar/client/command/reset/nodes_spec.rb +39 -0
  180. data/spec/crowbar/client/command/reset/proposal_spec.rb +39 -0
  181. data/spec/crowbar/client/command/role/list_spec.rb +39 -0
  182. data/spec/crowbar/client/command/role/show_spec.rb +39 -0
  183. data/spec/crowbar/client/command/virtual_ip/allocate_spec.rb +39 -0
  184. data/spec/crowbar/client/command/virtual_ip/deallocate_spec.rb +39 -0
  185. data/spec/crowbar/client/filter/array_spec.rb +65 -0
  186. data/spec/crowbar/client/filter/hash_spec.rb +65 -0
  187. data/spec/crowbar/client/filter/subset_spec.rb +77 -0
  188. data/spec/crowbar/client/formatter/array_spec.rb +102 -0
  189. data/spec/crowbar/client/formatter/hash_spec.rb +108 -0
  190. data/spec/crowbar/client/formatter/nested_spec.rb +106 -0
  191. data/spec/crowbar/client/request/barclamp/list_spec.rb +50 -0
  192. data/spec/crowbar/client/request/batch/build_spec.rb +64 -0
  193. data/spec/crowbar/client/request/batch/export_spec.rb +64 -0
  194. data/spec/crowbar/client/request/host_ip/allocate_spec.rb +61 -0
  195. data/spec/crowbar/client/request/host_ip/deallocate_spec.rb +57 -0
  196. data/spec/crowbar/client/request/interface/disable_spec.rb +57 -0
  197. data/spec/crowbar/client/request/interface/enable_spec.rb +57 -0
  198. data/spec/crowbar/client/request/node/action_spec.rb +53 -0
  199. data/spec/crowbar/client/request/node/delete_spec.rb +52 -0
  200. data/spec/crowbar/client/request/node/list_spec.rb +50 -0
  201. data/spec/crowbar/client/request/node/rename_spec.rb +55 -0
  202. data/spec/crowbar/client/request/node/role_spec.rb +55 -0
  203. data/spec/crowbar/client/request/node/show_spec.rb +52 -0
  204. data/spec/crowbar/client/request/node/status_spec.rb +50 -0
  205. data/spec/crowbar/client/request/node/transition_spec.rb +56 -0
  206. data/spec/crowbar/client/request/party_spec.rb +24 -0
  207. data/spec/crowbar/client/request/proposal/commit_spec.rb +53 -0
  208. data/spec/crowbar/client/request/proposal/create_spec.rb +56 -0
  209. data/spec/crowbar/client/request/proposal/delete_spec.rb +53 -0
  210. data/spec/crowbar/client/request/proposal/dequeue_spec.rb +53 -0
  211. data/spec/crowbar/client/request/proposal/edit_spec.rb +56 -0
  212. data/spec/crowbar/client/request/proposal/list_spec.rb +52 -0
  213. data/spec/crowbar/client/request/proposal/show_spec.rb +53 -0
  214. data/spec/crowbar/client/request/proposal/template_spec.rb +52 -0
  215. data/spec/crowbar/client/request/repository/activate_all_spec.rb +50 -0
  216. data/spec/crowbar/client/request/repository/activate_spec.rb +56 -0
  217. data/spec/crowbar/client/request/repository/deactivate_all_spec.rb +50 -0
  218. data/spec/crowbar/client/request/repository/deactivate_spec.rb +56 -0
  219. data/spec/crowbar/client/request/repository/list_spec.rb +50 -0
  220. data/spec/crowbar/client/request/reset/nodes_spec.rb +55 -0
  221. data/spec/crowbar/client/request/reset/proposal_spec.rb +55 -0
  222. data/spec/crowbar/client/request/role/list_spec.rb +52 -0
  223. data/spec/crowbar/client/request/role/show_spec.rb +53 -0
  224. data/spec/crowbar/client/request/virtual_ip/allocate_spec.rb +61 -0
  225. data/spec/crowbar/client/request/virtual_ip/deallocate_spec.rb +57 -0
  226. data/spec/crowbar/client/util/editor_spec.rb +108 -0
  227. data/spec/crowbar/client/util/runner_spec.rb +24 -0
  228. data/spec/crowbar/client_spec.rb +21 -0
  229. data/spec/spec_helper.rb +55 -0
  230. data/spec/support/command_context.rb +37 -0
  231. data/spec/support/request_examples.rb +55 -0
  232. metadata +549 -0
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Hardware < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :update
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered hardware for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Identify < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :identify
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered identify for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,71 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Crowbar
18
+ module Client
19
+ module Command
20
+ module Node
21
+ class List < Base
22
+ include Mixin::Format
23
+ include Mixin::Filter
24
+
25
+ def request
26
+ @request ||= Request::Node::List.new(
27
+ args
28
+ )
29
+ end
30
+
31
+ def execute
32
+ request.process do |request|
33
+ case request.code
34
+ when 200
35
+ formatter = Formatter::Hash.new(
36
+ format: provide_format,
37
+ headings: ["Name", "Alias"],
38
+ values: Filter::Hash.new(
39
+ filter: provide_filter,
40
+ values: content_from(request)
41
+ ).result
42
+ )
43
+
44
+ if formatter.empty?
45
+ err "No nodes"
46
+ else
47
+ say formatter.result
48
+ end
49
+ else
50
+ err request.parsed_response["error"]
51
+ end
52
+ end
53
+ end
54
+
55
+ protected
56
+
57
+ def content_from(request)
58
+ [].tap do |row|
59
+ request.parsed_response["nodes"].each do |child|
60
+ row.push(
61
+ name: child["name"],
62
+ alias: child["alias"]
63
+ )
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Powercycle < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :powercycle
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered powercycle for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Poweroff < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :poweroff
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered poweroff for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Poweron < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :poweron
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered poweron for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Reboot < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :reboot
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered reboot for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Command
22
+ module Node
23
+ class Reinstall < Base
24
+ def request
25
+ @request ||= Request::Node::Action.new(
26
+ args.easy_merge(
27
+ action: :reinstall
28
+ )
29
+ )
30
+ end
31
+
32
+ def execute
33
+ request.process do |request|
34
+ case request.code
35
+ when 200
36
+ say "Successfully triggered reinstall for #{args.name}"
37
+ when 404
38
+ err "Node does not exist"
39
+ else
40
+ err request.parsed_response["error"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,44 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Crowbar
18
+ module Client
19
+ module Command
20
+ module Node
21
+ class Rename < Base
22
+ def request
23
+ @request ||= Request::Node::Rename.new(
24
+ args
25
+ )
26
+ end
27
+
28
+ def execute
29
+ request.process do |request|
30
+ case request.code
31
+ when 200
32
+ say "Successfully updated alias for #{args.name}"
33
+ when 404
34
+ err "Node does not exist"
35
+ else
36
+ err request.parsed_response["error"]
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end