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,63 @@
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 App
20
+ class Interface < Base
21
+ desc "enable PROPOSAL NODE NETWORK",
22
+ "Enable a network interface"
23
+
24
+ long_desc <<-LONGDESC
25
+ `enable PROPOSAL NODE NETWORK` will try to enable the
26
+ specified network interface on the specified node.
27
+ LONGDESC
28
+
29
+ def enable(proposal, node, network)
30
+ Command::Interface::Enable.new(
31
+ *command_params(
32
+ proposal: proposal,
33
+ node: node,
34
+ network: network
35
+ )
36
+ ).execute
37
+ rescue SimpleCatchableError => e
38
+ err e.message, 1
39
+ end
40
+
41
+ desc "disable PROPOSAL NODE NETWORK",
42
+ "Disable a network interface"
43
+
44
+ long_desc <<-LONGDESC
45
+ `disable PROPOSAL NODE NETWORK` will try to disable the
46
+ specified network interface on the specified node.
47
+ LONGDESC
48
+
49
+ def disable(proposal, node, network)
50
+ Command::Interface::Disable.new(
51
+ *command_params(
52
+ proposal: proposal,
53
+ node: node,
54
+ network: network
55
+ )
56
+ ).execute
57
+ rescue SimpleCatchableError => e
58
+ err e.message, 1
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,35 @@
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 App
20
+ class Network < Base
21
+ desc "virtualip [COMMANDS]",
22
+ "Actions for virtual IP addresses, call without params for help"
23
+ subcommand "virtualip", Crowbar::Client::App::VirtualIP
24
+
25
+ desc "hostip [COMMANDS]",
26
+ "Actions for host IP addresses, call without params for help"
27
+ subcommand "hostip", Crowbar::Client::App::HostIP
28
+
29
+ desc "interface [COMMANDS]",
30
+ "Actions for network interfaces, call without params for help"
31
+ subcommand "interface", Crowbar::Client::App::Interface
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,451 @@
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 App
20
+ class Node < Base
21
+ desc "status",
22
+ "Show current nodes status"
23
+
24
+ long_desc <<-LONGDESC
25
+ `status` will print out a list of nodes and will display some
26
+ information about the current status if it gets installed or
27
+ if it is in a ready state. You can display the list in different
28
+ output formats and you can filter the list by any search criteria.
29
+
30
+ With --format <format> option you can choose an output format
31
+ with the available options table, json or plain. You can also
32
+ use the shortcut options --table, --json or --plain.
33
+
34
+ With --filter <filter> option you can limit the result of
35
+ printed out elements. You can use any substring that is part
36
+ of the found elements.
37
+ LONGDESC
38
+
39
+ method_option :format,
40
+ type: :string,
41
+ default: "table",
42
+ banner: "<format>",
43
+ desc: "Format of the output, valid formats are table, json or plain"
44
+
45
+ class_option :table,
46
+ type: :boolean,
47
+ default: false,
48
+ aliases: [],
49
+ desc: "Format output as table, a shortcut for --format table option"
50
+
51
+ class_option :json,
52
+ type: :boolean,
53
+ default: false,
54
+ aliases: [],
55
+ desc: "Format output as table, a shortcut for --format table option"
56
+
57
+ class_option :plain,
58
+ type: :boolean,
59
+ default: false,
60
+ aliases: [],
61
+ desc: "Format output as table, a shortcut for --format table option"
62
+
63
+ method_option :filter,
64
+ type: :string,
65
+ default: nil,
66
+ banner: "<filter>",
67
+ desc: "Filter by criteria, display only data that contains filter"
68
+
69
+ def status
70
+ Command::Node::Status.new(
71
+ *command_params
72
+ ).execute
73
+ rescue SimpleCatchableError => e
74
+ err e.message, 1
75
+ end
76
+
77
+ desc "list",
78
+ "Show a list of available nodes"
79
+
80
+ long_desc <<-LONGDESC
81
+ `list` will print out a list of all available nodes as a
82
+ pretty simple and parseable list. You can display the list
83
+ in different output formats and you can filter the list by
84
+ any search criteria.
85
+
86
+ With --format <format> option you can choose an output format
87
+ with the available options table, json or plain. You can also
88
+ use the shortcut options --table, --json or --plain.
89
+
90
+ With --filter <filter> option you can limit the result of
91
+ printed out elements. You can use any substring that is part
92
+ of the found elements.
93
+ LONGDESC
94
+
95
+ method_option :format,
96
+ type: :string,
97
+ default: "table",
98
+ banner: "<format>",
99
+ desc: "Format of the output, valid formats are table, json or plain"
100
+
101
+ class_option :table,
102
+ type: :boolean,
103
+ default: false,
104
+ aliases: [],
105
+ desc: "Format output as table, a shortcut for --format table option"
106
+
107
+ class_option :json,
108
+ type: :boolean,
109
+ default: false,
110
+ aliases: [],
111
+ desc: "Format output as table, a shortcut for --format json option"
112
+
113
+ class_option :plain,
114
+ type: :boolean,
115
+ default: false,
116
+ aliases: [],
117
+ desc: "Format output as table, a shortcut for --format plain option"
118
+
119
+ method_option :filter,
120
+ type: :string,
121
+ default: nil,
122
+ banner: "<filter>",
123
+ desc: "Filter by criteria, display only data that contains filter"
124
+
125
+ def list
126
+ Command::Node::List.new(
127
+ *command_params
128
+ ).execute
129
+ rescue SimpleCatchableError => e
130
+ err e.message, 1
131
+ end
132
+
133
+ desc "show NAME_OR_ALIAS",
134
+ "Show a specific node config"
135
+
136
+ long_desc <<-LONGDESC
137
+ `show NAME_OR_ALIAS` will try to fetch the configuration
138
+ for the specified node. If you just want to see a specific
139
+ subset of the configuration you can provide the --filter
140
+ option separated by a dot for every element. If you want
141
+ to get into details of array structures you can use the
142
+ array index starting at 0 as a path segment to get further
143
+ details.
144
+
145
+ With --format <format> option you can choose an output format
146
+ with the available options table, json or plain. You can also
147
+ use the shortcut options --table, --json or --plain.
148
+
149
+ With --filter <filter> option you can limit the result of
150
+ printed out elements. You can use any substring that is part
151
+ of the found elements.
152
+ LONGDESC
153
+
154
+ method_option :format,
155
+ type: :string,
156
+ default: "table",
157
+ banner: "<format>",
158
+ desc: "Format of the output, valid formats are table, json or plain"
159
+
160
+ class_option :table,
161
+ type: :boolean,
162
+ default: false,
163
+ aliases: [],
164
+ desc: "Format output as table, a shortcut for --format table option"
165
+
166
+ class_option :json,
167
+ type: :boolean,
168
+ default: false,
169
+ aliases: [],
170
+ desc: "Format output as table, a shortcut for --format table option"
171
+
172
+ class_option :plain,
173
+ type: :boolean,
174
+ default: false,
175
+ aliases: [],
176
+ desc: "Format output as table, a shortcut for --format table option"
177
+
178
+ method_option :filter,
179
+ type: :string,
180
+ default: nil,
181
+ banner: "<filter>",
182
+ desc: "Filter by criteria, display only data that contains filter"
183
+
184
+ def show(name)
185
+ Command::Node::Show.new(
186
+ *command_params(
187
+ name: name
188
+ )
189
+ ).execute
190
+ rescue SimpleCatchableError => e
191
+ err e.message, 1
192
+ end
193
+
194
+ desc "hardware NAME_OR_ALIAS",
195
+ "Hardware update a node"
196
+
197
+ long_desc <<-LONGDESC
198
+ `hardware NAME_OR_ALIAS` will try to invoke a hardware update
199
+ for the specified node.
200
+ LONGDESC
201
+
202
+ def hardware(name)
203
+ Command::Node::Hardware.new(
204
+ *command_params(
205
+ name: name
206
+ )
207
+ ).execute
208
+ rescue SimpleCatchableError => e
209
+ err e.message, 1
210
+ end
211
+
212
+ desc "identify NAME_OR_ALIAS",
213
+ "Identify the specified node"
214
+
215
+ long_desc <<-LONGDESC
216
+ `identify NAME_OR_ALIAS` will try to indentify the specified
217
+ node.
218
+ LONGDESC
219
+
220
+ def identify(name)
221
+ Command::Node::Identify.new(
222
+ *command_params(
223
+ name: name
224
+ )
225
+ ).execute
226
+ rescue SimpleCatchableError => e
227
+ err e.message, 1
228
+ end
229
+
230
+ desc "delete NAME_OR_ALIAS",
231
+ "Delete the specified node"
232
+
233
+ long_desc <<-LONGDESC
234
+ `delete NAME_OR_ALIAS` will try to remove the specified
235
+ node.
236
+ LONGDESC
237
+
238
+ def delete(name)
239
+ Command::Node::Delete.new(
240
+ *command_params(
241
+ name: name
242
+ )
243
+ ).execute
244
+ rescue SimpleCatchableError => e
245
+ err e.message, 1
246
+ end
247
+
248
+ desc "reinstall NAME_OR_ALIAS",
249
+ "Reinstall the specified node"
250
+
251
+ long_desc <<-LONGDESC
252
+ `reinstall NAME_OR_ALIAS` will try to reinstall the specified
253
+ node.
254
+ LONGDESC
255
+
256
+ def reinstall(name)
257
+ Command::Node::Reinstall.new(
258
+ *command_params(
259
+ name: name
260
+ )
261
+ ).execute
262
+ rescue SimpleCatchableError => e
263
+ err e.message, 1
264
+ end
265
+
266
+ desc "reset NAME_OR_ALIAS",
267
+ "Reset the specified node"
268
+
269
+ long_desc <<-LONGDESC
270
+ `reset NAME_OR_ALIAS` will try to reset the specified
271
+ node.
272
+ LONGDESC
273
+
274
+ def reset(name)
275
+ Command::Node::Reset.new(
276
+ *command_params(
277
+ name: name
278
+ )
279
+ ).execute
280
+ rescue SimpleCatchableError => e
281
+ err e.message, 1
282
+ end
283
+
284
+ desc "shutdown NAME_OR_ALIAS",
285
+ "Shutdown the specified node"
286
+
287
+ long_desc <<-LONGDESC
288
+ `shutdown NAME_OR_ALIAS` will try to shutdown the specified
289
+ node.
290
+ LONGDESC
291
+
292
+ def shutdown(name)
293
+ Command::Node::Shutdown.new(
294
+ *command_params(
295
+ name: name
296
+ )
297
+ ).execute
298
+ rescue SimpleCatchableError => e
299
+ err e.message, 1
300
+ end
301
+
302
+ desc "reboot NAME_OR_ALIAS",
303
+ "Reboot the specified node"
304
+
305
+ long_desc <<-LONGDESC
306
+ `reboot NAME_OR_ALIAS` will try to reboot the specified
307
+ node.
308
+ LONGDESC
309
+
310
+ def reboot(name)
311
+ Command::Node::Reboot.new(
312
+ *command_params(
313
+ name: name
314
+ )
315
+ ).execute
316
+ rescue SimpleCatchableError => e
317
+ err e.message, 1
318
+ end
319
+
320
+ desc "powercycle NAME_OR_ALIAS",
321
+ "Powercycle the specified node"
322
+
323
+ long_desc <<-LONGDESC
324
+ `powercycle NAME_OR_ALIAS` will try to powercycle the specified
325
+ node.
326
+ LONGDESC
327
+
328
+ def powercycle(name)
329
+ Command::Node::Powercycle.new(
330
+ *command_params(
331
+ name: name
332
+ )
333
+ ).execute
334
+ rescue SimpleCatchableError => e
335
+ err e.message, 1
336
+ end
337
+
338
+ desc "poweroff NAME_OR_ALIAS",
339
+ "Poweroff the specified node"
340
+
341
+ long_desc <<-LONGDESC
342
+ `poweroff NAME_OR_ALIAS` will try to poweroff the specified
343
+ node.
344
+ LONGDESC
345
+
346
+ def poweroff(name)
347
+ Command::Node::Poweroff.new(
348
+ *command_params(
349
+ name: name
350
+ )
351
+ ).execute
352
+ rescue SimpleCatchableError => e
353
+ err e.message, 1
354
+ end
355
+
356
+ desc "poweron NAME_OR_ALIAS",
357
+ "Poweron the specified node"
358
+
359
+ long_desc <<-LONGDESC
360
+ `poweron NAME_OR_ALIAS` will try to poweron the specified
361
+ node.
362
+ LONGDESC
363
+
364
+ def poweron(name)
365
+ Command::Node::Poweron.new(
366
+ *command_params(
367
+ name: name
368
+ )
369
+ ).execute
370
+ rescue SimpleCatchableError => e
371
+ err e.message, 1
372
+ end
373
+
374
+ desc "allocate NAME_OR_ALIAS",
375
+ "Allocate the specified node"
376
+
377
+ long_desc <<-LONGDESC
378
+ `allocate NAME_OR_ALIAS` will try to allocate the specified
379
+ node.
380
+ LONGDESC
381
+
382
+ def allocate(name)
383
+ Command::Node::Allocate.new(
384
+ *command_params(
385
+ name: name
386
+ )
387
+ ).execute
388
+ rescue SimpleCatchableError => e
389
+ err e.message, 1
390
+ end
391
+
392
+ desc "role NAME_OR_ALIAS ROLE",
393
+ "Assign an intended role to a node"
394
+
395
+ long_desc <<-LONGDESC
396
+ `role NAME_OR_ALIAS ROLE` will try to assign a intended role
397
+ to the specified node.
398
+ LONGDESC
399
+
400
+ def role(name, value)
401
+ Command::Node::Role.new(
402
+ *command_params(
403
+ name: name,
404
+ value: value
405
+ )
406
+ ).execute
407
+ rescue SimpleCatchableError => e
408
+ err e.message, 1
409
+ end
410
+
411
+ desc "rename NAME_OR_ALIAS ALIAS",
412
+ "Assign an alias for a node"
413
+
414
+ long_desc <<-LONGDESC
415
+ `rename NAME_OR_ALIAS ALIAS` will try to assign an alias to
416
+ the specified node.
417
+ LONGDESC
418
+
419
+ def rename(name, value)
420
+ Command::Node::Rename.new(
421
+ *command_params(
422
+ name: name,
423
+ value: value
424
+ )
425
+ ).execute
426
+ rescue SimpleCatchableError => e
427
+ err e.message, 1
428
+ end
429
+
430
+ desc "transition NAME_OR_ALIAS STATE",
431
+ "Transition a node to a specific state"
432
+
433
+ long_desc <<-LONGDESC
434
+ `transition NAME_OR_ALIAS STATE` will try totransition the
435
+ specified node into a specified state.
436
+ LONGDESC
437
+
438
+ def transition(name, state)
439
+ Command::Node::Transition.new(
440
+ *command_params(
441
+ name: name,
442
+ state: state
443
+ )
444
+ ).execute
445
+ rescue SimpleCatchableError => e
446
+ err e.message, 1
447
+ end
448
+ end
449
+ end
450
+ end
451
+ end