hammer_cli_foreman_puppet 0.0.1
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/LICENSE +5 -0
- data/README.md +20 -0
- data/config/foreman_puppet.yml +2 -0
- data/lib/hammer_cli_foreman_puppet.rb +57 -0
- data/lib/hammer_cli_foreman_puppet/associating_commands.rb +1 -0
- data/lib/hammer_cli_foreman_puppet/associating_commands/associating_commands.rb +40 -0
- data/lib/hammer_cli_foreman_puppet/class.rb +54 -0
- data/lib/hammer_cli_foreman_puppet/combination.rb +14 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions.rb +2 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/discovery.rb +8 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/environment.rb +24 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/environments.rb +24 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/host.rb +41 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/hostgroup.rb +47 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/location.rb +9 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/organization.rb +9 -0
- data/lib/hammer_cli_foreman_puppet/commands.rb +76 -0
- data/lib/hammer_cli_foreman_puppet/config_group.rb +45 -0
- data/lib/hammer_cli_foreman_puppet/discovery.rb +11 -0
- data/lib/hammer_cli_foreman_puppet/environment.rb +59 -0
- data/lib/hammer_cli_foreman_puppet/environment_name_mapping.rb +20 -0
- data/lib/hammer_cli_foreman_puppet/host.rb +70 -0
- data/lib/hammer_cli_foreman_puppet/hostgroup.rb +76 -0
- data/lib/hammer_cli_foreman_puppet/id_resolver.rb +73 -0
- data/lib/hammer_cli_foreman_puppet/location.rb +35 -0
- data/lib/hammer_cli_foreman_puppet/option_sources.rb +1 -0
- data/lib/hammer_cli_foreman_puppet/option_sources/puppet_environment_params.rb +60 -0
- data/lib/hammer_cli_foreman_puppet/organization.rb +35 -0
- data/lib/hammer_cli_foreman_puppet/puppet_references.rb +20 -0
- data/lib/hammer_cli_foreman_puppet/references.rb +22 -0
- data/lib/hammer_cli_foreman_puppet/smart_class_parameter.rb +182 -0
- data/lib/hammer_cli_foreman_puppet/smart_proxy.rb +58 -0
- data/lib/hammer_cli_foreman_puppet/version.rb +5 -0
- data/test/data/2.1/foreman_api.json +1 -0
- data/test/data/3.0/foreman_api.json +1 -0
- data/test/data/README.md +27 -0
- data/test/functional/config_group_test.rb +28 -0
- data/test/functional/host/create_test.rb +164 -0
- data/test/functional/host/update_test.rb +97 -0
- data/test/functional/hostgroup/create_test.rb +149 -0
- data/test/functional/hostgroup/update_test.rb +97 -0
- data/test/functional/proxy_test.rb +86 -0
- data/test/functional/smart_class_parameter_test.rb +97 -0
- data/test/functional/template_test.rb +38 -0
- data/test/functional/test_helper.rb +7 -0
- data/test/test_helper.rb +29 -0
- data/test/unit/apipie_resource_mock.rb +186 -0
- data/test/unit/config_group_test.rb +81 -0
- data/test/unit/helpers/command.rb +163 -0
- data/test/unit/helpers/fake_searchables.rb +19 -0
- data/test/unit/helpers/resource_disabled.rb +24 -0
- data/test/unit/puppet_class_test.rb +72 -0
- data/test/unit/puppet_environment_test.rb +116 -0
- data/test/unit/smart_class_parameter_test.rb +114 -0
- data/test/unit/test_helper.rb +18 -0
- data/test/unit/test_output_adapter.rb +22 -0
- metadata +143 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
module HammerCLIForemanPuppet
|
2
|
+
class ConfigGroup < HammerCLIForemanPuppet::Command
|
3
|
+
resource :config_groups
|
4
|
+
|
5
|
+
class ListCommand < HammerCLIForemanPuppet::ListCommand
|
6
|
+
output do
|
7
|
+
field :id, _('ID')
|
8
|
+
field :name, _('Name')
|
9
|
+
end
|
10
|
+
|
11
|
+
build_options
|
12
|
+
end
|
13
|
+
|
14
|
+
class InfoCommand < HammerCLIForemanPuppet::InfoCommand
|
15
|
+
output ListCommand.output_definition do
|
16
|
+
HammerCLIForemanPuppet::PuppetReferences.puppetclasses(self)
|
17
|
+
end
|
18
|
+
|
19
|
+
build_options
|
20
|
+
end
|
21
|
+
|
22
|
+
class CreateCommand < HammerCLIForemanPuppet::CreateCommand
|
23
|
+
success_message _('Config group created.')
|
24
|
+
failure_message _('Could not create the config group')
|
25
|
+
|
26
|
+
build_options
|
27
|
+
end
|
28
|
+
|
29
|
+
class UpdateCommand < HammerCLIForemanPuppet::UpdateCommand
|
30
|
+
success_message _('Config group updated.')
|
31
|
+
failure_message _('Could not update the config group')
|
32
|
+
|
33
|
+
build_options
|
34
|
+
end
|
35
|
+
|
36
|
+
class DeleteCommand < HammerCLIForemanPuppet::DeleteCommand
|
37
|
+
success_message _('Config group has been deleted.')
|
38
|
+
failure_message _('Could not delete the config group')
|
39
|
+
|
40
|
+
build_options
|
41
|
+
end
|
42
|
+
|
43
|
+
autoload_subcommands
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'hammer_cli_foreman_discovery/discovery'
|
2
|
+
require 'hammer_cli_foreman_puppet/command_extensions/discovery'
|
3
|
+
|
4
|
+
module HammerCLIForemanPuppet
|
5
|
+
HammerCLIForemanDiscovery::DiscoveredHost::ProvisionCommand.extend_with(
|
6
|
+
HammerCLIForemanPuppet::CommandExtensions::Provision.new
|
7
|
+
)
|
8
|
+
HammerCLIForemanDiscovery::DiscoveredHost::ProvisionCommand.extend_with(
|
9
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new
|
10
|
+
)
|
11
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module HammerCLIForemanPuppet
|
2
|
+
class PuppetEnvironment < HammerCLIForemanPuppet::Command
|
3
|
+
resource :environments
|
4
|
+
|
5
|
+
class ListCommand < HammerCLIForemanPuppet::ListCommand
|
6
|
+
include EnvironmentNameMapping
|
7
|
+
output do
|
8
|
+
field :id, _('Id')
|
9
|
+
field :name, _('Name')
|
10
|
+
end
|
11
|
+
|
12
|
+
build_options
|
13
|
+
end
|
14
|
+
|
15
|
+
class InfoCommand < HammerCLIForemanPuppet::InfoCommand
|
16
|
+
include EnvironmentNameMapping
|
17
|
+
output ListCommand.output_definition do
|
18
|
+
HammerCLIForemanPuppet::PuppetReferences.puppetclasses(self)
|
19
|
+
HammerCLIForeman::References.taxonomies(self)
|
20
|
+
HammerCLIForeman::References.timestamps(self)
|
21
|
+
end
|
22
|
+
|
23
|
+
build_options
|
24
|
+
end
|
25
|
+
|
26
|
+
class CreateCommand < HammerCLIForemanPuppet::CreateCommand
|
27
|
+
include EnvironmentNameMapping
|
28
|
+
success_message _("Environment created.")
|
29
|
+
failure_message _("Could not create the environment")
|
30
|
+
|
31
|
+
build_options
|
32
|
+
end
|
33
|
+
|
34
|
+
class UpdateCommand < HammerCLIForemanPuppet::UpdateCommand
|
35
|
+
include EnvironmentNameMapping
|
36
|
+
success_message _("Environment updated.")
|
37
|
+
failure_message _("Could not update the environment")
|
38
|
+
|
39
|
+
build_options
|
40
|
+
end
|
41
|
+
|
42
|
+
class DeleteCommand < HammerCLIForemanPuppet::DeleteCommand
|
43
|
+
include EnvironmentNameMapping
|
44
|
+
success_message _("Environment deleted.")
|
45
|
+
failure_message _("Could not delete the environment")
|
46
|
+
|
47
|
+
build_options
|
48
|
+
end
|
49
|
+
|
50
|
+
class SCParamsCommand < HammerCLIForemanPuppet::SmartClassParametersList
|
51
|
+
include EnvironmentNameMapping
|
52
|
+
build_options_for :environments
|
53
|
+
|
54
|
+
extend_with(HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new)
|
55
|
+
end
|
56
|
+
|
57
|
+
autoload_subcommands
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module HammerCLIForemanPuppet
|
2
|
+
module EnvironmentNameMapping
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def resource_name_mapping
|
9
|
+
mapping = Command.resource_name_mapping
|
10
|
+
mapping[:environment] = :puppet_environment
|
11
|
+
mapping[:environments] = :puppet_environments
|
12
|
+
mapping
|
13
|
+
end
|
14
|
+
|
15
|
+
def resource_alias_name_mapping
|
16
|
+
super.merge(HammerCLIForemanPuppet::RESOURCE_ALIAS_NAME_MAPPING.dup)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'hammer_cli_foreman/host'
|
2
|
+
require 'hammer_cli_foreman_puppet/class'
|
3
|
+
require 'hammer_cli_foreman_puppet/host'
|
4
|
+
require 'hammer_cli_foreman_puppet/command_extensions/host'
|
5
|
+
|
6
|
+
module HammerCLIForemanPuppet
|
7
|
+
class Host < HammerCLIForemanPuppet::Command
|
8
|
+
|
9
|
+
class PuppetClassesCommand < HammerCLIForemanPuppet::ListCommand
|
10
|
+
include EnvironmentNameMapping
|
11
|
+
command_name "puppet-classes"
|
12
|
+
resource :puppetclasses
|
13
|
+
|
14
|
+
output HammerCLIForemanPuppet::PuppetClass::ListCommand.output_definition
|
15
|
+
|
16
|
+
def send_request
|
17
|
+
HammerCLIForemanPuppet::PuppetClass::ListCommand.unhash_classes(super)
|
18
|
+
end
|
19
|
+
|
20
|
+
build_options do |o|
|
21
|
+
o.without(:hostgroup_id, :environment_id)
|
22
|
+
o.expand.only(:hosts)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class SCParamsCommand < HammerCLIForemanPuppet::SmartClassParametersList
|
27
|
+
build_options_for :hosts
|
28
|
+
command_name "sc-params"
|
29
|
+
|
30
|
+
def validate_options
|
31
|
+
super
|
32
|
+
validator.any(:option_host_name, :option_host_id).required
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class InfoCommand < HammerCLIForemanPuppet::InfoCommand
|
37
|
+
include EnvironmentNameMapping
|
38
|
+
output do
|
39
|
+
field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
|
40
|
+
field nil, _("Puppet CA Proxy"), Fields::SingleReference, :key => :puppet_ca_proxy
|
41
|
+
field nil, _("Puppet Master Proxy"), Fields::SingleReference, :key => :puppet_proxy
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
HammerCLIForeman::Host.subcommand 'puppet-classes',
|
47
|
+
HammerCLIForemanPuppet::Host::PuppetClassesCommand.desc,
|
48
|
+
HammerCLIForemanPuppet::Host::PuppetClassesCommand
|
49
|
+
|
50
|
+
HammerCLIForeman::Host.subcommand 'sc-params',
|
51
|
+
HammerCLIForemanPuppet::Host::SCParamsCommand.desc,
|
52
|
+
HammerCLIForemanPuppet::Host::SCParamsCommand
|
53
|
+
|
54
|
+
HammerCLIForeman::Host::ListCommand.extend_with(
|
55
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new
|
56
|
+
)
|
57
|
+
HammerCLIForeman::Host::CreateCommand.include(HammerCLIForemanPuppet::EnvironmentNameMapping)
|
58
|
+
HammerCLIForeman::Host::CreateCommand.extend_with(
|
59
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new,
|
60
|
+
HammerCLIForemanPuppet::CommandExtensions::HostPuppetProxy.new
|
61
|
+
)
|
62
|
+
HammerCLIForeman::Host::UpdateCommand.include(HammerCLIForemanPuppet::EnvironmentNameMapping)
|
63
|
+
HammerCLIForeman::Host::UpdateCommand.extend_with(
|
64
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new,
|
65
|
+
HammerCLIForemanPuppet::CommandExtensions::HostPuppetProxy.new
|
66
|
+
)
|
67
|
+
HammerCLIForeman::Host::InfoCommand.extend_with(
|
68
|
+
HammerCLIForemanPuppet::CommandExtensions::Host.new
|
69
|
+
)
|
70
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'hammer_cli_foreman/hostgroup'
|
2
|
+
require 'hammer_cli_foreman_puppet/references'
|
3
|
+
require 'hammer_cli_foreman_puppet/command_extensions/hostgroup.rb'
|
4
|
+
|
5
|
+
module HammerCLIForemanPuppet
|
6
|
+
class Hostgroup < HammerCLIForemanPuppet::Command
|
7
|
+
|
8
|
+
class PuppetClassesCommand < HammerCLIForemanPuppet::ListCommand
|
9
|
+
command_name "puppet-classes"
|
10
|
+
resource :puppetclasses
|
11
|
+
|
12
|
+
output HammerCLIForemanPuppet::PuppetClass::ListCommand.output_definition
|
13
|
+
|
14
|
+
def send_request
|
15
|
+
HammerCLIForemanPuppet::PuppetClass::ListCommand.unhash_classes(super)
|
16
|
+
end
|
17
|
+
|
18
|
+
build_options do |o|
|
19
|
+
o.without(:host_id, :environment_id)
|
20
|
+
o.expand.only(:hostgroups)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class PuppetSCParamsCommand < HammerCLIForemanPuppet::SmartClassParametersList
|
25
|
+
build_options_for :hostgroups
|
26
|
+
command_name "sc-params"
|
27
|
+
|
28
|
+
def validate_options
|
29
|
+
super
|
30
|
+
validator.any(:option_hostgroup_name, :option_hostgroup_id).required
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class ListCommand < HammerCLIForemanPuppet::InfoCommand
|
35
|
+
output do
|
36
|
+
field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class InfoCommand < HammerCLIForemanPuppet::InfoCommand
|
41
|
+
output do
|
42
|
+
field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
|
43
|
+
field nil, _("Puppet CA Proxy"), Fields::SingleReference, :key => :puppet_ca_proxy
|
44
|
+
field nil, _("Puppet Master Proxy"), Fields::SingleReference, :key => :puppet_proxy
|
45
|
+
HammerCLIForemanPuppet::References.puppetclasses(self)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
HammerCLIForeman::Hostgroup.subcommand 'puppet-classes',
|
51
|
+
HammerCLIForemanPuppet::Hostgroup::PuppetClassesCommand.desc,
|
52
|
+
HammerCLIForemanPuppet::Hostgroup::PuppetClassesCommand
|
53
|
+
|
54
|
+
HammerCLIForeman::Hostgroup.subcommand 'sc-params',
|
55
|
+
HammerCLIForemanPuppet::Hostgroup::PuppetSCParamsCommand.desc,
|
56
|
+
HammerCLIForemanPuppet::Hostgroup::PuppetSCParamsCommand
|
57
|
+
|
58
|
+
HammerCLIForeman::Hostgroup::CreateCommand.include(HammerCLIForemanPuppet::EnvironmentNameMapping)
|
59
|
+
HammerCLIForeman::Hostgroup::CreateCommand.extend_with(
|
60
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new,
|
61
|
+
HammerCLIForemanPuppet::CommandExtensions::HostgroupPuppetProxy.new
|
62
|
+
)
|
63
|
+
HammerCLIForeman::Hostgroup::UpdateCommand.include(HammerCLIForemanPuppet::EnvironmentNameMapping)
|
64
|
+
HammerCLIForeman::Hostgroup::UpdateCommand.extend_with(
|
65
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironment.new,
|
66
|
+
HammerCLIForemanPuppet::CommandExtensions::HostgroupPuppetProxy.new
|
67
|
+
)
|
68
|
+
HammerCLIForeman::Hostgroup::InfoCommand.extend_with(
|
69
|
+
HammerCLIForemanPuppet::CommandExtensions::HostgroupInfo.new
|
70
|
+
)
|
71
|
+
HammerCLIForeman::Hostgroup::ListCommand.extend_with(
|
72
|
+
HammerCLIForemanPuppet::CommandExtensions::HostgroupList.new
|
73
|
+
)
|
74
|
+
#TODO - adding puppet class options
|
75
|
+
#TODO - resolver
|
76
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module HammerCLIForemanPuppet
|
2
|
+
module PuppetIdResolver
|
3
|
+
# puppet class search results are in non-standard format
|
4
|
+
# and needs to be un-hashed first
|
5
|
+
def puppetclass_id(options)
|
6
|
+
return options[HammerCLI.option_accessor_name('id')] if options[HammerCLI.option_accessor_name('id')]
|
7
|
+
|
8
|
+
resource = @api.resource(:puppetclasses)
|
9
|
+
results = find_resource_raw(:puppetclasses, options)
|
10
|
+
require('hammer_cli_foreman_puppet/class')
|
11
|
+
results = HammerCLIForemanPuppet::PuppetClass::ListCommand.unhash_classes(results)
|
12
|
+
pick_result(results, resource)['id']
|
13
|
+
end
|
14
|
+
|
15
|
+
def puppetclass_ids(options)
|
16
|
+
resource_name = :puppetclasses
|
17
|
+
resource = @api.resource(resource_name)
|
18
|
+
results = if (ids = options[HammerCLI.option_accessor_name("ids")])
|
19
|
+
ids
|
20
|
+
elsif (ids = nil_from_searchables(resource_name, options, :plural => true))
|
21
|
+
ids
|
22
|
+
elsif options_not_set?(resource, options)
|
23
|
+
raise HammerCLIForeman::MissingSearchOptions.new(_("Missing options to search %s") % resource.name, resource)
|
24
|
+
elsif options_empty?(resource, options)
|
25
|
+
[]
|
26
|
+
else
|
27
|
+
require('hammer_cli_foreman_puppet/class')
|
28
|
+
results = HammerCLIForemanPuppet::PuppetClass::ListCommand.unhash_classes(
|
29
|
+
resolved_call(resource_name, :index, options, :multi)
|
30
|
+
)
|
31
|
+
raise HammerCLIForeman::ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource, :multi)
|
32
|
+
results.map { |r| r['id'] }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def puppet_environment_id(options)
|
37
|
+
get_id(:environments, options)
|
38
|
+
end
|
39
|
+
|
40
|
+
def puppet_environment_ids(options)
|
41
|
+
get_ids(:environments, options)
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_smart_class_parameters_search_options(options, _mode = nil)
|
45
|
+
search_options = {}
|
46
|
+
value = options[HammerCLI.option_accessor_name('name')]
|
47
|
+
search_options[:search] = "key = \"#{value}\""
|
48
|
+
search_options[:puppetclass_id] = puppetclass_id(scoped_options('puppetclass', options))
|
49
|
+
search_options
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class Searchables < HammerCLIForeman::Searchables
|
54
|
+
SEARCHABLES = {
|
55
|
+
:environment => [s_name(_('Puppet environment name'))],
|
56
|
+
:puppet_environment => [s_name(_('Puppet environment name'))],
|
57
|
+
:puppetclass => [ s_name(_("Puppet class name")) ],
|
58
|
+
:smart_class_parameter => [ s_name(_("Smart class parameter name"), :editable => false) ],
|
59
|
+
}.freeze
|
60
|
+
|
61
|
+
DEFAULT_SEARCHABLES = [s_name(_("Name to search by"))].freeze
|
62
|
+
|
63
|
+
def for(resource)
|
64
|
+
SEARCHABLES[resource.singular_name.to_sym] || super(resource)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class IdResolver < HammerCLIForeman::IdResolver
|
69
|
+
end
|
70
|
+
# Temp workaround for resolvers in case of multiple plugins
|
71
|
+
# extensions of the same command
|
72
|
+
HammerCLIForeman::IdResolver.include HammerCLIForemanPuppet::PuppetIdResolver
|
73
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'hammer_cli_foreman/location'
|
2
|
+
require 'hammer_cli_foreman_puppet/references'
|
3
|
+
require 'hammer_cli_foreman_puppet/command_extensions/location'
|
4
|
+
|
5
|
+
module HammerCLIForemanPuppet
|
6
|
+
module LocationAddAssociatedCommand
|
7
|
+
def self.included(base)
|
8
|
+
HammerCLIForemanPuppet::AssociatingCommands::PuppetEnvironment.extend_command(base)
|
9
|
+
base.create_subcommand
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Location < HammerCLIForemanPuppet::Command
|
14
|
+
class InfoCommand < HammerCLIForemanPuppet::InfoCommand
|
15
|
+
output do
|
16
|
+
HammerCLIForemanPuppet::References.environments(self)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
HammerCLIForeman::Location::CreateCommand.extend_with(
|
22
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironments.new
|
23
|
+
)
|
24
|
+
HammerCLIForeman::Location::UpdateCommand.extend_with(
|
25
|
+
HammerCLIForemanPuppet::CommandExtensions::PuppetEnvironments.new
|
26
|
+
)
|
27
|
+
HammerCLIForeman::Location::InfoCommand.extend_with(
|
28
|
+
HammerCLIForemanPuppet::CommandExtensions::LocationInfo.new
|
29
|
+
)
|
30
|
+
|
31
|
+
HammerCLIForeman::Location.class_eval do
|
32
|
+
extend HammerCLIForemanPuppet::AssociatingCommands::ExtendCommands
|
33
|
+
include HammerCLIForemanPuppet::LocationAddAssociatedCommand
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'hammer_cli_foreman_puppet/option_sources/puppet_environment_params'
|
@@ -0,0 +1,60 @@
|
|
1
|
+
|
2
|
+
module HammerCLIForemanPuppet
|
3
|
+
module OptionSources
|
4
|
+
class PuppetEnvironmentParams < HammerCLI::Options::Sources::Base
|
5
|
+
def initialize(command)
|
6
|
+
@command = command
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_options(_defined_options, result)
|
10
|
+
if result['option_environment_id'].nil? &&
|
11
|
+
(@command.respond_to?(:option_environment_id) ||
|
12
|
+
@command.respond_to?(:option_environment_name))
|
13
|
+
put_puppet_environment_id(result)
|
14
|
+
end
|
15
|
+
if result['option_environment_ids'].nil? &&
|
16
|
+
(@command.respond_to?(:option_environment_ids) ||
|
17
|
+
@command.respond_to?(:option_environment_names))
|
18
|
+
put_puppet_environment_ids(result)
|
19
|
+
end
|
20
|
+
result
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def put_puppet_environment_id(result)
|
26
|
+
if result['option_environment_name'].nil?
|
27
|
+
if @command.option_environment_id
|
28
|
+
result['option_environment_id'] = @command.option_environment_id
|
29
|
+
elsif @command.option_environment_name
|
30
|
+
result['option_environment_name'] = @command.option_environment_name
|
31
|
+
result['option_environment_id'] = @command.resolver.puppet_environment_id(
|
32
|
+
@command.resolver.scoped_options('environment', result, :single)
|
33
|
+
)
|
34
|
+
end
|
35
|
+
else
|
36
|
+
result['option_environment_id'] = @command.resolver.puppet_environment_id(
|
37
|
+
@command.resolver.scoped_options('environment', result, :single)
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def put_puppet_environment_ids(result)
|
43
|
+
if result['option_environment_names'].nil?
|
44
|
+
if @command.option_environment_ids
|
45
|
+
result['option_environment_ids'] = @command.option_environment_ids
|
46
|
+
elsif @command.option_environment_names
|
47
|
+
result['option_environment_names'] = @command.option_environment_names
|
48
|
+
result['option_environment_ids'] = @command.resolver.puppet_environment_ids(
|
49
|
+
@command.resolver.scoped_options('environment', result, :multi)
|
50
|
+
)
|
51
|
+
end
|
52
|
+
else
|
53
|
+
result['option_environment_ids'] = @command.resolver.puppet_environment_ids(
|
54
|
+
@command.resolver.scoped_options('environment', result, :multi)
|
55
|
+
)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|