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,29 @@
1
+ require 'hammer_cli'
2
+ require 'hammer_cli/exit_codes'
3
+
4
+ module HammerCLIForeman
5
+
6
+ def self.exception_handler_class
7
+ HammerCLIForeman::ExceptionHandler
8
+ end
9
+
10
+ require 'hammer_cli_foreman/exception_handler'
11
+ require 'hammer_cli_foreman/architecture'
12
+ require 'hammer_cli_foreman/common_parameter'
13
+ require 'hammer_cli_foreman/compute_resource'
14
+ require 'hammer_cli_foreman/domain'
15
+ require 'hammer_cli_foreman/environment'
16
+ require 'hammer_cli_foreman/host'
17
+ require 'hammer_cli_foreman/hostgroup'
18
+ require 'hammer_cli_foreman/location'
19
+ require 'hammer_cli_foreman/media'
20
+ require 'hammer_cli_foreman/operating_system'
21
+ require 'hammer_cli_foreman/organization'
22
+ require 'hammer_cli_foreman/partition_table'
23
+ require 'hammer_cli_foreman/smart_proxy'
24
+ require 'hammer_cli_foreman/subnet'
25
+ require 'hammer_cli_foreman/template'
26
+ require 'hammer_cli_foreman/user'
27
+
28
+ end
29
+
@@ -0,0 +1,78 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+
5
+ module HammerCLIForeman
6
+
7
+ class Architecture < HammerCLI::AbstractCommand
8
+
9
+ class ListCommand < HammerCLIForeman::ListCommand
10
+
11
+ heading "Architecture list"
12
+ output do
13
+ from "architecture" do
14
+ field :id, "Id"
15
+ field :name, "Name"
16
+ end
17
+ end
18
+
19
+ resource ForemanApi::Resources::Architecture, "index"
20
+ apipie_options
21
+ end
22
+
23
+
24
+ class InfoCommand < HammerCLIForeman::InfoCommand
25
+
26
+ heading "Architecture info"
27
+ output ListCommand.output_definition do
28
+ from "architecture" do
29
+ field :operatingsystem_ids, "OS ids"
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::Architecture, "show"
36
+
37
+ end
38
+
39
+
40
+ class CreateCommand < HammerCLIForeman::CreateCommand
41
+
42
+ success_message "Architecture created"
43
+ failure_message "Could not create the architecture"
44
+ resource ForemanApi::Resources::Architecture, "create"
45
+
46
+ apipie_options
47
+ end
48
+
49
+
50
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
51
+
52
+ success_message "Architecture deleted"
53
+ failure_message "Could not delete the architecture"
54
+ resource ForemanApi::Resources::Architecture, "destroy"
55
+
56
+ end
57
+
58
+
59
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
60
+
61
+ success_message "Architecture updated"
62
+ failure_message "Could not update the architecture"
63
+ resource ForemanApi::Resources::Architecture, "update"
64
+
65
+ apipie_options
66
+ end
67
+
68
+ subcommand "list", "List architectures.", HammerCLIForeman::Architecture::ListCommand
69
+ subcommand "info", "Detailed info about an architecture.", HammerCLIForeman::Architecture::InfoCommand
70
+ subcommand "create", "Create new architecture.", HammerCLIForeman::Architecture::CreateCommand
71
+ subcommand "update", "Update an architecture.", HammerCLIForeman::Architecture::UpdateCommand
72
+ subcommand "delete", "Delete an architecture.", HammerCLIForeman::Architecture::DeleteCommand
73
+ end
74
+
75
+ end
76
+
77
+ HammerCLI::MainCommand.subcommand 'architecture', "Manipulate Foreman's architectures.", HammerCLIForeman::Architecture
78
+
@@ -0,0 +1,73 @@
1
+ require 'hammer_cli'
2
+
3
+ module HammerCLIForeman
4
+
5
+ class ListCommand < HammerCLI::Apipie::ReadCommand
6
+
7
+ def output
8
+ @output ||= HammerCLI::Output::Output.new(
9
+ :definition => output_definition,
10
+ :adapter => HammerCLI::Output::Adapter::Table.new)
11
+
12
+ end
13
+
14
+ end
15
+
16
+
17
+ class InfoCommand < HammerCLI::Apipie::ReadCommand
18
+
19
+ identifiers :id, :name
20
+
21
+ def request_params
22
+ {'id' => get_identifier[0]}
23
+ end
24
+
25
+ def self.apipie_options options={}
26
+ super(options.merge(:without => declared_identifiers.keys))
27
+ end
28
+ end
29
+
30
+
31
+ class CreateCommand < HammerCLI::Apipie::WriteCommand
32
+
33
+ end
34
+
35
+
36
+ class UpdateCommand < HammerCLI::Apipie::WriteCommand
37
+
38
+ identifiers :id, :name => :current_name
39
+
40
+ def setup_identifier_options
41
+ super
42
+ self.class.option "--new-name", "NEW_NAME", "new name for the resource", :attribute_name => :name if self.class.identifier? :name
43
+ end
44
+
45
+ def request_params
46
+ params = method_options
47
+ params['id'] = get_identifier[0]
48
+ params
49
+ end
50
+
51
+ def self.apipie_options options={}
52
+ super({:without => declared_identifiers.keys}.merge(options))
53
+ end
54
+
55
+ end
56
+
57
+
58
+ class DeleteCommand < HammerCLI::Apipie::WriteCommand
59
+
60
+ identifiers :id, :name
61
+
62
+ def request_params
63
+ {'id' => get_identifier[0]}
64
+ end
65
+
66
+ def self.apipie_options options={}
67
+ super({:without => declared_identifiers.keys}.merge(options))
68
+ end
69
+
70
+ end
71
+
72
+
73
+ end
@@ -0,0 +1,80 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+
4
+ module HammerCLIForeman
5
+
6
+ class CommonParameter < HammerCLI::AbstractCommand
7
+
8
+
9
+ class ListCommand < HammerCLIForeman::ListCommand
10
+ resource ForemanApi::Resources::CommonParameter, "index"
11
+
12
+ heading "Global parameter list"
13
+ output do
14
+ from "common_parameter" do
15
+ field :name, "Name"
16
+ field :value, "Value"
17
+ end
18
+ end
19
+
20
+ apipie_options
21
+ end
22
+
23
+ class SetCommand < HammerCLI::Apipie::WriteCommand
24
+
25
+ resource ForemanApi::Resources::CommonParameter
26
+
27
+ option "--name", "NAME", "parameter name", :required => true
28
+ option "--value", "VALUE", "parameter value", :required => true
29
+
30
+ def execute
31
+ if parameter_exist?
32
+ self.class.action :update
33
+ else
34
+ self.class.action :create
35
+ end
36
+ super
37
+ end
38
+
39
+ def print_message
40
+ if self.class.action == :create
41
+ msg = "Global parameter created"
42
+ else
43
+ msg = "Global parameter updated"
44
+ end
45
+ output.print_message msg
46
+ end
47
+
48
+ def parameter_exist?
49
+ params = resource.index(resource_config)[0]
50
+ params.find { |p| p["common_parameter"]["name"] == name }
51
+ end
52
+
53
+ def request_params
54
+ params = method_options
55
+ params['id'] = name
56
+ params
57
+ end
58
+
59
+ end
60
+
61
+
62
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
63
+
64
+ identifiers :name
65
+
66
+ success_message "Global parameter deleted"
67
+ failure_message "Could not delete the global parameter"
68
+ resource ForemanApi::Resources::CommonParameter, "destroy"
69
+
70
+ apipie_options :without => :id
71
+ end
72
+
73
+ subcommand "list", "List global parameters.", HammerCLIForeman::CommonParameter::ListCommand
74
+ subcommand "set", "Set a global parameter.", HammerCLIForeman::CommonParameter::SetCommand
75
+ subcommand "delete", "Delete a global parameter.", HammerCLIForeman::CommonParameter::DeleteCommand
76
+
77
+ end
78
+ end
79
+
80
+ HammerCLI::MainCommand.subcommand 'global_parameter', "Manipulate Foreman's global parameters.", HammerCLIForeman::CommonParameter
@@ -0,0 +1,113 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+
5
+ module HammerCLIForeman
6
+
7
+ class ComputeResource < HammerCLI::AbstractCommand
8
+
9
+ class ListCommand < HammerCLIForeman::ListCommand
10
+ resource ForemanApi::Resources::ComputeResource, "index"
11
+
12
+ heading "Compute resource list"
13
+ output do
14
+ from "compute_resource" do
15
+ field :id, "Id"
16
+ field :name, "Name"
17
+ field :provider, "Provider"
18
+ end
19
+ end
20
+
21
+ apipie_options
22
+ end
23
+
24
+
25
+ class InfoCommand < HammerCLIForeman::InfoCommand
26
+
27
+ PROVIDER_SPECIFIC_FIELDS = {
28
+ 'ovirt' => [
29
+ HammerCLI::Output::DataField.new(:label => 'UUID', :path => ["compute_resource", "uuid"])
30
+ ],
31
+ 'ec2' => [
32
+ HammerCLI::Output::DataField.new(:label => 'Region', :path => ["compute_resource", "region"])
33
+ ],
34
+ 'vmware' => [
35
+ HammerCLI::Output::DataField.new(:label => 'UUID', :path => ["compute_resource", "uuid"]),
36
+ HammerCLI::Output::DataField.new(:label => 'Server', :path => ["compute_resource", "server"])
37
+ ],
38
+ 'openstack' => [
39
+ HammerCLI::Output::DataField.new(:label => 'Tenant', :path => ["compute_resource", "tenant"])
40
+ ],
41
+ 'rackspace' => [
42
+ HammerCLI::Output::DataField.new(:label => 'Region', :path => ["compute_resource", "region"])
43
+ ],
44
+ 'libvirt' => [
45
+ ]
46
+ }
47
+
48
+ resource ForemanApi::Resources::ComputeResource, "show"
49
+
50
+ heading "Compute resource info"
51
+ output ListCommand.output_definition do
52
+ from "compute_resource" do
53
+ field :url, "Url"
54
+ field :description, "Description"
55
+ field :user, "User"
56
+ field :created_at, "Created at", HammerCLI::Output::Fields::Date
57
+ field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
58
+ end
59
+ end
60
+
61
+ def print_records data
62
+ provider = data["compute_resource"]["provider"].downcase
63
+ output_definition.fields.concat PROVIDER_SPECIFIC_FIELDS[provider]
64
+ super data
65
+ end
66
+
67
+ end
68
+
69
+
70
+ class CreateCommand < HammerCLIForeman::CreateCommand
71
+
72
+ success_message "Compute resource created"
73
+ failure_message "Could not create the compute resource"
74
+ resource ForemanApi::Resources::ComputeResource, "create"
75
+
76
+ apipie_options
77
+
78
+ validate_options do
79
+ all(:name, :url, :provider).required
80
+ end
81
+ end
82
+
83
+
84
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
85
+
86
+ success_message "Compute resource updated"
87
+ failure_message "Could not update the compute resource"
88
+ resource ForemanApi::Resources::ComputeResource, "update"
89
+
90
+ apipie_options
91
+ end
92
+
93
+
94
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
95
+
96
+ success_message "Compute resource deleted"
97
+ failure_message "Could not delete the compute resource"
98
+ resource ForemanApi::Resources::ComputeResource, "destroy"
99
+
100
+ apipie_options
101
+ end
102
+
103
+ subcommand "list", "List compute resources.", HammerCLIForeman::ComputeResource::ListCommand
104
+ subcommand "info", "Detailed info about a compute resource.", HammerCLIForeman::ComputeResource::InfoCommand
105
+ subcommand "create", "Create new compute resource.", HammerCLIForeman::ComputeResource::CreateCommand
106
+ subcommand "update", "Update a compute resource.", HammerCLIForeman::ComputeResource::UpdateCommand
107
+ subcommand "delete", "Delete a compute resource.", HammerCLIForeman::ComputeResource::DeleteCommand
108
+ end
109
+
110
+ end
111
+
112
+ HammerCLI::MainCommand.subcommand 'compute_resource', "Manipulate Foreman's compute resources.", HammerCLIForeman::ComputeResource
113
+
@@ -0,0 +1,133 @@
1
+ require 'hammer_cli'
2
+ require 'foreman_api'
3
+ require 'hammer_cli_foreman/commands'
4
+ require 'hammer_cli_foreman/parameter'
5
+
6
+ module HammerCLIForeman
7
+
8
+ class Domain < HammerCLI::AbstractCommand
9
+ class ListCommand < HammerCLIForeman::ListCommand
10
+ resource ForemanApi::Resources::Domain, "index"
11
+
12
+ heading "Domain list"
13
+ output do
14
+ from "domain" do
15
+ field :id, "Id"
16
+ field :name, "Name"
17
+ end
18
+ end
19
+
20
+ apipie_options
21
+ end
22
+
23
+
24
+ class InfoCommand < HammerCLIForeman::InfoCommand
25
+
26
+ resource ForemanApi::Resources::Domain, "show"
27
+
28
+ def retrieve_data
29
+ domain = super
30
+ domain["parameters"] = HammerCLIForeman::Parameter.get_parameters resource_config, domain
31
+ domain
32
+ end
33
+
34
+ heading "Domain info"
35
+ output ListCommand.output_definition do
36
+ from "domain" do
37
+ field :fullname, "Full Name"
38
+ field :dns_id, "DNS Id"
39
+ field :created_at, "Created at", HammerCLI::Output::Fields::Date
40
+ field :updated_at, "Updated at", HammerCLI::Output::Fields::Date
41
+ end
42
+ collection :parameters, "Parameters" do
43
+ field :parameter, nil, HammerCLI::Output::Fields::KeyValue
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+
50
+ class CreateCommand < HammerCLIForeman::CreateCommand
51
+
52
+ success_message "Domain created"
53
+ failure_message "Could not create the domain"
54
+ resource ForemanApi::Resources::Domain, "create"
55
+
56
+ apipie_options :without => ['domain_parameters_attributes']
57
+ end
58
+
59
+
60
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
61
+
62
+ success_message "Domain updated"
63
+ failure_message "Could not update the domain"
64
+ resource ForemanApi::Resources::Domain, "update"
65
+
66
+ apipie_options :without => ['domain_parameters_attributes', 'name', 'id']
67
+ end
68
+
69
+
70
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
71
+
72
+ success_message "Domain deleted"
73
+ failure_message "Could not delete the domain"
74
+ resource ForemanApi::Resources::Domain, "destroy"
75
+
76
+ apipie_options
77
+ end
78
+
79
+
80
+ class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
81
+
82
+ option "--domain-name", "DOMAIN_NAME", "name of the domain the parameter is being set for"
83
+ option "--domain-id", "DOMAIN_ID", "id of the domain the parameter is being set for"
84
+
85
+ success_message_for :update, "Domain parameter updated"
86
+ success_message_for :create, "New domain parameter created"
87
+ failure_message "Could not set domain parameter"
88
+
89
+ def validate_options
90
+ super
91
+ validator.any(:domain_name, :domain_id).required
92
+ end
93
+
94
+ def base_action_params
95
+ {
96
+ "domain_id" => domain_id || domain_name
97
+ }
98
+ end
99
+ end
100
+
101
+
102
+ class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
103
+
104
+ option "--domain-name", "DOMAIN_NAME", "name of the domain the parameter is being deleted for"
105
+ option "--domain-id", "DOMAIN_ID", "id of the domain the parameter is being deleted for"
106
+
107
+ success_message "Domain parameter deleted"
108
+
109
+ def validate_options
110
+ super
111
+ validator.any(:domain_name, :domain_id).required
112
+ end
113
+
114
+ def base_action_params
115
+ {
116
+ "domain_id" => domain_id || domain_name
117
+ }
118
+ end
119
+ end
120
+
121
+ subcommand "list", "List domains.", HammerCLIForeman::Domain::ListCommand
122
+ subcommand "info", "Detailed info about a domain.", HammerCLIForeman::Domain::InfoCommand
123
+ subcommand "create", "Create a new domain.", HammerCLIForeman::Domain::CreateCommand
124
+ subcommand "update", "Update a domain.", HammerCLIForeman::Domain::UpdateCommand
125
+ subcommand "delete", "Delete a domain.", HammerCLIForeman::Domain::DeleteCommand
126
+ subcommand "set_parameter", "Create or update parameter for a domain.", HammerCLIForeman::Domain::SetParameterCommand
127
+ subcommand "delete_parameter", "Delete parameter for a domain.", HammerCLIForeman::Domain::DeleteParameterCommand
128
+ end
129
+
130
+ end
131
+
132
+ HammerCLI::MainCommand.subcommand 'domain', "Manipulate Foreman's domains.", HammerCLIForeman::Domain
133
+