hammer_cli_foreman 0.0.4
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.
- data/lib/hammer_cli_foreman.rb +29 -0
- data/lib/hammer_cli_foreman/architecture.rb +78 -0
- data/lib/hammer_cli_foreman/commands.rb +73 -0
- data/lib/hammer_cli_foreman/common_parameter.rb +80 -0
- data/lib/hammer_cli_foreman/compute_resource.rb +113 -0
- data/lib/hammer_cli_foreman/domain.rb +133 -0
- data/lib/hammer_cli_foreman/environment.rb +76 -0
- data/lib/hammer_cli_foreman/exception_handler.rb +41 -0
- data/lib/hammer_cli_foreman/host.rb +205 -0
- data/lib/hammer_cli_foreman/hostgroup.rb +129 -0
- data/lib/hammer_cli_foreman/location.rb +83 -0
- data/lib/hammer_cli_foreman/media.rb +98 -0
- data/lib/hammer_cli_foreman/operating_system.rb +175 -0
- data/lib/hammer_cli_foreman/organization.rb +83 -0
- data/lib/hammer_cli_foreman/parameter.rb +98 -0
- data/lib/hammer_cli_foreman/partition_table.rb +93 -0
- data/lib/hammer_cli_foreman/resource_supported_test.rb +25 -0
- data/lib/hammer_cli_foreman/smart_proxy.rb +85 -0
- data/lib/hammer_cli_foreman/subnet.rb +90 -0
- data/lib/hammer_cli_foreman/template.rb +164 -0
- data/lib/hammer_cli_foreman/user.rb +96 -0
- data/lib/hammer_cli_foreman/version.rb +5 -0
- metadata +134 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'hammer_cli'
|
2
|
+
require 'foreman_api'
|
3
|
+
require 'hammer_cli_foreman/commands'
|
4
|
+
|
5
|
+
module HammerCLIForeman
|
6
|
+
|
7
|
+
class PartitionTable < HammerCLI::AbstractCommand
|
8
|
+
|
9
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
10
|
+
|
11
|
+
heading "Partition table list"
|
12
|
+
output do
|
13
|
+
from "ptable" do
|
14
|
+
field :id, "Id"
|
15
|
+
field :name, "Name"
|
16
|
+
field :os_family, "OS Family"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
resource ForemanApi::Resources::Ptable, "index"
|
21
|
+
apipie_options
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
26
|
+
|
27
|
+
heading "Partition table info"
|
28
|
+
output ListCommand.output_definition do
|
29
|
+
from "ptable" do
|
30
|
+
field :created_at, "Created at", HammerCLI::Output::Fields::Date
|
31
|
+
field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
resource ForemanApi::Resources::Ptable, "show"
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
class DumpCommand < HammerCLIForeman::InfoCommand
|
40
|
+
|
41
|
+
resource ForemanApi::Resources::Ptable, "show"
|
42
|
+
|
43
|
+
def print_data(partition_table)
|
44
|
+
puts partition_table["ptable"]["layout"]
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
51
|
+
|
52
|
+
option "--file", "LAYOUT", "Path to a file that contains the partition layout", :attribute_name => :layout, :required => true, &HammerCLI::OptionFormatters.method(:file)
|
53
|
+
|
54
|
+
success_message "Partition table created"
|
55
|
+
failure_message "Could not create the partition table"
|
56
|
+
resource ForemanApi::Resources::Ptable, "create"
|
57
|
+
|
58
|
+
apipie_options :without => [:layout] + declared_identifiers.keys
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
63
|
+
|
64
|
+
option "--file", "LAYOUT", "Path to a file that contains the partition layout", :attribute_name => :layout, &HammerCLI::OptionFormatters.method(:file)
|
65
|
+
|
66
|
+
success_message "Partition table updated"
|
67
|
+
failure_message "Could not update the partition table"
|
68
|
+
resource ForemanApi::Resources::Ptable, "update"
|
69
|
+
|
70
|
+
apipie_options :without => [:layout] + declared_identifiers.keys
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
75
|
+
|
76
|
+
success_message "Partition table deleted"
|
77
|
+
failure_message "Could not delete the partition table"
|
78
|
+
resource ForemanApi::Resources::Ptable, "destroy"
|
79
|
+
end
|
80
|
+
|
81
|
+
subcommand "list", "List partition tables.", HammerCLIForeman::PartitionTable::ListCommand
|
82
|
+
subcommand "info", "Detailed info about a partition table.", HammerCLIForeman::PartitionTable::InfoCommand
|
83
|
+
subcommand "dump", "View partition table content.", HammerCLIForeman::PartitionTable::DumpCommand
|
84
|
+
subcommand "create", "Create a new partition table.", HammerCLIForeman::PartitionTable::CreateCommand
|
85
|
+
subcommand "update", "Update a partition table.", HammerCLIForeman::PartitionTable::UpdateCommand
|
86
|
+
subcommand "delete", "Delete a partition table.", HammerCLIForeman::PartitionTable::DeleteCommand
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
HammerCLI::MainCommand.subcommand 'partition_table', "Manipulate Foreman's partition tables.", HammerCLIForeman::PartitionTable
|
93
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module HammerCLIForeman
|
2
|
+
|
3
|
+
module ResourceSupportedTest
|
4
|
+
|
5
|
+
def execute
|
6
|
+
if resource_supported?
|
7
|
+
super
|
8
|
+
else
|
9
|
+
output.print_error "The server does not support such operation."
|
10
|
+
1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def resource_supported?
|
15
|
+
resource.index
|
16
|
+
true
|
17
|
+
rescue RestClient::ResourceNotFound => e
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'hammer_cli'
|
2
|
+
require 'foreman_api'
|
3
|
+
require 'hammer_cli_foreman/commands'
|
4
|
+
|
5
|
+
module HammerCLIForeman
|
6
|
+
|
7
|
+
class SmartProxy < HammerCLI::AbstractCommand
|
8
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
9
|
+
resource ForemanApi::Resources::SmartProxy, "index"
|
10
|
+
|
11
|
+
#FIXME: search by unknown type returns 500 from the server, propper error handling should resove this
|
12
|
+
heading "Smart Proxy list"
|
13
|
+
output do
|
14
|
+
from "smart_proxy" do
|
15
|
+
field :id, "Id"
|
16
|
+
field :name, "Name"
|
17
|
+
field :url, "URL"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
apipie_options
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
26
|
+
|
27
|
+
resource ForemanApi::Resources::SmartProxy, "show"
|
28
|
+
|
29
|
+
def retrieve_data
|
30
|
+
sp = super
|
31
|
+
sp['smart_proxy']['_features'] = sp['smart_proxy']['features'].map { |f| f['feature']['name'] }
|
32
|
+
sp
|
33
|
+
end
|
34
|
+
|
35
|
+
heading "Smart proxy info"
|
36
|
+
output ListCommand.output_definition do
|
37
|
+
from "smart_proxy" do
|
38
|
+
field :_features, "Features", HammerCLI::Output::Fields::List
|
39
|
+
field :created_at, "Created at", HammerCLI::Output::Fields::Date
|
40
|
+
field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
48
|
+
|
49
|
+
success_message "Smart proxy created"
|
50
|
+
failure_message "Could not create the proxy"
|
51
|
+
resource ForemanApi::Resources::SmartProxy, "create"
|
52
|
+
|
53
|
+
apipie_options
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
58
|
+
|
59
|
+
success_message "Smart proxy updated"
|
60
|
+
failure_message "Could not update the proxy"
|
61
|
+
resource ForemanApi::Resources::SmartProxy, "update"
|
62
|
+
|
63
|
+
apipie_options
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
68
|
+
|
69
|
+
success_message "Smart proxy deleted"
|
70
|
+
failure_message "Could not delete the proxy"
|
71
|
+
resource ForemanApi::Resources::SmartProxy, "destroy"
|
72
|
+
|
73
|
+
apipie_options
|
74
|
+
end
|
75
|
+
|
76
|
+
subcommand "list", "List smart proxies.", HammerCLIForeman::SmartProxy::ListCommand
|
77
|
+
subcommand "info", "Detailed info about an smart proxy.", HammerCLIForeman::SmartProxy::InfoCommand
|
78
|
+
subcommand "create", "Create new smart proxy.", HammerCLIForeman::SmartProxy::CreateCommand
|
79
|
+
subcommand "update", "Update an smart proxy.", HammerCLIForeman::SmartProxy::UpdateCommand
|
80
|
+
subcommand "delete", "Delete an smart proxy.", HammerCLIForeman::SmartProxy::DeleteCommand
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
HammerCLI::MainCommand.subcommand 'proxy', "Manipulate Foreman's smart proxies.", HammerCLIForeman::SmartProxy
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'hammer_cli'
|
2
|
+
require 'foreman_api'
|
3
|
+
require 'hammer_cli_foreman/commands'
|
4
|
+
|
5
|
+
module HammerCLIForeman
|
6
|
+
|
7
|
+
class Subnet < HammerCLI::AbstractCommand
|
8
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
9
|
+
resource ForemanApi::Resources::Subnet, "index"
|
10
|
+
|
11
|
+
heading "Subnet list"
|
12
|
+
output do
|
13
|
+
from "subnet" do
|
14
|
+
field :id, "Id"
|
15
|
+
field :name, "Name"
|
16
|
+
field :network, "Network"
|
17
|
+
field :mask, "Mask"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
apipie_options
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
26
|
+
|
27
|
+
resource ForemanApi::Resources::Subnet, "show"
|
28
|
+
|
29
|
+
heading "Subnet info"
|
30
|
+
output ListCommand.output_definition do
|
31
|
+
from "subnet" do
|
32
|
+
field :priority, "Priority"
|
33
|
+
field :dns, "DNS", HammerCLI::Output::Fields::Server
|
34
|
+
field :dns_primary, "Primary DNS"
|
35
|
+
field :dns_secondary, "Secondary DNS"
|
36
|
+
field :domain_ids, "Domain ids", HammerCLI::Output::Fields::List
|
37
|
+
field :tftp, "TFTP", HammerCLI::Output::Fields::Server
|
38
|
+
field :tftp_id, "TFTP id"
|
39
|
+
field :dhcp, "DHCP", HammerCLI::Output::Fields::Server
|
40
|
+
field :dhcp_id, "DHCP id"
|
41
|
+
field :vlanid, "vlan id"
|
42
|
+
field :gateway, "Gateway"
|
43
|
+
field :from, "From"
|
44
|
+
field :to, "To"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
52
|
+
|
53
|
+
success_message "Subnet created"
|
54
|
+
failure_message "Could not create the subnet"
|
55
|
+
resource ForemanApi::Resources::Subnet, "create"
|
56
|
+
|
57
|
+
apipie_options
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
62
|
+
|
63
|
+
success_message "Subnet updated"
|
64
|
+
failure_message "Could not update the subnet"
|
65
|
+
resource ForemanApi::Resources::Subnet, "update"
|
66
|
+
|
67
|
+
apipie_options
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
72
|
+
|
73
|
+
success_message "Subnet deleted"
|
74
|
+
failure_message "Could not delete the subnet"
|
75
|
+
resource ForemanApi::Resources::Subnet, "destroy"
|
76
|
+
|
77
|
+
apipie_options
|
78
|
+
end
|
79
|
+
|
80
|
+
subcommand "list", "List subnets.", HammerCLIForeman::Subnet::ListCommand
|
81
|
+
subcommand "info", "Detailed info about an subnet.", HammerCLIForeman::Subnet::InfoCommand
|
82
|
+
subcommand "create", "Create new subnet.", HammerCLIForeman::Subnet::CreateCommand
|
83
|
+
subcommand "update", "Update an subnet.", HammerCLIForeman::Subnet::UpdateCommand
|
84
|
+
subcommand "delete", "Delete an subnet.", HammerCLIForeman::Subnet::DeleteCommand
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
HammerCLI::MainCommand.subcommand 'subnet', "Manipulate Foreman's subnets.", HammerCLIForeman::Subnet
|
90
|
+
|
@@ -0,0 +1,164 @@
|
|
1
|
+
require 'hammer_cli'
|
2
|
+
require 'foreman_api'
|
3
|
+
require 'hammer_cli_foreman/commands'
|
4
|
+
|
5
|
+
module HammerCLIForeman
|
6
|
+
|
7
|
+
class Template < HammerCLI::AbstractCommand
|
8
|
+
|
9
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
10
|
+
|
11
|
+
heading "Template list"
|
12
|
+
output do
|
13
|
+
from "config_template" do
|
14
|
+
field :id, "Id"
|
15
|
+
field :name, "Name"
|
16
|
+
field :type, "Type"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def retrieve_data
|
21
|
+
templates = super
|
22
|
+
templates.each do |tpl|
|
23
|
+
if tpl["config_template"]["snippet"]
|
24
|
+
tpl["config_template"]["type"] = "snippet"
|
25
|
+
else
|
26
|
+
tpl["config_template"]["type"] = tpl["config_template"]["template_kind"]["name"]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
resource ForemanApi::Resources::ConfigTemplate, "index"
|
32
|
+
apipie_options
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
37
|
+
|
38
|
+
#FIXME: Add name identifier when the find by name issue is fixed in the api
|
39
|
+
# Api currently does not accept names containing a dot
|
40
|
+
identifiers :id
|
41
|
+
|
42
|
+
heading "Template info"
|
43
|
+
output ListCommand.output_definition do
|
44
|
+
from "config_template" do
|
45
|
+
field :operatingsystem_ids, "OS ids", HammerCLI::Output::Fields::List
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def retrieve_data
|
50
|
+
template = super
|
51
|
+
if template["config_template"]["snippet"]
|
52
|
+
template["config_template"]["type"] = "snippet"
|
53
|
+
else
|
54
|
+
template["config_template"]["type"] = template["config_template"]["template_kind"]["name"]
|
55
|
+
end
|
56
|
+
template
|
57
|
+
end
|
58
|
+
|
59
|
+
resource ForemanApi::Resources::ConfigTemplate, "show"
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
class ListKindsCommand < HammerCLIForeman::ListCommand
|
64
|
+
|
65
|
+
heading "Template kind list"
|
66
|
+
output do
|
67
|
+
from "template_kind" do
|
68
|
+
field :name, "Name"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def retrieve_data
|
73
|
+
snippet = { "template_kind" => { "name" => "snippet" }}
|
74
|
+
super << snippet
|
75
|
+
end
|
76
|
+
|
77
|
+
resource ForemanApi::Resources::TemplateKind, "index"
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
class DumpCommand < HammerCLIForeman::InfoCommand
|
82
|
+
|
83
|
+
identifiers :id
|
84
|
+
|
85
|
+
resource ForemanApi::Resources::ConfigTemplate, "show"
|
86
|
+
|
87
|
+
def print_data(template)
|
88
|
+
puts template["config_template"]["template"]
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
95
|
+
|
96
|
+
option "--file", "TEMPLATE", "Path to a file that contains the template", :attribute_name => :template, :required => true, &HammerCLI::OptionFormatters.method(:file)
|
97
|
+
option "--type", "TYPE", "Template type. Eg. snippet, script, provision", :required => true
|
98
|
+
|
99
|
+
success_message "Config template created"
|
100
|
+
failure_message "Could not create the config template"
|
101
|
+
resource ForemanApi::Resources::ConfigTemplate, "create"
|
102
|
+
|
103
|
+
def snippet
|
104
|
+
type == "snippet"
|
105
|
+
end
|
106
|
+
|
107
|
+
def template_kind_id
|
108
|
+
kinds = ForemanApi::Resources::TemplateKind.new(resource_config).index()[0]
|
109
|
+
table = kinds.inject({}){ |result, k| result.update(k["template_kind"]["name"] => k["template_kind"]["id"]) }
|
110
|
+
table[type]
|
111
|
+
end
|
112
|
+
|
113
|
+
apipie_options :without => [:template_combinations_attributes, :template, :snippet, :template_kind_id]
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
118
|
+
|
119
|
+
option "--file", "TEMPLATE", "Path to a file that contains the template", :attribute_name => :template, &HammerCLI::OptionFormatters.method(:file)
|
120
|
+
option "--type", "TYPE", "Template type. Eg. snippet, script, provision"
|
121
|
+
|
122
|
+
identifiers :id
|
123
|
+
|
124
|
+
success_message "Config template updated"
|
125
|
+
failure_message "Could not update the config template"
|
126
|
+
resource ForemanApi::Resources::ConfigTemplate, "update"
|
127
|
+
|
128
|
+
def snippet
|
129
|
+
type == "snippet"
|
130
|
+
end
|
131
|
+
|
132
|
+
def template_kind_id
|
133
|
+
kinds = ForemanApi::Resources::TemplateKind.new(resource_config).index()[0]
|
134
|
+
table = kinds.inject({}){ |result, k| result.update(k["template_kind"]["name"] => k["template_kind"]["id"]) }
|
135
|
+
table[type]
|
136
|
+
end
|
137
|
+
|
138
|
+
apipie_options :without => [:template_combinations_attributes, :template, :snippet, :template_kind_id]
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
143
|
+
|
144
|
+
identifiers :id
|
145
|
+
|
146
|
+
success_message "Config template deleted"
|
147
|
+
failure_message "Could not delete the config template"
|
148
|
+
resource ForemanApi::Resources::ConfigTemplate, "destroy"
|
149
|
+
end
|
150
|
+
|
151
|
+
subcommand "list", "List config templates.", HammerCLIForeman::Template::ListCommand
|
152
|
+
subcommand "info", "Detailed info about a config template.", HammerCLIForeman::Template::InfoCommand
|
153
|
+
subcommand "dump", "View config template content.", HammerCLIForeman::Template::DumpCommand
|
154
|
+
subcommand "create", "Create a new config template.", HammerCLIForeman::Template::CreateCommand
|
155
|
+
subcommand "update", "Update a config template.", HammerCLIForeman::Template::UpdateCommand
|
156
|
+
subcommand "delete", "Delete a config template.", HammerCLIForeman::Template::DeleteCommand
|
157
|
+
subcommand "kinds", "List available config template kinds.", HammerCLIForeman::Template::ListKindsCommand
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
HammerCLI::MainCommand.subcommand 'template', "Manipulate Foreman's config templates.", HammerCLIForeman::Template
|
164
|
+
|