hammer_cli_foreman 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of hammer_cli_foreman might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +27 -0
- data/doc/host_create.md +190 -0
- data/lib/hammer_cli_foreman.rb +1 -0
- data/lib/hammer_cli_foreman/commands.rb +21 -7
- data/lib/hammer_cli_foreman/common_parameter.rb +12 -18
- data/lib/hammer_cli_foreman/domain.rb +8 -6
- data/lib/hammer_cli_foreman/environment.rb +10 -0
- data/lib/hammer_cli_foreman/exception_handler.rb +11 -1
- data/lib/hammer_cli_foreman/exceptions.rb +9 -0
- data/lib/hammer_cli_foreman/host.rb +107 -16
- data/lib/hammer_cli_foreman/hostgroup.rb +10 -0
- data/lib/hammer_cli_foreman/puppet_class.rb +10 -1
- data/lib/hammer_cli_foreman/resource_supported_test.rb +3 -3
- data/lib/hammer_cli_foreman/smart_class_parameter.rb +110 -0
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/test/unit/apipie_resource_mock.rb +88 -0
- data/test/unit/architecture_test.rb +91 -0
- data/test/unit/common_parameter_test.rb +77 -0
- data/test/unit/compute_resource_test.rb +94 -0
- data/test/unit/domain_test.rb +130 -0
- data/test/unit/environment_test.rb +110 -0
- data/test/unit/exception_handler_test.rb +48 -0
- data/test/unit/fact_test.rb +31 -0
- data/test/unit/helpers/command.rb +69 -0
- data/test/unit/helpers/resource_disabled.rb +24 -0
- data/test/unit/host_test.rb +315 -0
- data/test/unit/hostgroup_test.rb +145 -0
- data/test/unit/image_test.rb +136 -0
- data/test/unit/location_test.rb +109 -0
- data/test/unit/media_test.rb +106 -0
- data/test/unit/model_test.rb +98 -0
- data/test/unit/operating_system_test.rb +151 -0
- data/test/unit/organization_test.rb +109 -0
- data/test/unit/output/formatters_test.rb +19 -0
- data/test/unit/partition_table_test.rb +143 -0
- data/test/unit/puppet_class_test.rb +71 -0
- data/test/unit/report_test.rb +64 -0
- data/test/unit/smart_class_parameter_test.rb +77 -0
- data/test/unit/smart_proxy_test.rb +102 -0
- data/test/unit/subnet_test.rb +95 -0
- data/test/unit/template_test.rb +141 -0
- data/test/unit/test_helper.rb +27 -0
- data/test/unit/test_output_adapter.rb +19 -0
- data/test/unit/user_test.rb +92 -0
- metadata +107 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42450c6d2fad76c1f31ea6a860406c4a6511ccd8
|
4
|
+
data.tar.gz: d6b26b6896df8cd1db9b2f4e8d3f5a037d145167
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa6ed7e0730233e68b0ee1c4894905a34b6352a9225f73536830ab993dfc9606454339e70173cbb20f122c0b258e2dde6b0e39a173df7f5b92e1c1435433378c
|
7
|
+
data.tar.gz: 34c6dc5106bf9d507927600b20c778e6272cf4a24d15eda085b25ac5aedfd6eb0b0d7891aaf5fea92fd482525a2da145e5c9c690417be3797c96111db85a8211
|
data/README.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Foreman commands for Hammer CLI
|
2
|
+
===============================
|
3
|
+
|
4
|
+
This Hammer CLI plugin contains set of commands for [Foreman](http://theforeman.org/).
|
5
|
+
|
6
|
+
|
7
|
+
Documentation
|
8
|
+
-------------
|
9
|
+
|
10
|
+
- [Host creation](doc/host_create.md#host-creation)
|
11
|
+
|
12
|
+
How to run
|
13
|
+
----------
|
14
|
+
|
15
|
+
The work is still in progress and there are no builds ready yet. You can install the plugin from source.
|
16
|
+
See [Hammer CLI readme](https://github.com/theforeman/hammer-cli/blob/master/README.md#how-to-run) for details.
|
17
|
+
|
18
|
+
|
19
|
+
How to test
|
20
|
+
------------
|
21
|
+
|
22
|
+
$ bundle install
|
23
|
+
$ bundle exec "rake test"
|
24
|
+
|
25
|
+
Generated coverage reports are stored in ./coverage directory.
|
26
|
+
|
27
|
+
|
data/doc/host_create.md
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
Host Creation
|
2
|
+
=============
|
3
|
+
|
4
|
+
Host creation is one of the most complex commands in the hammer's foreman plugin. The majority of its parameters
|
5
|
+
is obvious but there are some that need further explanation as their values differ with the type of a compute resource.
|
6
|
+
|
7
|
+
```
|
8
|
+
$ hammer host create -h
|
9
|
+
Usage:
|
10
|
+
hammer host create [OPTIONS]
|
11
|
+
|
12
|
+
Options:
|
13
|
+
--name NAME
|
14
|
+
--ip IP Not required if using a subnet with dhcp proxy.
|
15
|
+
--mac MAC Not required if it's a virtual machine.
|
16
|
+
--puppet-class-ids PUPPET_CLASS_IDS Comma separated list of values.
|
17
|
+
--medium-id MEDIUM_ID
|
18
|
+
--subnet-id SUBNET_ID
|
19
|
+
--sp-subnet-id SP_SUBNET_ID
|
20
|
+
--model-id MODEL_ID
|
21
|
+
--hostgroup-id HOSTGROUP_ID
|
22
|
+
--owner-id OWNER_ID
|
23
|
+
--puppet-ca-proxy-id PUPPET_CA_PROXY_ID
|
24
|
+
--security-groups SECURITY_GROUPS
|
25
|
+
--environment-id ENVIRONMENT_ID
|
26
|
+
--architecture-id ARCHITECTURE_ID
|
27
|
+
--domain-id DOMAIN_ID
|
28
|
+
--puppet-proxy-id PUPPET_PROXY_ID
|
29
|
+
--operatingsystem-id OPERATINGSYSTEM_ID
|
30
|
+
--partition-table-id PARTITION_TABLE_ID
|
31
|
+
--compute-resource-id COMPUTE_RESOURCE
|
32
|
+
--partition-table-id PARTITION_TABLE
|
33
|
+
--build BUILD One of true/false, yes/no, 1/0.
|
34
|
+
Default: "true"
|
35
|
+
--managed MANAGED One of true/false, yes/no, 1/0.
|
36
|
+
Default: "true"
|
37
|
+
--enabled ENABLED One of true/false, yes/no, 1/0.
|
38
|
+
Default: "true"
|
39
|
+
--parameters PARAMS Host parameters.
|
40
|
+
Comma-separated list of key=value.
|
41
|
+
--compute-attributes COMPUTE_ATTRS Compute resource attributes.
|
42
|
+
Comma-separated list of key=value.
|
43
|
+
--volume VOLUME Volume parameters
|
44
|
+
Comma-separated list of key=value.
|
45
|
+
Can be specified multiple times.
|
46
|
+
--interface INTERFACE Interface parameters.
|
47
|
+
Comma-separated list of key=value.
|
48
|
+
Can be specified multiple times.
|
49
|
+
-h, --help print help
|
50
|
+
```
|
51
|
+
|
52
|
+
Example
|
53
|
+
=======
|
54
|
+
|
55
|
+
An example command for creating a host with 2 volumes (5GB raw + 10 GB qcow2) using
|
56
|
+
a default network interface on a libvirt provider can look like this:
|
57
|
+
```bash
|
58
|
+
hammer host create
|
59
|
+
--hostgroup-id=4 # most of the settings is done in the hostgroup
|
60
|
+
--compute-resource-id=1 # set the libvirt provider
|
61
|
+
--compute-attributes="cpus=2" # specify the provider specific options, see the list below
|
62
|
+
--interface="type=network,network=default" # add a network interface, can be passed multiple times
|
63
|
+
--volume="capacity=5G" # add a volume, can be passed multiple times
|
64
|
+
--volume="capacity=10G,format_type=qcow2" # add another volume with different size and type
|
65
|
+
--name="test-host"
|
66
|
+
--ip="1.2.3.4"
|
67
|
+
```
|
68
|
+
|
69
|
+
See the list of all possible option keys below.
|
70
|
+
|
71
|
+
|
72
|
+
Provider specific options
|
73
|
+
=========================
|
74
|
+
|
75
|
+
## Bare Metal
|
76
|
+
Available keys for `--interface`:
|
77
|
+
```
|
78
|
+
type # one of Nic::Managed, Nic::BMC
|
79
|
+
mac
|
80
|
+
name
|
81
|
+
domain_id
|
82
|
+
subnet_id
|
83
|
+
ip
|
84
|
+
provider # always IPMI
|
85
|
+
username # BMC only
|
86
|
+
password # BMC only
|
87
|
+
```
|
88
|
+
|
89
|
+
## EC2
|
90
|
+
Available keys for `--compute-attributes`:
|
91
|
+
```
|
92
|
+
flavor_id # select one of available flavours
|
93
|
+
image_id # select one of available images
|
94
|
+
availability_zone
|
95
|
+
security_group_ids
|
96
|
+
managed_ip
|
97
|
+
```
|
98
|
+
|
99
|
+
## GCE
|
100
|
+
Available keys for `--compute-attributes`:
|
101
|
+
```
|
102
|
+
machine_type # one of available flavors
|
103
|
+
image_id
|
104
|
+
network
|
105
|
+
external_ip
|
106
|
+
```
|
107
|
+
|
108
|
+
## Libvirt
|
109
|
+
Available keys for `--compute-attributes`:
|
110
|
+
```
|
111
|
+
cpus # number of CPUs
|
112
|
+
memory # string, amount of memory, value in bytes
|
113
|
+
start # boolean, whether to start the machine or not
|
114
|
+
```
|
115
|
+
|
116
|
+
Available keys for `--interface`:
|
117
|
+
```
|
118
|
+
type # one of [:bridge, :network]
|
119
|
+
network / :bridge # name of interface according to type
|
120
|
+
model # one of [virtio, rtl8139, ne2k_pci, pcnet, e1000]
|
121
|
+
```
|
122
|
+
|
123
|
+
Available keys for `--volume`:
|
124
|
+
```
|
125
|
+
pool_name # list of available storage pools
|
126
|
+
capacity # string value, eg. 10G
|
127
|
+
format_type # one of [raw, qcow2]
|
128
|
+
```
|
129
|
+
|
130
|
+
## OpenStack
|
131
|
+
Available keys for `--compute-attributes`:
|
132
|
+
```
|
133
|
+
flavor_ref
|
134
|
+
image_ref
|
135
|
+
tenant_id
|
136
|
+
security_groups
|
137
|
+
network
|
138
|
+
```
|
139
|
+
|
140
|
+
## oVirt
|
141
|
+
Available keys for `--compute-attributes`:
|
142
|
+
```
|
143
|
+
cluster
|
144
|
+
template # hardware profile to use
|
145
|
+
cores # int value, number of cores
|
146
|
+
memory # amount of memory, int value in bytes
|
147
|
+
start # boolean, whether to start the machine or not
|
148
|
+
```
|
149
|
+
|
150
|
+
Available keys for `--interface`:
|
151
|
+
```
|
152
|
+
name # eg. eth0
|
153
|
+
network # select one of available networks for a cluster
|
154
|
+
```
|
155
|
+
|
156
|
+
Available keys for `--volume`:
|
157
|
+
```
|
158
|
+
size_gb # volume size in GB, integer value
|
159
|
+
storage_domain # select one of available storage domains
|
160
|
+
bootable # boolean, only one volume can be bootable
|
161
|
+
```
|
162
|
+
|
163
|
+
## Rackspace
|
164
|
+
Available keys for `--compute-attributes`:
|
165
|
+
```
|
166
|
+
flavor_id
|
167
|
+
image_id
|
168
|
+
```
|
169
|
+
|
170
|
+
## vmWare
|
171
|
+
Available keys for `--compute-attributes`:
|
172
|
+
```
|
173
|
+
cpus # cpu count
|
174
|
+
memory_mb # integer number
|
175
|
+
cluster
|
176
|
+
path
|
177
|
+
```
|
178
|
+
|
179
|
+
Available keys for `--interface`:
|
180
|
+
```
|
181
|
+
network
|
182
|
+
```
|
183
|
+
|
184
|
+
Available keys for `--volume`:
|
185
|
+
```
|
186
|
+
datastore
|
187
|
+
name
|
188
|
+
size_gb # integer number
|
189
|
+
```
|
190
|
+
|
data/lib/hammer_cli_foreman.rb
CHANGED
@@ -28,6 +28,7 @@ module HammerCLIForeman
|
|
28
28
|
require 'hammer_cli_foreman/report'
|
29
29
|
require 'hammer_cli_foreman/puppet_class'
|
30
30
|
require 'hammer_cli_foreman/smart_proxy'
|
31
|
+
require 'hammer_cli_foreman/smart_class_parameter'
|
31
32
|
require 'hammer_cli_foreman/subnet'
|
32
33
|
require 'hammer_cli_foreman/template'
|
33
34
|
require 'hammer_cli_foreman/user'
|
@@ -2,6 +2,20 @@ require 'hammer_cli'
|
|
2
2
|
|
3
3
|
module HammerCLIForeman
|
4
4
|
|
5
|
+
class WriteCommand < HammerCLI::Apipie::WriteCommand
|
6
|
+
|
7
|
+
def success_message_params(response)
|
8
|
+
if response
|
9
|
+
if response.is_a?(Hash) and !response.empty?
|
10
|
+
response[response.keys[0]]
|
11
|
+
else
|
12
|
+
response
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
5
19
|
class ListCommand < HammerCLI::Apipie::ReadCommand
|
6
20
|
|
7
21
|
action :index
|
@@ -19,7 +33,7 @@ module HammerCLIForeman
|
|
19
33
|
|
20
34
|
class InfoCommand < HammerCLI::Apipie::ReadCommand
|
21
35
|
|
22
|
-
|
36
|
+
action :show
|
23
37
|
|
24
38
|
def self.command_name(name=nil)
|
25
39
|
super(name) || "info"
|
@@ -38,7 +52,7 @@ module HammerCLIForeman
|
|
38
52
|
end
|
39
53
|
|
40
54
|
|
41
|
-
class CreateCommand <
|
55
|
+
class CreateCommand < WriteCommand
|
42
56
|
|
43
57
|
action :create
|
44
58
|
|
@@ -49,7 +63,7 @@ module HammerCLIForeman
|
|
49
63
|
end
|
50
64
|
|
51
65
|
|
52
|
-
class UpdateCommand <
|
66
|
+
class UpdateCommand < WriteCommand
|
53
67
|
|
54
68
|
action :update
|
55
69
|
|
@@ -77,7 +91,7 @@ module HammerCLIForeman
|
|
77
91
|
end
|
78
92
|
|
79
93
|
|
80
|
-
class DeleteCommand <
|
94
|
+
class DeleteCommand < WriteCommand
|
81
95
|
|
82
96
|
action :destroy
|
83
97
|
|
@@ -98,7 +112,7 @@ module HammerCLIForeman
|
|
98
112
|
end
|
99
113
|
|
100
114
|
|
101
|
-
class AssociatedCommand <
|
115
|
+
class AssociatedCommand < WriteCommand
|
102
116
|
|
103
117
|
identifiers :name, :id
|
104
118
|
action :update
|
@@ -175,7 +189,7 @@ module HammerCLIForeman
|
|
175
189
|
class AddAssociatedCommand < AssociatedCommand
|
176
190
|
|
177
191
|
def self.command_name(name=nil)
|
178
|
-
super(name) || "add_"+associated_resource.name
|
192
|
+
super(name) || (associated_resource ? "add_"+associated_resource.name : nil)
|
179
193
|
end
|
180
194
|
|
181
195
|
def self.desc(desc=nil)
|
@@ -195,7 +209,7 @@ module HammerCLIForeman
|
|
195
209
|
class RemoveAssociatedCommand < AssociatedCommand
|
196
210
|
|
197
211
|
def self.command_name(name=nil)
|
198
|
-
super(name) || "remove_"+associated_resource.name
|
212
|
+
super(name) || (associated_resource ? "remove_"+associated_resource.name : nil)
|
199
213
|
end
|
200
214
|
|
201
215
|
def self.desc(desc=nil)
|
@@ -19,36 +19,30 @@ module HammerCLIForeman
|
|
19
19
|
apipie_options
|
20
20
|
end
|
21
21
|
|
22
|
-
class SetCommand <
|
22
|
+
class SetCommand < HammerCLIForeman::WriteCommand
|
23
23
|
|
24
24
|
command_name "set"
|
25
25
|
desc "Set a global parameter."
|
26
26
|
|
27
|
+
success_message_for :create, "Created parameter [%{name}s] with value [%{value}s]."
|
28
|
+
success_message_for :update, "Parameter [%{name}s] updated to [%{value}s]."
|
29
|
+
|
27
30
|
resource ForemanApi::Resources::CommonParameter
|
28
31
|
|
29
32
|
option "--name", "NAME", "parameter name", :required => true
|
30
33
|
option "--value", "VALUE", "parameter value", :required => true
|
31
34
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
else
|
36
|
-
self.class.action :create
|
37
|
-
end
|
38
|
-
super
|
35
|
+
def action
|
36
|
+
@action ||= parameter_exist? ? :update : :create
|
37
|
+
@action
|
39
38
|
end
|
40
39
|
|
41
|
-
def
|
42
|
-
|
43
|
-
msg = "Global parameter created"
|
44
|
-
else
|
45
|
-
msg = "Global parameter updated"
|
46
|
-
end
|
47
|
-
print_message msg
|
40
|
+
def success_message
|
41
|
+
success_message_for(action)
|
48
42
|
end
|
49
43
|
|
50
44
|
def parameter_exist?
|
51
|
-
params = resource.index
|
45
|
+
params = resource.call(:index)[0]
|
52
46
|
params.find { |p| p["common_parameter"]["name"] == name }
|
53
47
|
end
|
54
48
|
|
@@ -65,8 +59,8 @@ module HammerCLIForeman
|
|
65
59
|
|
66
60
|
identifiers :name
|
67
61
|
|
68
|
-
success_message "Global parameter deleted"
|
69
|
-
failure_message "Could not delete the global parameter"
|
62
|
+
success_message "Global parameter [%{name}s] deleted."
|
63
|
+
failure_message "Could not delete the global parameter [%{name}s]"
|
70
64
|
resource ForemanApi::Resources::CommonParameter, "destroy"
|
71
65
|
|
72
66
|
apipie_options :without => :id
|
@@ -32,7 +32,7 @@ module HammerCLIForeman
|
|
32
32
|
|
33
33
|
output ListCommand.output_definition do
|
34
34
|
from "domain" do
|
35
|
-
field :fullname, "
|
35
|
+
field :fullname, "Description"
|
36
36
|
field :dns_id, "DNS Id"
|
37
37
|
field :created_at, "Created at", Fields::Date
|
38
38
|
field :updated_at, "Updated at", Fields::Date
|
@@ -47,27 +47,29 @@ module HammerCLIForeman
|
|
47
47
|
|
48
48
|
class CreateCommand < HammerCLIForeman::CreateCommand
|
49
49
|
|
50
|
-
success_message "Domain created"
|
50
|
+
success_message "Domain [%{name}s] created"
|
51
51
|
failure_message "Could not create the domain"
|
52
52
|
resource ForemanApi::Resources::Domain, "create"
|
53
53
|
|
54
|
-
apipie_options :without => [
|
54
|
+
apipie_options :without => [:domain_parameters_attributes, :fullname]
|
55
|
+
option "--description", "DESC", "Full name describing the domain", :attribute_name => :fullname
|
55
56
|
end
|
56
57
|
|
57
58
|
|
58
59
|
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
59
60
|
|
60
|
-
success_message "Domain updated"
|
61
|
+
success_message "Domain [%{name}s] updated"
|
61
62
|
failure_message "Could not update the domain"
|
62
63
|
resource ForemanApi::Resources::Domain, "update"
|
63
64
|
|
64
|
-
apipie_options :without => [
|
65
|
+
apipie_options :without => [:domain_parameters_attributes, :name, :id, :fullname]
|
66
|
+
option "--description", "DESC", "Full name describing the domain", :attribute_name => :fullname
|
65
67
|
end
|
66
68
|
|
67
69
|
|
68
70
|
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
69
71
|
|
70
|
-
success_message "Domain deleted"
|
72
|
+
success_message "Domain [%{name}s] deleted"
|
71
73
|
failure_message "Could not delete the domain"
|
72
74
|
resource ForemanApi::Resources::Domain, "destroy"
|
73
75
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'hammer_cli'
|
2
2
|
require 'foreman_api'
|
3
|
+
require 'hammer_cli_foreman/smart_class_parameter'
|
4
|
+
|
3
5
|
|
4
6
|
module HammerCLIForeman
|
5
7
|
|
@@ -61,6 +63,14 @@ module HammerCLIForeman
|
|
61
63
|
apipie_options
|
62
64
|
end
|
63
65
|
|
66
|
+
class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
|
67
|
+
|
68
|
+
apipie_options :without => [:host_id, :hostgroup_id, :puppetclass_id, :environment_id]
|
69
|
+
option ['--id', '--name'], 'ENVIRONMENT_ID', 'environment id/name',
|
70
|
+
:required => true, :attribute_name => :environment_id
|
71
|
+
end
|
72
|
+
|
73
|
+
|
64
74
|
autoload_subcommands
|
65
75
|
end
|
66
76
|
|