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.

@@ -0,0 +1,83 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+ require 'hammer_cli_foreman/resource_supported_test'
5
+
6
+ module HammerCLIForeman
7
+
8
+ class Location < HammerCLI::AbstractCommand
9
+
10
+ class ListCommand < HammerCLIForeman::ListCommand
11
+ include HammerCLIForeman::ResourceSupportedTest
12
+ resource ForemanApi::Resources::Location, "index"
13
+
14
+ heading "Locations"
15
+ output do
16
+ from "location" do
17
+ field :id, "Id"
18
+ field :name, "Name"
19
+ end
20
+ end
21
+
22
+ apipie_options
23
+ end
24
+
25
+
26
+ class InfoCommand < HammerCLIForeman::InfoCommand
27
+ include HammerCLIForeman::ResourceSupportedTest
28
+ resource ForemanApi::Resources::Location, "show"
29
+
30
+ heading "Location info"
31
+ output ListCommand.output_definition do
32
+ from "location" do
33
+ field :created_at, "Created at", HammerCLI::Output::Fields::Date
34
+ field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+
41
+ class CreateCommand < HammerCLIForeman::CreateCommand
42
+ include HammerCLIForeman::ResourceSupportedTest
43
+
44
+ success_message "Location created"
45
+ failure_message "Could not create the location"
46
+ resource ForemanApi::Resources::Location, "create"
47
+
48
+ apipie_options
49
+ end
50
+
51
+
52
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
53
+ include HammerCLIForeman::ResourceSupportedTest
54
+
55
+ success_message "Location updated"
56
+ failure_message "Could not update the location"
57
+ resource ForemanApi::Resources::Location, "update"
58
+
59
+ apipie_options
60
+ end
61
+
62
+
63
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
64
+ include HammerCLIForeman::ResourceSupportedTest
65
+
66
+ success_message "Location deleted"
67
+ failure_message "Could not delete the location"
68
+ resource ForemanApi::Resources::Location, "destroy"
69
+
70
+ apipie_options
71
+ end
72
+
73
+ subcommand "list", "List locations.", HammerCLIForeman::Location::ListCommand
74
+ subcommand "info", "Detailed info about an location.", HammerCLIForeman::Location::InfoCommand
75
+ subcommand "create", "Create new location.", HammerCLIForeman::Location::CreateCommand
76
+ subcommand "update", "Update an location.", HammerCLIForeman::Location::UpdateCommand
77
+ subcommand "delete", "Delete an location.", HammerCLIForeman::Location::DeleteCommand
78
+ end
79
+
80
+ end
81
+
82
+ HammerCLI::MainCommand.subcommand 'location', "Manipulate Foreman's locations.", HammerCLIForeman::Location
83
+
@@ -0,0 +1,98 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+
5
+ module HammerCLIForeman
6
+
7
+ class Medium < HammerCLI::AbstractCommand
8
+
9
+ class ListCommand < HammerCLIForeman::ListCommand
10
+ resource ForemanApi::Resources::Medium, "index"
11
+
12
+ heading "Installation Media"
13
+ output do
14
+ from "medium" do
15
+ field :id, "Id"
16
+ field :name, "Name"
17
+ field :path, "Path"
18
+ end
19
+ end
20
+
21
+ apipie_options
22
+ end
23
+
24
+
25
+ class InfoCommand < HammerCLIForeman::InfoCommand
26
+ resource ForemanApi::Resources::Medium, "show"
27
+
28
+ heading "Medium info"
29
+ output ListCommand.output_definition do
30
+ from "medium" do
31
+ field :os_family, "OS Family"
32
+ field :operatingsystem_ids, "OS IDs"
33
+ field :created_at, "Created at", HammerCLI::Output::Fields::Date
34
+ field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+
41
+ class CreateCommand < HammerCLIForeman::CreateCommand
42
+
43
+ success_message "Installation medium created"
44
+ failure_message "Could not create the installation medium"
45
+ resource ForemanApi::Resources::Medium, "create"
46
+
47
+ apipie_options
48
+
49
+ #FIXME: remove OS ids option and custom request_params once it's added to foreman's apipie docs
50
+ option "--operatingsystem-ids", "OSIDS", "os ids", &HammerCLI::OptionFormatters.method(:list)
51
+
52
+ def request_params
53
+ params = super
54
+ params['medium']['operatingsystem_ids'] = operatingsystem_ids
55
+ params
56
+ end
57
+ end
58
+
59
+
60
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
61
+
62
+ success_message "Installation medium updated"
63
+ failure_message "Could not update the installation media"
64
+ resource ForemanApi::Resources::Medium, "update"
65
+
66
+ apipie_options
67
+
68
+ #FIXME: remove OS ids option and custom request_params once it's added to foreman's apipie docs
69
+ option "--operatingsystem-ids", "OSIDS", "os ids", &HammerCLI::OptionFormatters.method(:list)
70
+
71
+ def request_params
72
+ params = super
73
+ params['medium']['operatingsystem_ids'] = operatingsystem_ids
74
+ params
75
+ end
76
+ end
77
+
78
+
79
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
80
+
81
+ success_message "Installation medium deleted"
82
+ failure_message "Could not delete the installation media"
83
+ resource ForemanApi::Resources::Medium, "destroy"
84
+
85
+ apipie_options
86
+ end
87
+
88
+ subcommand "list", "List installation media.", HammerCLIForeman::Medium::ListCommand
89
+ subcommand "info", "Detailed info about an installation medium.", HammerCLIForeman::Medium::InfoCommand
90
+ subcommand "create", "Create new installation medium.", HammerCLIForeman::Medium::CreateCommand
91
+ subcommand "update", "Update an installation medium.", HammerCLIForeman::Medium::UpdateCommand
92
+ subcommand "delete", "Delete an installation medium.", HammerCLIForeman::Medium::DeleteCommand
93
+ end
94
+
95
+ end
96
+
97
+ HammerCLI::MainCommand.subcommand 'medium', "Manipulate Foreman's installation media.", HammerCLIForeman::Medium
98
+
@@ -0,0 +1,175 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+
5
+ module HammerCLIForeman
6
+
7
+ class OperatingSystem < HammerCLI::AbstractCommand
8
+
9
+ class ListCommand < HammerCLIForeman::ListCommand
10
+ resource ForemanApi::Resources::OperatingSystem, "index"
11
+
12
+ heading "Operating systems"
13
+ output do
14
+ from "operatingsystem" do
15
+ field :id, "Id"
16
+ end
17
+ field :operatingsystem, "Name", HammerCLI::Output::Fields::OSName
18
+ from "operatingsystem" do
19
+ field :release_name, "Release name"
20
+ field :family, "Family"
21
+ end
22
+ end
23
+
24
+ apipie_options
25
+ end
26
+
27
+
28
+ class InfoCommand < HammerCLIForeman::InfoCommand
29
+ resource ForemanApi::Resources::OperatingSystem, "show"
30
+
31
+ identifiers :id, :label
32
+
33
+ heading "Operating system info"
34
+ output ListCommand.output_definition do
35
+ from "operatingsystem" do
36
+ field :media_names, "Installation media", HammerCLI::Output::Fields::List
37
+ field :architecture_names, "Architectures", HammerCLI::Output::Fields::List
38
+ field :ptable_names, "Partition tables", HammerCLI::Output::Fields::List
39
+ field :config_template_names, "Config templates", HammerCLI::Output::Fields::List
40
+ end
41
+ collection :parameters, "Parameters" do
42
+ field :parameter, nil, HammerCLI::Output::Fields::KeyValue
43
+ end
44
+ end
45
+
46
+ #FIXME: remove custom retrieve_data after the api has support for listing names
47
+ def retrieve_data
48
+ os = super
49
+ os["operatingsystem"]["media_names"] = os["operatingsystem"]["media"].collect{|m| m["medium"]["name"] } rescue []
50
+ os["operatingsystem"]["architecture_names"] = os["operatingsystem"]["architectures"].collect{|m| m["architecture"]["name"] } rescue []
51
+ os["operatingsystem"]["ptable_names"] = os["operatingsystem"]["ptables"].collect{|m| m["ptable"]["name"] } rescue []
52
+ os["operatingsystem"]["config_template_names"] = os["operatingsystem"]["config_templates"].collect{|m| m["config_template"]["name"] } rescue []
53
+ os["parameters"] = HammerCLIForeman::Parameter.get_parameters resource_config, os
54
+ os
55
+ end
56
+
57
+ end
58
+
59
+
60
+ class CreateCommand < HammerCLIForeman::CreateCommand
61
+
62
+ #FIXME: replace with apipie_options when they are added to the api docs
63
+ option "--architecture-ids", "ARCH_IDS", "set associated architectures", &HammerCLI::OptionFormatters.method(:list)
64
+ option "--config-template-ids", "CONFIG_TPL_IDS", "set associated templates", &HammerCLI::OptionFormatters.method(:list)
65
+ option "--medium-ids", "MEDIUM_IDS", "set associated installation media", &HammerCLI::OptionFormatters.method(:list)
66
+ option "--ptable-ids", "PTABLE_IDS", "set associated partition tables", &HammerCLI::OptionFormatters.method(:list)
67
+
68
+ success_message "Operating system created"
69
+ failure_message "Could not create the operating system"
70
+ resource ForemanApi::Resources::OperatingSystem, "create"
71
+
72
+ def request_params
73
+ params = method_options
74
+ params["operatingsystem"]["architecture_ids"] = architecture_ids if architecture_ids
75
+ params["operatingsystem"]["config_template_ids"] = config_template_ids if config_template_ids
76
+ params["operatingsystem"]["medium_ids"] = medium_ids if medium_ids
77
+ params["operatingsystem"]["ptable_ids"] = ptable_ids if ptable_ids
78
+ params
79
+ end
80
+
81
+ apipie_options
82
+ end
83
+
84
+
85
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
86
+
87
+ #FIXME: replace with apipie_options when they are added to the api docs
88
+ option "--architecture-ids", "ARCH_IDS", "set associated architectures", &HammerCLI::OptionFormatters.method(:list)
89
+ option "--config-template-ids", "CONFIG_TPL_IDS", "set associated templates", &HammerCLI::OptionFormatters.method(:list)
90
+ option "--medium-ids", "MEDIUM_IDS", "set associated installation media", &HammerCLI::OptionFormatters.method(:list)
91
+ option "--ptable-ids", "PTABLE_IDS", "set associated partition tables", &HammerCLI::OptionFormatters.method(:list)
92
+
93
+ identifiers :id, :label
94
+
95
+ success_message "Operating system updated"
96
+ failure_message "Could not update the operating system"
97
+ resource ForemanApi::Resources::OperatingSystem, "update"
98
+
99
+ def request_params
100
+ params = method_options
101
+ params["operatingsystem"]["architecture_ids"] = architecture_ids if architecture_ids
102
+ params["operatingsystem"]["config_template_ids"] = config_template_ids if config_template_ids
103
+ params["operatingsystem"]["medium_ids"] = medium_ids if medium_ids
104
+ params["operatingsystem"]["ptable_ids"] = ptable_ids if ptable_ids
105
+ params
106
+ end
107
+
108
+ apipie_options
109
+ end
110
+
111
+
112
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
113
+
114
+ identifiers :id, :label
115
+
116
+ success_message "Operating system deleted"
117
+ failure_message "Could not delete the operating system"
118
+ resource ForemanApi::Resources::OperatingSystem, "destroy"
119
+
120
+ apipie_options
121
+ end
122
+
123
+ class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
124
+
125
+ #FIXME: add option --os-label when api supports it
126
+ option "--os-id", "OS_ID", "id of the operating system the parameter is being set for"
127
+
128
+ success_message_for :update, "Operating system parameter updated"
129
+ success_message_for :create, "New operating system parameter created"
130
+ failure_message "Could not set operating system parameter"
131
+
132
+ def validate_options
133
+ super
134
+ validator.any(:os_id).required
135
+ end
136
+
137
+ def base_action_params
138
+ {
139
+ "operatingsystem_id" => os_id
140
+ }
141
+ end
142
+ end
143
+
144
+
145
+ class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
146
+
147
+ #FIXME: add option --os-label when api supports it
148
+ option "--os-id", "OS_ID", "id of the operating system the parameter is being deleted for"
149
+ success_message "operating system parameter deleted"
150
+
151
+ def validate_options
152
+ super
153
+ validator.any(:os_id).required
154
+ end
155
+
156
+ def base_action_params
157
+ {
158
+ "operatingsystem_id" => os_id
159
+ }
160
+ end
161
+ end
162
+
163
+ subcommand "list", "List operating systems.", HammerCLIForeman::OperatingSystem::ListCommand
164
+ subcommand "info", "Detailed info about an operating system.", HammerCLIForeman::OperatingSystem::InfoCommand
165
+ subcommand "create", "Create new operating system.", HammerCLIForeman::OperatingSystem::CreateCommand
166
+ subcommand "update", "Update an operating system.", HammerCLIForeman::OperatingSystem::UpdateCommand
167
+ subcommand "delete", "Delete an operating system.", HammerCLIForeman::OperatingSystem::DeleteCommand
168
+ subcommand "set_parameter", "Create or update parameter for an operating system.", HammerCLIForeman::OperatingSystem::SetParameterCommand
169
+ subcommand "delete_parameter", "Delete parameter for an operating system.", HammerCLIForeman::OperatingSystem::DeleteParameterCommand
170
+ end
171
+
172
+ end
173
+
174
+ HammerCLI::MainCommand.subcommand 'os', "Manipulate Foreman's operating system.", HammerCLIForeman::OperatingSystem
175
+
@@ -0,0 +1,83 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+ require 'hammer_cli_foreman/resource_supported_test'
5
+
6
+ module HammerCLIForeman
7
+
8
+ class Organization < HammerCLI::AbstractCommand
9
+
10
+ class ListCommand < HammerCLIForeman::ListCommand
11
+ include HammerCLIForeman::ResourceSupportedTest
12
+ resource ForemanApi::Resources::Organization, "index"
13
+
14
+ heading "Organizations"
15
+ output do
16
+ from "organization" do
17
+ field :id, "Id"
18
+ field :name, "Name"
19
+ end
20
+ end
21
+
22
+ apipie_options
23
+ end
24
+
25
+
26
+ class InfoCommand < HammerCLIForeman::InfoCommand
27
+ include HammerCLIForeman::ResourceSupportedTest
28
+ resource ForemanApi::Resources::Organization, "show"
29
+
30
+ heading "Organization info"
31
+ output ListCommand.output_definition do
32
+ from "organization" do
33
+ field :created_at, "Created at", HammerCLI::Output::Fields::Date
34
+ field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+
41
+ class CreateCommand < HammerCLIForeman::CreateCommand
42
+ include HammerCLIForeman::ResourceSupportedTest
43
+
44
+ success_message "Organization created"
45
+ failure_message "Could not create the organization"
46
+ resource ForemanApi::Resources::Organization, "create"
47
+
48
+ apipie_options
49
+ end
50
+
51
+
52
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
53
+ include HammerCLIForeman::ResourceSupportedTest
54
+
55
+ success_message "Organization updated"
56
+ failure_message "Could not update the organization"
57
+ resource ForemanApi::Resources::Organization, "update"
58
+
59
+ apipie_options
60
+ end
61
+
62
+
63
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
64
+ include HammerCLIForeman::ResourceSupportedTest
65
+
66
+ success_message "Organization deleted"
67
+ failure_message "Could not delete the organization"
68
+ resource ForemanApi::Resources::Organization, "destroy"
69
+
70
+ apipie_options
71
+ end
72
+
73
+ subcommand "list", "List organizations.", HammerCLIForeman::Organization::ListCommand
74
+ subcommand "info", "Detailed info about an organization.", HammerCLIForeman::Organization::InfoCommand
75
+ subcommand "create", "Create new organization.", HammerCLIForeman::Organization::CreateCommand
76
+ subcommand "update", "Update an organization.", HammerCLIForeman::Organization::UpdateCommand
77
+ subcommand "delete", "Delete an organization.", HammerCLIForeman::Organization::DeleteCommand
78
+ end
79
+
80
+ end
81
+
82
+ HammerCLI::MainCommand.subcommand 'organization', "Manipulate Foreman's organizations.", HammerCLIForeman::Organization
83
+
@@ -0,0 +1,98 @@
1
+ require 'hammer_cli'
2
+ require 'hammer_cli/messages'
3
+ require 'foreman_api'
4
+
5
+ module HammerCLIForeman
6
+
7
+ module Parameter
8
+
9
+ def self.get_parameters(resource_config, resource)
10
+ resource_type = resource.keys.first
11
+ resource = resource[resource_type]
12
+ params = {
13
+ resource_type.to_s+"_id" => resource["id"] || resource["name"]
14
+ }
15
+
16
+ ForemanApi::Resources::Parameter.new(resource_config).index(params)[0]
17
+ end
18
+
19
+ class SetCommand < HammerCLI::Apipie::Command
20
+
21
+ include HammerCLI::Messages
22
+ resource ForemanApi::Resources::Parameter
23
+
24
+ option "--name", "NAME", "parameter name", :required => true
25
+ option "--value", "VALUE", "parameter value", :required => true
26
+
27
+ def execute
28
+ if parameter_exist?
29
+ update_parameter
30
+ output.print_message success_message_for :update if success_message_for :update
31
+ else
32
+ create_parameter
33
+ output.print_message success_message_for :create if success_message_for :create
34
+ end
35
+ 0
36
+ end
37
+
38
+ def base_action_params
39
+ {}
40
+ end
41
+
42
+ def parameter_exist?
43
+ params = resource.index(base_action_params)[0]
44
+ params.find { |p| p["parameter"]["name"] == name }
45
+ end
46
+
47
+ def update_parameter
48
+ params = {
49
+ "id" => name,
50
+ "parameter" => {
51
+ "value" => value
52
+ }
53
+ }.merge base_action_params
54
+
55
+ resource.update(params)
56
+ end
57
+
58
+ def create_parameter
59
+ params = {
60
+ "parameter" => {
61
+ "name" => name,
62
+ "value" => value
63
+ }
64
+ }.merge base_action_params
65
+
66
+ resource.create(params)
67
+ end
68
+
69
+ end
70
+
71
+
72
+ class DeleteCommand < HammerCLI::Apipie::Command
73
+
74
+ include HammerCLI::Messages
75
+ resource ForemanApi::Resources::Parameter
76
+
77
+ option "--name", "NAME", "parameter name", :required => true
78
+
79
+ def execute
80
+ params = {
81
+ "id" => name
82
+ }.merge base_action_params
83
+
84
+ resource.destroy(params)
85
+ output.print_message success_message if success_message
86
+ 0
87
+ end
88
+
89
+ def base_action_params
90
+ {}
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+ end
97
+
98
+