crowbar-client 2.4.1 → 2.4.2

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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +18 -6
  4. data/lib/crowbar/client.rb +54 -0
  5. data/lib/crowbar/client/app.rb +3 -0
  6. data/lib/crowbar/client/app/backup.rb +62 -1
  7. data/lib/crowbar/client/app/barclamp.rb +10 -0
  8. data/lib/crowbar/client/app/base.rb +50 -0
  9. data/lib/crowbar/client/app/batch.rb +25 -0
  10. data/lib/crowbar/client/app/entry.rb +26 -1
  11. data/lib/crowbar/client/app/host_ip.rb +24 -0
  12. data/lib/crowbar/client/app/installer.rb +16 -1
  13. data/lib/crowbar/client/app/interface.rb +21 -0
  14. data/lib/crowbar/client/app/network.rb +3 -0
  15. data/lib/crowbar/client/app/node.rb +3 -0
  16. data/lib/crowbar/client/app/proposal.rb +3 -0
  17. data/lib/crowbar/client/app/repository.rb +3 -0
  18. data/lib/crowbar/client/app/role.rb +3 -0
  19. data/lib/crowbar/client/app/server.rb +56 -0
  20. data/lib/crowbar/client/app/virtual_ip.rb +24 -0
  21. data/lib/crowbar/client/command.rb +3 -0
  22. data/lib/crowbar/client/command/backup.rb +3 -0
  23. data/lib/crowbar/client/command/backup/create.rb +3 -0
  24. data/lib/crowbar/client/command/backup/delete.rb +3 -0
  25. data/lib/crowbar/client/command/backup/download.rb +3 -0
  26. data/lib/crowbar/client/command/backup/list.rb +3 -0
  27. data/lib/crowbar/client/command/backup/restore.rb +3 -0
  28. data/lib/crowbar/client/command/backup/upload.rb +3 -0
  29. data/lib/crowbar/client/command/barclamp.rb +3 -0
  30. data/lib/crowbar/client/command/barclamp/list.rb +3 -0
  31. data/lib/crowbar/client/command/base.rb +3 -0
  32. data/lib/crowbar/client/command/batch.rb +3 -0
  33. data/lib/crowbar/client/command/batch/build.rb +3 -0
  34. data/lib/crowbar/client/command/batch/export.rb +3 -0
  35. data/lib/crowbar/client/command/host_ip.rb +3 -0
  36. data/lib/crowbar/client/command/host_ip/allocate.rb +3 -0
  37. data/lib/crowbar/client/command/host_ip/deallocate.rb +3 -0
  38. data/lib/crowbar/client/command/installer.rb +3 -0
  39. data/lib/crowbar/client/command/installer/start.rb +3 -0
  40. data/lib/crowbar/client/command/installer/status.rb +3 -0
  41. data/lib/crowbar/client/command/interface.rb +3 -0
  42. data/lib/crowbar/client/command/interface/disable.rb +3 -0
  43. data/lib/crowbar/client/command/interface/enable.rb +3 -0
  44. data/lib/crowbar/client/command/node.rb +3 -0
  45. data/lib/crowbar/client/command/node/allocate.rb +4 -1
  46. data/lib/crowbar/client/command/node/delete.rb +3 -0
  47. data/lib/crowbar/client/command/node/group.rb +3 -0
  48. data/lib/crowbar/client/command/node/hardware.rb +4 -1
  49. data/lib/crowbar/client/command/node/identify.rb +4 -1
  50. data/lib/crowbar/client/command/node/list.rb +3 -0
  51. data/lib/crowbar/client/command/node/powercycle.rb +4 -1
  52. data/lib/crowbar/client/command/node/poweroff.rb +4 -1
  53. data/lib/crowbar/client/command/node/poweron.rb +4 -1
  54. data/lib/crowbar/client/command/node/reboot.rb +4 -1
  55. data/lib/crowbar/client/command/node/reinstall.rb +4 -1
  56. data/lib/crowbar/client/command/node/rename.rb +3 -0
  57. data/lib/crowbar/client/command/node/reset.rb +4 -1
  58. data/lib/crowbar/client/command/node/role.rb +3 -0
  59. data/lib/crowbar/client/command/node/show.rb +3 -0
  60. data/lib/crowbar/client/command/node/shutdown.rb +4 -1
  61. data/lib/crowbar/client/command/node/status.rb +3 -0
  62. data/lib/crowbar/client/command/node/transition.rb +3 -0
  63. data/lib/crowbar/client/command/proposal.rb +3 -0
  64. data/lib/crowbar/client/command/proposal/commit.rb +3 -0
  65. data/lib/crowbar/client/command/proposal/create.rb +3 -0
  66. data/lib/crowbar/client/command/proposal/delete.rb +3 -0
  67. data/lib/crowbar/client/command/proposal/dequeue.rb +3 -0
  68. data/lib/crowbar/client/command/proposal/edit.rb +3 -0
  69. data/lib/crowbar/client/command/proposal/list.rb +3 -0
  70. data/lib/crowbar/client/command/proposal/reset.rb +3 -0
  71. data/lib/crowbar/client/command/proposal/show.rb +3 -0
  72. data/lib/crowbar/client/command/repository.rb +3 -0
  73. data/lib/crowbar/client/command/repository/activate.rb +3 -0
  74. data/lib/crowbar/client/command/repository/activate_all.rb +3 -0
  75. data/lib/crowbar/client/command/repository/deactivate.rb +3 -0
  76. data/lib/crowbar/client/command/repository/deactivate_all.rb +3 -0
  77. data/lib/crowbar/client/command/repository/list.rb +3 -0
  78. data/lib/crowbar/client/command/role.rb +3 -0
  79. data/lib/crowbar/client/command/role/list.rb +3 -0
  80. data/lib/crowbar/client/command/role/show.rb +3 -0
  81. data/lib/crowbar/client/command/server.rb +5 -0
  82. data/lib/crowbar/client/command/server/api.rb +3 -0
  83. data/lib/crowbar/client/command/server/check.rb +75 -0
  84. data/lib/crowbar/client/command/virtual_ip.rb +3 -0
  85. data/lib/crowbar/client/command/virtual_ip/allocate.rb +3 -0
  86. data/lib/crowbar/client/command/virtual_ip/deallocate.rb +3 -0
  87. data/lib/crowbar/client/config.rb +128 -1
  88. data/lib/crowbar/client/filter.rb +3 -0
  89. data/lib/crowbar/client/filter/array.rb +3 -0
  90. data/lib/crowbar/client/filter/base.rb +3 -0
  91. data/lib/crowbar/client/filter/hash.rb +3 -0
  92. data/lib/crowbar/client/filter/subset.rb +3 -0
  93. data/lib/crowbar/client/formatter.rb +3 -0
  94. data/lib/crowbar/client/formatter/array.rb +3 -0
  95. data/lib/crowbar/client/formatter/base.rb +3 -0
  96. data/lib/crowbar/client/formatter/hash.rb +3 -0
  97. data/lib/crowbar/client/formatter/nested.rb +3 -0
  98. data/lib/crowbar/client/mixin.rb +3 -0
  99. data/lib/crowbar/client/mixin/barclamp.rb +3 -0
  100. data/lib/crowbar/client/mixin/filter.rb +3 -0
  101. data/lib/crowbar/client/mixin/format.rb +3 -0
  102. data/lib/crowbar/client/request.rb +3 -0
  103. data/lib/crowbar/client/request/backup.rb +3 -0
  104. data/lib/crowbar/client/request/backup/create.rb +18 -0
  105. data/lib/crowbar/client/request/backup/delete.rb +13 -0
  106. data/lib/crowbar/client/request/backup/download.rb +13 -0
  107. data/lib/crowbar/client/request/backup/list.rb +13 -0
  108. data/lib/crowbar/client/request/backup/restore.rb +13 -0
  109. data/lib/crowbar/client/request/backup/upload.rb +13 -0
  110. data/lib/crowbar/client/request/barclamp.rb +3 -0
  111. data/lib/crowbar/client/request/barclamp/list.rb +13 -0
  112. data/lib/crowbar/client/request/base.rb +42 -11
  113. data/lib/crowbar/client/request/batch.rb +3 -0
  114. data/lib/crowbar/client/request/batch/build.rb +13 -0
  115. data/lib/crowbar/client/request/batch/export.rb +18 -0
  116. data/lib/crowbar/client/request/host_ip.rb +3 -0
  117. data/lib/crowbar/client/request/host_ip/allocate.rb +18 -0
  118. data/lib/crowbar/client/request/host_ip/deallocate.rb +18 -0
  119. data/lib/crowbar/client/request/installer.rb +3 -0
  120. data/lib/crowbar/client/request/installer/start.rb +18 -0
  121. data/lib/crowbar/client/request/installer/status.rb +13 -0
  122. data/lib/crowbar/client/request/interface.rb +3 -0
  123. data/lib/crowbar/client/request/interface/disable.rb +18 -0
  124. data/lib/crowbar/client/request/interface/enable.rb +18 -0
  125. data/lib/crowbar/client/request/node.rb +33 -0
  126. data/lib/crowbar/client/request/node/action.rb +13 -0
  127. data/lib/crowbar/client/request/node/allocate.rb +29 -0
  128. data/lib/crowbar/client/request/node/delete.rb +13 -0
  129. data/lib/crowbar/client/request/node/group.rb +13 -0
  130. data/lib/crowbar/client/request/node/hardware.rb +29 -0
  131. data/lib/crowbar/client/request/node/identify.rb +29 -0
  132. data/lib/crowbar/client/request/node/list.rb +13 -0
  133. data/lib/crowbar/client/request/node/powercycle.rb +29 -0
  134. data/lib/crowbar/client/request/node/poweroff.rb +29 -0
  135. data/lib/crowbar/client/request/node/poweron.rb +29 -0
  136. data/lib/crowbar/client/request/node/reboot.rb +29 -0
  137. data/lib/crowbar/client/request/node/reinstall.rb +29 -0
  138. data/lib/crowbar/client/request/node/rename.rb +18 -0
  139. data/lib/crowbar/client/request/node/reset.rb +29 -0
  140. data/lib/crowbar/client/request/node/role.rb +18 -0
  141. data/lib/crowbar/client/request/node/show.rb +13 -0
  142. data/lib/crowbar/client/request/node/shutdown.rb +29 -0
  143. data/lib/crowbar/client/request/node/status.rb +13 -0
  144. data/lib/crowbar/client/request/node/transition.rb +18 -0
  145. data/lib/crowbar/client/request/party.rb +3 -0
  146. data/lib/crowbar/client/request/proposal.rb +3 -0
  147. data/lib/crowbar/client/request/proposal/commit.rb +13 -0
  148. data/lib/crowbar/client/request/proposal/create.rb +18 -0
  149. data/lib/crowbar/client/request/proposal/delete.rb +13 -0
  150. data/lib/crowbar/client/request/proposal/dequeue.rb +13 -0
  151. data/lib/crowbar/client/request/proposal/edit.rb +18 -0
  152. data/lib/crowbar/client/request/proposal/list.rb +13 -0
  153. data/lib/crowbar/client/request/proposal/reset.rb +13 -0
  154. data/lib/crowbar/client/request/proposal/show.rb +13 -0
  155. data/lib/crowbar/client/request/proposal/template.rb +13 -0
  156. data/lib/crowbar/client/request/repository.rb +3 -0
  157. data/lib/crowbar/client/request/repository/activate.rb +18 -0
  158. data/lib/crowbar/client/request/repository/activate_all.rb +13 -0
  159. data/lib/crowbar/client/request/repository/deactivate.rb +18 -0
  160. data/lib/crowbar/client/request/repository/deactivate_all.rb +13 -0
  161. data/lib/crowbar/client/request/repository/list.rb +13 -0
  162. data/lib/crowbar/client/request/role.rb +3 -0
  163. data/lib/crowbar/client/request/role/list.rb +13 -0
  164. data/lib/crowbar/client/request/role/show.rb +13 -0
  165. data/lib/crowbar/client/request/server.rb +5 -0
  166. data/lib/crowbar/client/request/server/api.rb +13 -0
  167. data/lib/crowbar/client/request/server/check.rb +49 -0
  168. data/lib/crowbar/client/request/virtual_ip.rb +3 -0
  169. data/lib/crowbar/client/request/virtual_ip/allocate.rb +18 -0
  170. data/lib/crowbar/client/request/virtual_ip/deallocate.rb +18 -0
  171. data/lib/crowbar/client/util.rb +3 -0
  172. data/lib/crowbar/client/util/editor.rb +3 -0
  173. data/lib/crowbar/client/util/runner.rb +3 -0
  174. data/lib/crowbar/client/version.rb +23 -1
  175. data/spec/crowbar/client/command/backup/create_spec.rb +8 -16
  176. data/spec/crowbar/client/command/backup/delete_spec.rb +8 -16
  177. data/spec/crowbar/client/command/backup/download_spec.rb +8 -16
  178. data/spec/crowbar/client/command/backup/list_spec.rb +7 -15
  179. data/spec/crowbar/client/command/backup/restore_spec.rb +8 -16
  180. data/spec/crowbar/client/command/backup/upload_spec.rb +11 -19
  181. data/spec/crowbar/client/command/barclamp/list_spec.rb +7 -15
  182. data/spec/crowbar/client/command/batch/build_spec.rb +11 -19
  183. data/spec/crowbar/client/command/batch/export_spec.rb +7 -15
  184. data/spec/crowbar/client/command/host_ip/allocate_spec.rb +7 -15
  185. data/spec/crowbar/client/command/host_ip/deallocate_spec.rb +7 -15
  186. data/spec/crowbar/client/command/installer/start_spec.rb +8 -16
  187. data/spec/crowbar/client/command/installer/status_spec.rb +7 -15
  188. data/spec/crowbar/client/command/interface/disable_spec.rb +7 -15
  189. data/spec/crowbar/client/command/interface/enable_spec.rb +7 -15
  190. data/spec/crowbar/client/command/node/allocate_spec.rb +7 -15
  191. data/spec/crowbar/client/command/node/delete_spec.rb +7 -15
  192. data/spec/crowbar/client/command/node/group_spec.rb +7 -15
  193. data/spec/crowbar/client/command/node/hardware_spec.rb +7 -15
  194. data/spec/crowbar/client/command/node/identify_spec.rb +7 -15
  195. data/spec/crowbar/client/command/node/list_spec.rb +9 -17
  196. data/spec/crowbar/client/command/node/powercycle_spec.rb +7 -15
  197. data/spec/crowbar/client/command/node/poweroff_spec.rb +7 -15
  198. data/spec/crowbar/client/command/node/poweron_spec.rb +7 -15
  199. data/spec/crowbar/client/command/node/reboot_spec.rb +7 -15
  200. data/spec/crowbar/client/command/node/reinstall_spec.rb +7 -15
  201. data/spec/crowbar/client/command/node/rename_spec.rb +7 -15
  202. data/spec/crowbar/client/command/node/reset_spec.rb +7 -15
  203. data/spec/crowbar/client/command/node/role_spec.rb +7 -15
  204. data/spec/crowbar/client/command/node/show_spec.rb +7 -15
  205. data/spec/crowbar/client/command/node/shutdown_spec.rb +7 -15
  206. data/spec/crowbar/client/command/node/status_spec.rb +7 -15
  207. data/spec/crowbar/client/command/node/transition_spec.rb +7 -15
  208. data/spec/crowbar/client/command/proposal/commit_spec.rb +7 -15
  209. data/spec/crowbar/client/command/proposal/delete_spec.rb +7 -15
  210. data/spec/crowbar/client/command/proposal/dequeue_spec.rb +7 -15
  211. data/spec/crowbar/client/command/proposal/list_spec.rb +7 -15
  212. data/spec/crowbar/client/command/proposal/reset_spec.rb +7 -15
  213. data/spec/crowbar/client/command/proposal/show_spec.rb +7 -15
  214. data/spec/crowbar/client/command/repository/activate_all_spec.rb +7 -15
  215. data/spec/crowbar/client/command/repository/activate_spec.rb +7 -15
  216. data/spec/crowbar/client/command/repository/deactivate_all_spec.rb +7 -15
  217. data/spec/crowbar/client/command/repository/deactivate_spec.rb +7 -15
  218. data/spec/crowbar/client/command/repository/list_spec.rb +7 -15
  219. data/spec/crowbar/client/command/role/list_spec.rb +7 -15
  220. data/spec/crowbar/client/command/role/show_spec.rb +7 -15
  221. data/spec/crowbar/client/command/server/api_spec.rb +7 -15
  222. data/spec/crowbar/client/command/server/check_spec.rb +31 -0
  223. data/spec/crowbar/client/command/virtual_ip/allocate_spec.rb +7 -15
  224. data/spec/crowbar/client/command/virtual_ip/deallocate_spec.rb +7 -15
  225. data/spec/crowbar/client/request/server/check_spec.rb +50 -0
  226. data/spec/support/command_examples.rb +59 -0
  227. metadata +117 -95
@@ -21,6 +21,9 @@ module Crowbar
21
21
  module Client
22
22
  module Command
23
23
  module Proposal
24
+ #
25
+ # Implementation for the proposal edit command
26
+ #
24
27
  class Edit < Base
25
28
  include Mixin::Barclamp
26
29
 
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Proposal
21
+ #
22
+ # Implementation for the proposal list command
23
+ #
21
24
  class List < Base
22
25
  include Mixin::Barclamp
23
26
 
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Proposal
21
+ #
22
+ # Implementation for the proposal reset command
23
+ #
21
24
  class Reset < Base
22
25
  include Mixin::Barclamp
23
26
 
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Proposal
21
+ #
22
+ # Implementation for the proposal show command
23
+ #
21
24
  class Show < Base
22
25
  include Mixin::Barclamp
23
26
 
@@ -17,6 +17,9 @@
17
17
  module Crowbar
18
18
  module Client
19
19
  module Command
20
+ #
21
+ # Module for the repository command implementations
22
+ #
20
23
  module Repository
21
24
  autoload :Activate,
22
25
  File.expand_path("../repository/activate", __FILE__)
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Repository
21
+ #
22
+ # Implementation for the repository activate command
23
+ #
21
24
  class Activate < Base
22
25
  def request
23
26
  @request ||= Request::Repository::Activate.new(
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Repository
21
+ #
22
+ # Implementation for the repository activate all command
23
+ #
21
24
  class ActivateAll < Base
22
25
  def request
23
26
  @request ||= Request::Repository::ActivateAll.new(
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Repository
21
+ #
22
+ # Implementation for the repository deactivate command
23
+ #
21
24
  class Deactivate < Base
22
25
  def request
23
26
  @request ||= Request::Repository::Deactivate.new(
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Repository
21
+ #
22
+ # Implementation for the repository deactivate all command
23
+ #
21
24
  class DeactivateAll < Base
22
25
  def request
23
26
  @request ||= Request::Repository::DeactivateAll.new(
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Repository
21
+ #
22
+ # Implementation for the repository list command
23
+ #
21
24
  class List < Base
22
25
  include Mixin::Format
23
26
  include Mixin::Filter
@@ -17,6 +17,9 @@
17
17
  module Crowbar
18
18
  module Client
19
19
  module Command
20
+ #
21
+ # Module for the role command implementations
22
+ #
20
23
  module Role
21
24
  autoload :List,
22
25
  File.expand_path("../role/list", __FILE__)
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Role
21
+ #
22
+ # Implementation for the role list command
23
+ #
21
24
  class List < Base
22
25
  include Mixin::Barclamp
23
26
 
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Role
21
+ #
22
+ # Implementation for the role show command
23
+ #
21
24
  class Show < Base
22
25
  include Mixin::Barclamp
23
26
 
@@ -17,9 +17,14 @@
17
17
  module Crowbar
18
18
  module Client
19
19
  module Command
20
+ #
21
+ # Module for the server command implementations
22
+ #
20
23
  module Server
21
24
  autoload :Api,
22
25
  File.expand_path("../server/api", __FILE__)
26
+ autoload :Check,
27
+ File.expand_path("../server/check", __FILE__)
23
28
  end
24
29
  end
25
30
  end
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module Server
21
+ #
22
+ # Implementation for the server API command
23
+ #
21
24
  class Api < Base
22
25
  include Mixin::Barclamp
23
26
 
@@ -0,0 +1,75 @@
1
+ #
2
+ # Copyright 2016, 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 Server
21
+ #
22
+ # Implementation for the server check command
23
+ #
24
+ class Check < Base
25
+ include Mixin::Format
26
+ include Mixin::Filter
27
+
28
+ def request
29
+ @request ||= Request::Server::Check.new(
30
+ args
31
+ )
32
+ end
33
+
34
+ def execute
35
+ request.process do |request|
36
+ formatter = Formatter::Array.new(
37
+ format: provide_format,
38
+ headings: ["Errors"],
39
+ values: Filter::Array.new(
40
+ filter: provide_filter,
41
+ values: content_from(request)
42
+ ).result
43
+ )
44
+
45
+ case request.code
46
+ when 200
47
+ if formatter.empty?
48
+ say "Crowbar is in a sane state"
49
+ else
50
+ say formatter.result
51
+ end
52
+ when 409
53
+ err "Could not perform sanity checks: #{request.parsed_response["error"]}"
54
+ else
55
+ err request.parsed_response["error"]
56
+ end
57
+ end
58
+ end
59
+
60
+ protected
61
+
62
+ def content_from(request)
63
+ [].tap do |row|
64
+ request.parsed_response.each do |child|
65
+ row.push(
66
+ child
67
+ )
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -17,6 +17,9 @@
17
17
  module Crowbar
18
18
  module Client
19
19
  module Command
20
+ #
21
+ # Module for the virtual IP command implementations
22
+ #
20
23
  module VirtualIP
21
24
  autoload :Allocate,
22
25
  File.expand_path("../virtual_ip/allocate", __FILE__)
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module VirtualIP
21
+ #
22
+ # Implementation for the virtual IP allocate command
23
+ #
21
24
  class Allocate < Base
22
25
  def request
23
26
  @request ||= Request::VirtualIP::Allocate.new(
@@ -18,6 +18,9 @@ module Crowbar
18
18
  module Client
19
19
  module Command
20
20
  module VirtualIP
21
+ #
22
+ # Implementation for the virtual IP deallocate command
23
+ #
21
24
  class Deallocate < Base
22
25
  def request
23
26
  @request ||= Request::VirtualIP::Deallocate.new(
@@ -20,6 +20,9 @@ require "singleton"
20
20
 
21
21
  module Crowbar
22
22
  module Client
23
+ #
24
+ # General configuration for the Crowbar CLI
25
+ #
23
26
  class Config
24
27
  include Singleton
25
28
 
@@ -27,6 +30,11 @@ module Crowbar
27
30
  attr_writer :config
28
31
  attr_writer :values
29
32
 
33
+ #
34
+ # Define base configuration
35
+ #
36
+ # @param options [Hash] the base configuration
37
+ #
30
38
  def configure(options)
31
39
  self.options = Hashie::Mash.new(
32
40
  options
@@ -36,6 +44,11 @@ module Crowbar
36
44
  self.values = merge
37
45
  end
38
46
 
47
+ #
48
+ # Define default config
49
+ #
50
+ # @return [Hashie::Mash] the default config
51
+ #
39
52
  def defaults
40
53
  @defaults ||= Hashie::Mash.new(
41
54
  alias: default_alias,
@@ -48,44 +61,89 @@ module Crowbar
48
61
  )
49
62
  end
50
63
 
64
+ #
65
+ # Define parameter config
66
+ #
67
+ # @return [Hashie::Mash] the parameter config
68
+ #
51
69
  def options
52
70
  @options ||= defaults
53
71
  end
54
72
 
73
+ #
74
+ # Define file config
75
+ #
76
+ # @return [Hashie::Mash] the file config
77
+ #
55
78
  def config
56
79
  @config ||= Hashie::Mash.new
57
80
  end
58
81
 
82
+ #
83
+ # Define merged config
84
+ #
85
+ # @return [Hashie::Mash] the merged config
86
+ #
59
87
  def values
60
88
  @values ||= Hashie::Mash.new
61
89
  end
62
90
 
63
91
  protected
64
92
 
93
+ #
94
+ # Define a default alias value
95
+ #
96
+ # @return [String] the default alias value
97
+ #
65
98
  def default_alias
66
99
  ENV["CROWBAR_ALIAS"] || "default"
67
100
  end
68
101
 
102
+ #
103
+ # Define a default username value
104
+ #
105
+ # @return [String] the default username value
106
+ #
69
107
  def default_username
70
108
  ENV["CROWBAR_USERNAME"] || "crowbar"
71
109
  end
72
110
 
111
+ #
112
+ # Define a default password value
113
+ #
114
+ # @return [String] the default password value
115
+ #
73
116
  def default_password
74
117
  ENV["CROWBAR_PASSWORD"] || "crowbar"
75
118
  end
76
119
 
120
+ #
121
+ # Define a default server value
122
+ #
123
+ # @return [String] the default server value
124
+ #
77
125
  def default_server
78
126
  ENV["CROWBAR_SERVER"] || "http://127.0.0.1:80"
79
127
  end
80
128
 
129
+ #
130
+ # Define a default timeout value
131
+ #
132
+ # @return [Integer] the default timeout value
133
+ #
81
134
  def default_timeout
82
135
  if ENV["CROWBAR_TIMEOUT"].present?
83
136
  ENV["CROWBAR_TIMEOUT"].to_i
84
137
  else
85
- 60
138
+ 180
86
139
  end
87
140
  end
88
141
 
142
+ #
143
+ # Define a default anonymous flag
144
+ #
145
+ # @return [Bool] the default anonymous flag
146
+ #
89
147
  def default_anonymous
90
148
  if ENV["CROWBAR_ANONYMOUS"].present?
91
149
  [
@@ -96,6 +154,11 @@ module Crowbar
96
154
  end
97
155
  end
98
156
 
157
+ #
158
+ # Define a default debug flag
159
+ #
160
+ # @return [String] the default alias flag
161
+ #
99
162
  def default_debug
100
163
  if ENV["CROWBAR_DEBUG"].present?
101
164
  [
@@ -106,6 +169,11 @@ module Crowbar
106
169
  end
107
170
  end
108
171
 
172
+ #
173
+ # Merge the different configs together
174
+ #
175
+ # @return [Hashie::Mash] the merged config
176
+ #
109
177
  def merge
110
178
  result = {}.tap do |overwrite|
111
179
  defaults.keys.each do |key|
@@ -127,6 +195,11 @@ module Crowbar
127
195
  )
128
196
  end
129
197
 
198
+ #
199
+ # Load and parse the config file
200
+ #
201
+ # @return [Hashie::Mash] the config content
202
+ #
130
203
  def parser
131
204
  ini = Hashie::Mash.new(
132
205
  IniFile.load(
@@ -143,12 +216,22 @@ module Crowbar
143
216
  Hashie::Mash.new
144
217
  end
145
218
 
219
+ #
220
+ # Find the first config file
221
+ #
222
+ # @return [String] the first config
223
+ #
146
224
  def finder
147
225
  paths.detect do |temp|
148
226
  File.exist? temp
149
227
  end
150
228
  end
151
229
 
230
+ #
231
+ # Define the available config file paths
232
+ #
233
+ # @return [Array] the available paths
234
+ #
152
235
  def paths
153
236
  [
154
237
  File.join(
@@ -163,26 +246,63 @@ module Crowbar
163
246
  end
164
247
 
165
248
  class << self
249
+ #
250
+ # Define base configuration
251
+ #
252
+ # @see #configure
253
+ # @param options [Hash] the base configuration
254
+ #
166
255
  def configure(options)
167
256
  instance.configure(options)
168
257
  end
169
258
 
259
+ #
260
+ # Define default config
261
+ #
262
+ # @see #defaults
263
+ # @return [Hashie::Mash] the default config
264
+ #
170
265
  def defaults
171
266
  instance.defaults
172
267
  end
173
268
 
269
+ #
270
+ # Define parameter config
271
+ #
272
+ # @see #options
273
+ # @return [Hashie::Mash] the parameter config
274
+ #
174
275
  def options
175
276
  instance.options
176
277
  end
177
278
 
279
+ #
280
+ # Define file config
281
+ #
282
+ # @see #config
283
+ # @return [Hashie::Mash] the file config
284
+ #
178
285
  def config
179
286
  instance.config
180
287
  end
181
288
 
289
+ #
290
+ # Define merged config
291
+ #
292
+ # @see #values
293
+ # @return [Hashie::Mash] the merged config
294
+ #
182
295
  def values
183
296
  instance.values
184
297
  end
185
298
 
299
+ #
300
+ # Magic to catch missing method calls
301
+ #
302
+ # @param method [Symbol] the method that is missing
303
+ # @param arguments [Array] the list of attributes
304
+ # @yield
305
+ #
186
306
  def method_missing(method, *arguments, &block)
187
307
  case
188
308
  when method.to_s.ends_with?("=")
@@ -200,6 +320,13 @@ module Crowbar
200
320
  end
201
321
  end
202
322
 
323
+ #
324
+ # Magic to catch missing respond_to calls
325
+ #
326
+ # @param method [Symbol] the method that is missing
327
+ # @param include_private [Bool] should include private methods
328
+ # @return [Bool] the class responds to it or not
329
+ #
203
330
  def respond_to?(method, include_private = false)
204
331
  case
205
332
  when method.to_s.ends_with?("=")