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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +6 -0
- data/LICENSE +202 -0
- data/README.md +49 -0
- data/bin/crowbar +37 -0
- data/lib/crowbar-client.rb +17 -0
- data/lib/crowbar/client.rb +82 -0
- data/lib/crowbar/client/app.rb +60 -0
- data/lib/crowbar/client/app/barclamp.rb +77 -0
- data/lib/crowbar/client/app/base.rb +97 -0
- data/lib/crowbar/client/app/batch.rb +100 -0
- data/lib/crowbar/client/app/entry.rb +121 -0
- data/lib/crowbar/client/app/host_ip.rb +65 -0
- data/lib/crowbar/client/app/interface.rb +63 -0
- data/lib/crowbar/client/app/network.rb +35 -0
- data/lib/crowbar/client/app/node.rb +451 -0
- data/lib/crowbar/client/app/proposal.rb +300 -0
- data/lib/crowbar/client/app/repository.rb +149 -0
- data/lib/crowbar/client/app/reset.rb +58 -0
- data/lib/crowbar/client/app/role.rb +140 -0
- data/lib/crowbar/client/app/virtual_ip.rb +65 -0
- data/lib/crowbar/client/command.rb +54 -0
- data/lib/crowbar/client/command/barclamp.rb +26 -0
- data/lib/crowbar/client/command/barclamp/list.rb +64 -0
- data/lib/crowbar/client/command/base.rb +55 -0
- data/lib/crowbar/client/command/batch.rb +29 -0
- data/lib/crowbar/client/command/batch/build.rb +36 -0
- data/lib/crowbar/client/command/batch/export.rb +36 -0
- data/lib/crowbar/client/command/host_ip.rb +29 -0
- data/lib/crowbar/client/command/host_ip/allocate.rb +50 -0
- data/lib/crowbar/client/command/host_ip/deallocate.rb +42 -0
- data/lib/crowbar/client/command/interface.rb +29 -0
- data/lib/crowbar/client/command/interface/disable.rb +42 -0
- data/lib/crowbar/client/command/interface/enable.rb +50 -0
- data/lib/crowbar/client/command/node.rb +74 -0
- data/lib/crowbar/client/command/node/allocate.rb +48 -0
- data/lib/crowbar/client/command/node/delete.rb +44 -0
- data/lib/crowbar/client/command/node/hardware.rb +48 -0
- data/lib/crowbar/client/command/node/identify.rb +48 -0
- data/lib/crowbar/client/command/node/list.rb +71 -0
- data/lib/crowbar/client/command/node/powercycle.rb +48 -0
- data/lib/crowbar/client/command/node/poweroff.rb +48 -0
- data/lib/crowbar/client/command/node/poweron.rb +48 -0
- data/lib/crowbar/client/command/node/reboot.rb +48 -0
- data/lib/crowbar/client/command/node/reinstall.rb +48 -0
- data/lib/crowbar/client/command/node/rename.rb +44 -0
- data/lib/crowbar/client/command/node/reset.rb +48 -0
- data/lib/crowbar/client/command/node/role.rb +44 -0
- data/lib/crowbar/client/command/node/show.rb +67 -0
- data/lib/crowbar/client/command/node/shutdown.rb +48 -0
- data/lib/crowbar/client/command/node/status.rb +71 -0
- data/lib/crowbar/client/command/node/transition.rb +44 -0
- data/lib/crowbar/client/command/proposal.rb +44 -0
- data/lib/crowbar/client/command/proposal/commit.rb +50 -0
- data/lib/crowbar/client/command/proposal/create.rb +130 -0
- data/lib/crowbar/client/command/proposal/delete.rb +48 -0
- data/lib/crowbar/client/command/proposal/dequeue.rb +48 -0
- data/lib/crowbar/client/command/proposal/edit.rb +129 -0
- data/lib/crowbar/client/command/proposal/list.rb +68 -0
- data/lib/crowbar/client/command/proposal/show.rb +71 -0
- data/lib/crowbar/client/command/repository.rb +38 -0
- data/lib/crowbar/client/command/repository/activate.rb +44 -0
- data/lib/crowbar/client/command/repository/activate_all.rb +42 -0
- data/lib/crowbar/client/command/repository/deactivate.rb +44 -0
- data/lib/crowbar/client/command/repository/deactivate_all.rb +42 -0
- data/lib/crowbar/client/command/repository/list.rb +71 -0
- data/lib/crowbar/client/command/reset.rb +29 -0
- data/lib/crowbar/client/command/reset/nodes.rb +36 -0
- data/lib/crowbar/client/command/reset/proposal.rb +36 -0
- data/lib/crowbar/client/command/role.rb +29 -0
- data/lib/crowbar/client/command/role/list.rb +70 -0
- data/lib/crowbar/client/command/role/show.rb +70 -0
- data/lib/crowbar/client/command/virtual_ip.rb +29 -0
- data/lib/crowbar/client/command/virtual_ip/allocate.rb +50 -0
- data/lib/crowbar/client/command/virtual_ip/deallocate.rb +42 -0
- data/lib/crowbar/client/config.rb +178 -0
- data/lib/crowbar/client/filter.rb +33 -0
- data/lib/crowbar/client/filter/array.rb +29 -0
- data/lib/crowbar/client/filter/base.rb +41 -0
- data/lib/crowbar/client/filter/hash.rb +33 -0
- data/lib/crowbar/client/filter/subset.rb +45 -0
- data/lib/crowbar/client/formatter.rb +33 -0
- data/lib/crowbar/client/formatter/array.rb +49 -0
- data/lib/crowbar/client/formatter/base.rb +47 -0
- data/lib/crowbar/client/formatter/hash.rb +51 -0
- data/lib/crowbar/client/formatter/nested.rb +134 -0
- data/lib/crowbar/client/mixin.rb +30 -0
- data/lib/crowbar/client/mixin/barclamp.rb +41 -0
- data/lib/crowbar/client/mixin/filter.rb +33 -0
- data/lib/crowbar/client/mixin/format.rb +56 -0
- data/lib/crowbar/client/request.rb +57 -0
- data/lib/crowbar/client/request/barclamp.rb +26 -0
- data/lib/crowbar/client/request/barclamp/list.rb +35 -0
- data/lib/crowbar/client/request/base.rb +71 -0
- data/lib/crowbar/client/request/batch.rb +29 -0
- data/lib/crowbar/client/request/batch/build.rb +33 -0
- data/lib/crowbar/client/request/batch/export.rb +33 -0
- data/lib/crowbar/client/request/host_ip.rb +29 -0
- data/lib/crowbar/client/request/host_ip/allocate.rb +50 -0
- data/lib/crowbar/client/request/host_ip/deallocate.rb +48 -0
- data/lib/crowbar/client/request/interface.rb +29 -0
- data/lib/crowbar/client/request/interface/disable.rb +48 -0
- data/lib/crowbar/client/request/interface/enable.rb +48 -0
- data/lib/crowbar/client/request/node.rb +47 -0
- data/lib/crowbar/client/request/node/action.rb +39 -0
- data/lib/crowbar/client/request/node/delete.rb +38 -0
- data/lib/crowbar/client/request/node/list.rb +37 -0
- data/lib/crowbar/client/request/node/rename.rb +47 -0
- data/lib/crowbar/client/request/node/role.rb +47 -0
- data/lib/crowbar/client/request/node/show.rb +38 -0
- data/lib/crowbar/client/request/node/status.rb +36 -0
- data/lib/crowbar/client/request/node/transition.rb +48 -0
- data/lib/crowbar/client/request/party.rb +79 -0
- data/lib/crowbar/client/request/proposal.rb +47 -0
- data/lib/crowbar/client/request/proposal/commit.rb +40 -0
- data/lib/crowbar/client/request/proposal/create.rb +46 -0
- data/lib/crowbar/client/request/proposal/delete.rb +39 -0
- data/lib/crowbar/client/request/proposal/dequeue.rb +40 -0
- data/lib/crowbar/client/request/proposal/edit.rb +47 -0
- data/lib/crowbar/client/request/proposal/list.rb +38 -0
- data/lib/crowbar/client/request/proposal/show.rb +39 -0
- data/lib/crowbar/client/request/proposal/template.rb +39 -0
- data/lib/crowbar/client/request/repository.rb +38 -0
- data/lib/crowbar/client/request/repository/activate.rb +46 -0
- data/lib/crowbar/client/request/repository/activate_all.rb +37 -0
- data/lib/crowbar/client/request/repository/deactivate.rb +46 -0
- data/lib/crowbar/client/request/repository/deactivate_all.rb +37 -0
- data/lib/crowbar/client/request/repository/list.rb +36 -0
- data/lib/crowbar/client/request/reset.rb +29 -0
- data/lib/crowbar/client/request/reset/nodes.rb +33 -0
- data/lib/crowbar/client/request/reset/proposal.rb +33 -0
- data/lib/crowbar/client/request/role.rb +29 -0
- data/lib/crowbar/client/request/role/list.rb +38 -0
- data/lib/crowbar/client/request/role/show.rb +39 -0
- data/lib/crowbar/client/request/virtual_ip.rb +29 -0
- data/lib/crowbar/client/request/virtual_ip/allocate.rb +50 -0
- data/lib/crowbar/client/request/virtual_ip/deallocate.rb +48 -0
- data/lib/crowbar/client/util.rb +27 -0
- data/lib/crowbar/client/util/editor.rb +107 -0
- data/lib/crowbar/client/util/runner.rb +77 -0
- data/lib/crowbar/client/version.rb +33 -0
- data/spec/crowbar/client/app_spec.rb +21 -0
- data/spec/crowbar/client/command/barclamp/list_spec.rb +39 -0
- data/spec/crowbar/client/command/batch/build_spec.rb +39 -0
- data/spec/crowbar/client/command/batch/export_spec.rb +39 -0
- data/spec/crowbar/client/command/host_ip/allocate_spec.rb +39 -0
- data/spec/crowbar/client/command/host_ip/deallocate_spec.rb +39 -0
- data/spec/crowbar/client/command/interface/disable_spec.rb +39 -0
- data/spec/crowbar/client/command/interface/enable_spec.rb +39 -0
- data/spec/crowbar/client/command/node/allocate_spec.rb +39 -0
- data/spec/crowbar/client/command/node/delete_spec.rb +39 -0
- data/spec/crowbar/client/command/node/hardware_spec.rb +39 -0
- data/spec/crowbar/client/command/node/identify_spec.rb +39 -0
- data/spec/crowbar/client/command/node/list_spec.rb +39 -0
- data/spec/crowbar/client/command/node/powercycle_spec.rb +39 -0
- data/spec/crowbar/client/command/node/poweroff_spec.rb +39 -0
- data/spec/crowbar/client/command/node/poweron_spec.rb +39 -0
- data/spec/crowbar/client/command/node/reboot_spec.rb +39 -0
- data/spec/crowbar/client/command/node/reinstall_spec.rb +39 -0
- data/spec/crowbar/client/command/node/rename_spec.rb +39 -0
- data/spec/crowbar/client/command/node/reset_spec.rb +39 -0
- data/spec/crowbar/client/command/node/role_spec.rb +39 -0
- data/spec/crowbar/client/command/node/show_spec.rb +39 -0
- data/spec/crowbar/client/command/node/shutdown_spec.rb +39 -0
- data/spec/crowbar/client/command/node/status_spec.rb +39 -0
- data/spec/crowbar/client/command/node/transition_spec.rb +39 -0
- data/spec/crowbar/client/command/proposal/commit_spec.rb +39 -0
- data/spec/crowbar/client/command/proposal/create_spec.rb +61 -0
- data/spec/crowbar/client/command/proposal/delete_spec.rb +39 -0
- data/spec/crowbar/client/command/proposal/dequeue_spec.rb +39 -0
- data/spec/crowbar/client/command/proposal/edit_spec.rb +62 -0
- data/spec/crowbar/client/command/proposal/list_spec.rb +39 -0
- data/spec/crowbar/client/command/proposal/show_spec.rb +39 -0
- data/spec/crowbar/client/command/repository/activate_all_spec.rb +39 -0
- data/spec/crowbar/client/command/repository/activate_spec.rb +39 -0
- data/spec/crowbar/client/command/repository/deactivate_all_spec.rb +39 -0
- data/spec/crowbar/client/command/repository/deactivate_spec.rb +39 -0
- data/spec/crowbar/client/command/repository/list_spec.rb +39 -0
- data/spec/crowbar/client/command/reset/nodes_spec.rb +39 -0
- data/spec/crowbar/client/command/reset/proposal_spec.rb +39 -0
- data/spec/crowbar/client/command/role/list_spec.rb +39 -0
- data/spec/crowbar/client/command/role/show_spec.rb +39 -0
- data/spec/crowbar/client/command/virtual_ip/allocate_spec.rb +39 -0
- data/spec/crowbar/client/command/virtual_ip/deallocate_spec.rb +39 -0
- data/spec/crowbar/client/filter/array_spec.rb +65 -0
- data/spec/crowbar/client/filter/hash_spec.rb +65 -0
- data/spec/crowbar/client/filter/subset_spec.rb +77 -0
- data/spec/crowbar/client/formatter/array_spec.rb +102 -0
- data/spec/crowbar/client/formatter/hash_spec.rb +108 -0
- data/spec/crowbar/client/formatter/nested_spec.rb +106 -0
- data/spec/crowbar/client/request/barclamp/list_spec.rb +50 -0
- data/spec/crowbar/client/request/batch/build_spec.rb +64 -0
- data/spec/crowbar/client/request/batch/export_spec.rb +64 -0
- data/spec/crowbar/client/request/host_ip/allocate_spec.rb +61 -0
- data/spec/crowbar/client/request/host_ip/deallocate_spec.rb +57 -0
- data/spec/crowbar/client/request/interface/disable_spec.rb +57 -0
- data/spec/crowbar/client/request/interface/enable_spec.rb +57 -0
- data/spec/crowbar/client/request/node/action_spec.rb +53 -0
- data/spec/crowbar/client/request/node/delete_spec.rb +52 -0
- data/spec/crowbar/client/request/node/list_spec.rb +50 -0
- data/spec/crowbar/client/request/node/rename_spec.rb +55 -0
- data/spec/crowbar/client/request/node/role_spec.rb +55 -0
- data/spec/crowbar/client/request/node/show_spec.rb +52 -0
- data/spec/crowbar/client/request/node/status_spec.rb +50 -0
- data/spec/crowbar/client/request/node/transition_spec.rb +56 -0
- data/spec/crowbar/client/request/party_spec.rb +24 -0
- data/spec/crowbar/client/request/proposal/commit_spec.rb +53 -0
- data/spec/crowbar/client/request/proposal/create_spec.rb +56 -0
- data/spec/crowbar/client/request/proposal/delete_spec.rb +53 -0
- data/spec/crowbar/client/request/proposal/dequeue_spec.rb +53 -0
- data/spec/crowbar/client/request/proposal/edit_spec.rb +56 -0
- data/spec/crowbar/client/request/proposal/list_spec.rb +52 -0
- data/spec/crowbar/client/request/proposal/show_spec.rb +53 -0
- data/spec/crowbar/client/request/proposal/template_spec.rb +52 -0
- data/spec/crowbar/client/request/repository/activate_all_spec.rb +50 -0
- data/spec/crowbar/client/request/repository/activate_spec.rb +56 -0
- data/spec/crowbar/client/request/repository/deactivate_all_spec.rb +50 -0
- data/spec/crowbar/client/request/repository/deactivate_spec.rb +56 -0
- data/spec/crowbar/client/request/repository/list_spec.rb +50 -0
- data/spec/crowbar/client/request/reset/nodes_spec.rb +55 -0
- data/spec/crowbar/client/request/reset/proposal_spec.rb +55 -0
- data/spec/crowbar/client/request/role/list_spec.rb +52 -0
- data/spec/crowbar/client/request/role/show_spec.rb +53 -0
- data/spec/crowbar/client/request/virtual_ip/allocate_spec.rb +61 -0
- data/spec/crowbar/client/request/virtual_ip/deallocate_spec.rb +57 -0
- data/spec/crowbar/client/util/editor_spec.rb +108 -0
- data/spec/crowbar/client/util/runner_spec.rb +24 -0
- data/spec/crowbar/client_spec.rb +21 -0
- data/spec/spec_helper.rb +55 -0
- data/spec/support/command_context.rb +37 -0
- data/spec/support/request_examples.rb +55 -0
- metadata +549 -0
|
@@ -0,0 +1,77 @@
|
|
|
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 Barclamp < Base
|
|
21
|
+
desc "list",
|
|
22
|
+
"List available barclamps"
|
|
23
|
+
|
|
24
|
+
long_desc <<-LONGDESC
|
|
25
|
+
`list` will print out a list of the available barclamps on
|
|
26
|
+
the target cloud. You can display the list in different output
|
|
27
|
+
formats and you can filter the list by any search criteria.
|
|
28
|
+
|
|
29
|
+
With --format <format> option you can choose an output format
|
|
30
|
+
with the available options table, json or plain.
|
|
31
|
+
|
|
32
|
+
With --filter <filter> option you can limit the result of
|
|
33
|
+
printed out elements. You can use any substring that is part
|
|
34
|
+
of the found elements.
|
|
35
|
+
LONGDESC
|
|
36
|
+
|
|
37
|
+
method_option :format,
|
|
38
|
+
type: :string,
|
|
39
|
+
default: "table",
|
|
40
|
+
banner: "<format>",
|
|
41
|
+
desc: "Format of the output, valid formats are table, json or plain"
|
|
42
|
+
|
|
43
|
+
class_option :table,
|
|
44
|
+
type: :boolean,
|
|
45
|
+
default: false,
|
|
46
|
+
aliases: [],
|
|
47
|
+
desc: "Format output as table, a shortcut for --format table option"
|
|
48
|
+
|
|
49
|
+
class_option :json,
|
|
50
|
+
type: :boolean,
|
|
51
|
+
default: false,
|
|
52
|
+
aliases: [],
|
|
53
|
+
desc: "Format output as table, a shortcut for --format table option"
|
|
54
|
+
|
|
55
|
+
class_option :plain,
|
|
56
|
+
type: :boolean,
|
|
57
|
+
default: false,
|
|
58
|
+
aliases: [],
|
|
59
|
+
desc: "Format output as table, a shortcut for --format table option"
|
|
60
|
+
|
|
61
|
+
method_option :filter,
|
|
62
|
+
type: :string,
|
|
63
|
+
default: nil,
|
|
64
|
+
banner: "<filter>",
|
|
65
|
+
desc: "Filter by criteria, display only data that contains filter"
|
|
66
|
+
|
|
67
|
+
def list
|
|
68
|
+
Command::Barclamp::List.new(
|
|
69
|
+
*command_params
|
|
70
|
+
).execute
|
|
71
|
+
rescue SimpleCatchableError => e
|
|
72
|
+
err e.message, 1
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
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 "thor"
|
|
18
|
+
require "easy_diff"
|
|
19
|
+
|
|
20
|
+
module Crowbar
|
|
21
|
+
module Client
|
|
22
|
+
module App
|
|
23
|
+
class Base < Thor
|
|
24
|
+
def initialize(args = [], local_options = {}, config = {})
|
|
25
|
+
super
|
|
26
|
+
|
|
27
|
+
Config.configure(
|
|
28
|
+
options.slice(
|
|
29
|
+
:config,
|
|
30
|
+
:alias,
|
|
31
|
+
:username,
|
|
32
|
+
:password,
|
|
33
|
+
:server,
|
|
34
|
+
:timeout,
|
|
35
|
+
:anonymous,
|
|
36
|
+
:debug
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
no_commands do
|
|
42
|
+
def say(message)
|
|
43
|
+
$stdout.puts message
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def err(message, exit_code = nil)
|
|
47
|
+
$stderr.puts message
|
|
48
|
+
exit(exit_code) unless exit_code.nil?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def config_parse(path, section)
|
|
52
|
+
ini = Hashie::Mash.new(
|
|
53
|
+
IniFile.load(
|
|
54
|
+
config_detect(path)
|
|
55
|
+
).to_h
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
if ini[section]
|
|
59
|
+
ini[section]
|
|
60
|
+
else
|
|
61
|
+
Hashie::Mash.new
|
|
62
|
+
end
|
|
63
|
+
rescue
|
|
64
|
+
Hashie::Mash.new
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def config_detect(path)
|
|
68
|
+
if path.nil?
|
|
69
|
+
config_paths.detect do |temp|
|
|
70
|
+
File.exist? temp
|
|
71
|
+
end
|
|
72
|
+
else
|
|
73
|
+
path
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def config_paths
|
|
78
|
+
[
|
|
79
|
+
"#{ENV["HOME"]}/.crowbarrc",
|
|
80
|
+
"/etc/crowbarrc"
|
|
81
|
+
]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def command_params(args = {})
|
|
85
|
+
[
|
|
86
|
+
$stdin,
|
|
87
|
+
$stdout,
|
|
88
|
+
$stderr,
|
|
89
|
+
options,
|
|
90
|
+
args
|
|
91
|
+
]
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
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 Batch < Base
|
|
21
|
+
desc "build FILE",
|
|
22
|
+
"Build proposals from file or stdin"
|
|
23
|
+
|
|
24
|
+
long_desc <<-LONGDESC
|
|
25
|
+
`build FILE` will create/edit/commit proposals defined in
|
|
26
|
+
an YAML format. You can directly provide a path to a file or
|
|
27
|
+
just pipe the content from stdin. To pipe the content from
|
|
28
|
+
stdin you should just write a `-` instead of a specific
|
|
29
|
+
filename.
|
|
30
|
+
|
|
31
|
+
With --include <barclamp[.proposal]> option you can process
|
|
32
|
+
only a specific part from the provided YAML file structure.
|
|
33
|
+
|
|
34
|
+
With --exclude <barclamp[.proposal]> option you exclude
|
|
35
|
+
specific parts from the provided YAML file structure to be
|
|
36
|
+
processed.
|
|
37
|
+
LONGDESC
|
|
38
|
+
|
|
39
|
+
method_option :include,
|
|
40
|
+
type: :string,
|
|
41
|
+
default: nil,
|
|
42
|
+
banner: "<barclamp[.proposal]>",
|
|
43
|
+
desc: "Include a specific barclamp or proposal for processing"
|
|
44
|
+
|
|
45
|
+
method_option :exclude,
|
|
46
|
+
type: :string,
|
|
47
|
+
default: nil,
|
|
48
|
+
banner: "<barclamp[.proposal]>",
|
|
49
|
+
desc: "Exclude a specific barclamp or proposal for processing"
|
|
50
|
+
|
|
51
|
+
def build(file)
|
|
52
|
+
Command::Batch::Build.new(
|
|
53
|
+
*command_params(
|
|
54
|
+
file: file
|
|
55
|
+
)
|
|
56
|
+
).execute
|
|
57
|
+
rescue SimpleCatchableError => e
|
|
58
|
+
err e.message, 1
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
desc "export PROPOSAL [PROPOSAL]",
|
|
62
|
+
"Export proposals to stdout"
|
|
63
|
+
|
|
64
|
+
long_desc <<-LONGDESC
|
|
65
|
+
`export PROPOSAL [PROPOSAL]` will collect the informations
|
|
66
|
+
for the provided proposals and print it out to stdout in a
|
|
67
|
+
YAML format that can be used to build again.
|
|
68
|
+
|
|
69
|
+
With --include <barclamp[.proposal]> option you can export
|
|
70
|
+
only a specific part from the existing proposals.
|
|
71
|
+
|
|
72
|
+
With --exclude <barclamp[.proposal]> option you exclude
|
|
73
|
+
specific parts from the existing proposals to be exported.
|
|
74
|
+
LONGDESC
|
|
75
|
+
|
|
76
|
+
method_option :include,
|
|
77
|
+
type: :string,
|
|
78
|
+
default: nil,
|
|
79
|
+
banner: "<barclamp[.proposal]>",
|
|
80
|
+
desc: "Include a specific barclamp or proposal for export"
|
|
81
|
+
|
|
82
|
+
method_option :exclude,
|
|
83
|
+
type: :string,
|
|
84
|
+
default: nil,
|
|
85
|
+
banner: "<barclamp[.proposal]>",
|
|
86
|
+
desc: "Exclude a specific barclamp or proposal for export"
|
|
87
|
+
|
|
88
|
+
def export(*proposals)
|
|
89
|
+
Command::Batch::Export.new(
|
|
90
|
+
*command_params(
|
|
91
|
+
proposals: proposals
|
|
92
|
+
)
|
|
93
|
+
).execute
|
|
94
|
+
rescue SimpleCatchableError => e
|
|
95
|
+
err e.message, 1
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
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 Entry < Base
|
|
21
|
+
map [
|
|
22
|
+
"--version",
|
|
23
|
+
"-v"
|
|
24
|
+
] => :version
|
|
25
|
+
|
|
26
|
+
class_option :config,
|
|
27
|
+
type: :string,
|
|
28
|
+
default: nil,
|
|
29
|
+
aliases: ["-c"],
|
|
30
|
+
desc: "Path to a configuration file"
|
|
31
|
+
|
|
32
|
+
class_option :alias,
|
|
33
|
+
type: :string,
|
|
34
|
+
default: "default",
|
|
35
|
+
aliases: ["-a"],
|
|
36
|
+
desc: "Alias for a config section"
|
|
37
|
+
|
|
38
|
+
class_option :username,
|
|
39
|
+
type: :string,
|
|
40
|
+
default: "crowbar",
|
|
41
|
+
aliases: ["-U"],
|
|
42
|
+
desc: "Specify username for connection"
|
|
43
|
+
|
|
44
|
+
class_option :password,
|
|
45
|
+
type: :string,
|
|
46
|
+
default: "crowbar",
|
|
47
|
+
aliases: ["-P"],
|
|
48
|
+
desc: "Specify password for connection"
|
|
49
|
+
|
|
50
|
+
class_option :server,
|
|
51
|
+
type: :string,
|
|
52
|
+
default: "http://127.0.0.1:80",
|
|
53
|
+
aliases: ["-s"],
|
|
54
|
+
desc: "Specify server for connection"
|
|
55
|
+
|
|
56
|
+
class_option :timeout,
|
|
57
|
+
type: :numeric,
|
|
58
|
+
default: 60,
|
|
59
|
+
aliases: ["-t"],
|
|
60
|
+
desc: "Specify timeout for connection"
|
|
61
|
+
|
|
62
|
+
class_option :anonymous,
|
|
63
|
+
type: :boolean,
|
|
64
|
+
default: false,
|
|
65
|
+
aliases: ["-a"],
|
|
66
|
+
desc: "Skip API user authentication"
|
|
67
|
+
|
|
68
|
+
class_option :debug,
|
|
69
|
+
type: :boolean,
|
|
70
|
+
default: false,
|
|
71
|
+
aliases: ["-d"],
|
|
72
|
+
desc: "Output more debug information"
|
|
73
|
+
|
|
74
|
+
desc "version",
|
|
75
|
+
"Display the current version of the client"
|
|
76
|
+
|
|
77
|
+
long_desc <<-LONGDESC
|
|
78
|
+
`version` will print out the version of the currently used
|
|
79
|
+
crowbar-client, this is some usefull information if you try
|
|
80
|
+
to debug some issue with the current implementation.
|
|
81
|
+
LONGDESC
|
|
82
|
+
|
|
83
|
+
def version
|
|
84
|
+
say "crowbar-client v#{Crowbar::Client::Version}"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
desc "barclamp [COMMANDS]",
|
|
88
|
+
"Barclamp specific commands, call without params for help"
|
|
89
|
+
subcommand "barclamp", Crowbar::Client::App::Barclamp
|
|
90
|
+
|
|
91
|
+
desc "batch [COMMANDS]",
|
|
92
|
+
"Batch specific commands, call without params for help"
|
|
93
|
+
subcommand "batch", Crowbar::Client::App::Batch
|
|
94
|
+
|
|
95
|
+
desc "network [COMMANDS]",
|
|
96
|
+
"Network specific commands, call without params for help"
|
|
97
|
+
subcommand "network", Crowbar::Client::App::Network
|
|
98
|
+
|
|
99
|
+
desc "node [COMMANDS]",
|
|
100
|
+
"Node specific commands, call without params for help"
|
|
101
|
+
subcommand "node", Crowbar::Client::App::Node
|
|
102
|
+
|
|
103
|
+
desc "proposal [COMMANDS]",
|
|
104
|
+
"Proposal specific commands, call without params for help"
|
|
105
|
+
subcommand "proposal", Crowbar::Client::App::Proposal
|
|
106
|
+
|
|
107
|
+
desc "repository [COMMANDS]",
|
|
108
|
+
"Repository specific commands, call without params for help"
|
|
109
|
+
subcommand "repository", Crowbar::Client::App::Repository
|
|
110
|
+
|
|
111
|
+
desc "reset [COMMANDS]",
|
|
112
|
+
"Reset specific commands, call without params for help"
|
|
113
|
+
subcommand "reset", Crowbar::Client::App::Reset
|
|
114
|
+
|
|
115
|
+
desc "role [COMMANDS]",
|
|
116
|
+
"Role specific commands, call without params for help"
|
|
117
|
+
subcommand "role", Crowbar::Client::App::Role
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
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 HostIP < Base
|
|
21
|
+
desc "allocate PROPOSAL NODE NETWORK RANGE [SUGGESTION]",
|
|
22
|
+
"Allocate a host IP address"
|
|
23
|
+
|
|
24
|
+
long_desc <<-LONGDESC
|
|
25
|
+
`allocate PROPOSAL NODE NETWORK RANGE [SUGGESTION]` will
|
|
26
|
+
try to allocate a host IP address for the specified node.
|
|
27
|
+
LONGDESC
|
|
28
|
+
|
|
29
|
+
def allocate(proposal, node, network, range, suggestion = nil)
|
|
30
|
+
Command::VirtualIp::Allocate.new(
|
|
31
|
+
*command_params(
|
|
32
|
+
proposal: proposal,
|
|
33
|
+
node: node,
|
|
34
|
+
network: network,
|
|
35
|
+
range: range,
|
|
36
|
+
suggestion: suggestion
|
|
37
|
+
)
|
|
38
|
+
).execute
|
|
39
|
+
rescue SimpleCatchableError => e
|
|
40
|
+
err e.message, 1
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
desc "deallocate PROPOSAL NODE NETWORK",
|
|
44
|
+
"Deallocate a host IP address"
|
|
45
|
+
|
|
46
|
+
long_desc <<-LONGDESC
|
|
47
|
+
`deallocate PROPOSAL NODE NETWORK` will try to deallocate
|
|
48
|
+
a host IP address for the specified node.
|
|
49
|
+
LONGDESC
|
|
50
|
+
|
|
51
|
+
def deallocate(proposal, node, network)
|
|
52
|
+
Command::VirtualIp::Allocate.new(
|
|
53
|
+
*command_params(
|
|
54
|
+
proposal: proposal,
|
|
55
|
+
node: node,
|
|
56
|
+
network: network
|
|
57
|
+
)
|
|
58
|
+
).execute
|
|
59
|
+
rescue SimpleCatchableError => e
|
|
60
|
+
err e.message, 1
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|