crowbar-client 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
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?("=")