hammer_cli_foreman 2.0.0 → 2.1.2

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/doc/developer_docs.md +1 -0
  3. data/doc/plugin.md +22 -0
  4. data/doc/release_notes.md +33 -0
  5. data/lib/hammer_cli_foreman.rb +9 -1
  6. data/lib/hammer_cli_foreman/api/connection.rb +1 -18
  7. data/lib/hammer_cli_foreman/api/oauth/authentication_code_grant.rb +7 -4
  8. data/lib/hammer_cli_foreman/api/session_authenticator_wrapper.rb +0 -1
  9. data/lib/hammer_cli_foreman/associating_commands.rb +33 -5
  10. data/lib/hammer_cli_foreman/audit.rb +7 -0
  11. data/lib/hammer_cli_foreman/auth.rb +6 -6
  12. data/lib/hammer_cli_foreman/bookmark.rb +50 -0
  13. data/lib/hammer_cli_foreman/command_extensions.rb +2 -0
  14. data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +13 -7
  15. data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +13 -7
  16. data/lib/hammer_cli_foreman/command_extensions/subnet.rb +25 -0
  17. data/lib/hammer_cli_foreman/command_extensions/user.rb +17 -0
  18. data/lib/hammer_cli_foreman/commands.rb +20 -11
  19. data/lib/hammer_cli_foreman/compute_resource.rb +15 -0
  20. data/lib/hammer_cli_foreman/compute_resource/ec2.rb +11 -0
  21. data/lib/hammer_cli_foreman/compute_resource/gce.rb +9 -0
  22. data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +11 -0
  23. data/lib/hammer_cli_foreman/compute_resource/openstack.rb +7 -0
  24. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +21 -9
  25. data/lib/hammer_cli_foreman/compute_resource/vmware.rb +15 -2
  26. data/lib/hammer_cli_foreman/hostgroup.rb +11 -19
  27. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +32 -10
  28. data/lib/hammer_cli_foreman/id_resolver.rb +12 -11
  29. data/lib/hammer_cli_foreman/mail_notification.rb +31 -0
  30. data/lib/hammer_cli_foreman/operating_system.rb +1 -1
  31. data/lib/hammer_cli_foreman/option_builders.rb +70 -48
  32. data/lib/hammer_cli_foreman/option_sources.rb +1 -0
  33. data/lib/hammer_cli_foreman/option_sources/referenced_resource_id_params.rb +47 -0
  34. data/lib/hammer_cli_foreman/sessions.rb +1 -3
  35. data/lib/hammer_cli_foreman/subnet.rb +26 -15
  36. data/lib/hammer_cli_foreman/task_helper.rb +180 -0
  37. data/lib/hammer_cli_foreman/user.rb +7 -17
  38. data/lib/hammer_cli_foreman/user_mail_notification.rb +51 -0
  39. data/lib/hammer_cli_foreman/version.rb +1 -1
  40. data/lib/hammer_cli_foreman/virtual_machine.rb +55 -0
  41. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  42. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  43. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  44. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  45. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  47. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  48. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  49. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  50. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  51. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  52. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  53. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  54. data/test/data/2.1/foreman_api.json +1 -0
  55. data/test/functional/associating_commands_test.rb +134 -30
  56. data/test/functional/bookmark_test.rb +193 -0
  57. data/test/functional/host_test.rb +27 -1
  58. data/test/functional/http_proxy_test.rb +1 -4
  59. data/test/functional/mail_notification_test.rb +57 -0
  60. data/test/functional/subnet/create_test.rb +28 -5
  61. data/test/functional/template_test.rb +2 -2
  62. data/test/functional/user_mail_notification_test.rb +89 -0
  63. data/test/functional/virtual_machine_test.rb +129 -0
  64. data/test/reports/TEST-Minitest-Result.xml +4344 -0
  65. data/test/test_helper.rb +1 -1
  66. data/test/unit/audit_test.rb +1 -0
  67. data/test/unit/sessions_test.rb +2 -13
  68. metadata +28 -6
@@ -275,8 +275,8 @@ module HammerCLIForeman
275
275
  record
276
276
  end
277
277
 
278
- def self.command_name(name=nil)
279
- super(name) || "list"
278
+ def self.command_names(*names)
279
+ super(*names) || %w(list index)
280
280
  end
281
281
 
282
282
  def execute
@@ -502,8 +502,8 @@ module HammerCLIForeman
502
502
  end
503
503
  end
504
504
 
505
- def self.command_name(name=nil)
506
- super(name) || "info"
505
+ def self.command_names(*names)
506
+ super(*names) || %w(info show)
507
507
  end
508
508
 
509
509
  def send_request
@@ -565,8 +565,8 @@ module HammerCLIForeman
565
565
 
566
566
  action :destroy
567
567
 
568
- def self.command_name(name=nil)
569
- super(name) || "delete"
568
+ def self.command_names(*names)
569
+ super(*names) || %w(delete destroy)
570
570
  end
571
571
 
572
572
  end
@@ -671,8 +671,12 @@ module HammerCLIForeman
671
671
 
672
672
  def get_new_ids
673
673
  ids = get_current_ids.map(&:to_s)
674
- required_ids = get_associated_identifiers.nil? ? [] : get_associated_identifiers.map(&:to_s)
675
- required_ids << get_associated_identifier.to_s unless get_associated_identifier.nil?
674
+
675
+ associated_identifiers = get_associated_identifiers
676
+ associated_identifier = get_associated_identifier
677
+
678
+ required_ids = associated_identifiers.nil? ? [] : associated_identifiers.map(&:to_s)
679
+ required_ids << associated_identifier.to_s unless associated_identifier.nil?
676
680
 
677
681
  ids += required_ids
678
682
  ids.uniq
@@ -683,7 +687,7 @@ module HammerCLIForeman
683
687
  class RemoveAssociatedCommand < AssociatedCommand
684
688
 
685
689
  def self.command_name(name=nil)
686
- name = super(name) || (associated_resource ? "remove-"+associated_resource.singular_name : nil)
690
+ name = super(name) || (associated_resource ? "remove-" + associated_resource.singular_name : nil)
687
691
  name.respond_to?(:gsub) ? name.gsub('_', '-') : name
688
692
  end
689
693
 
@@ -694,9 +698,14 @@ module HammerCLIForeman
694
698
 
695
699
  def get_new_ids
696
700
  ids = get_current_ids.map(&:to_s)
697
- required_id = get_associated_identifier.to_s
698
701
 
699
- ids = ids.delete_if { |id| id == required_id }
702
+ associated_identifiers = get_associated_identifiers
703
+ associated_identifier = get_associated_identifier
704
+
705
+ required_ids = associated_identifiers.nil? ? [] : associated_identifiers.map(&:to_s)
706
+ required_ids << associated_identifier.to_s unless associated_identifier.nil?
707
+
708
+ ids = ids.delete_if { |id| required_ids.include? id }
700
709
  ids
701
710
  end
702
711
 
@@ -1,4 +1,5 @@
1
1
  require 'hammer_cli_foreman/image'
2
+ require 'hammer_cli_foreman/virtual_machine'
2
3
  require 'hammer_cli_foreman/compute_resource/register_compute_resources'
3
4
 
4
5
  module HammerCLIForeman
@@ -223,7 +224,21 @@ module HammerCLIForeman
223
224
  build_options
224
225
  end
225
226
 
227
+ class AvailableVirtualMachinesCommand < HammerCLIForeman::ListCommand
228
+ action :available_virtual_machines
229
+ command_name 'virtual-machines'
230
+
231
+ output do
232
+ field :id, _("Id")
233
+ field :name, _("Name")
234
+ end
235
+
236
+ build_options
237
+ end
238
+
226
239
  autoload_subcommands
240
+ subcommand 'virtual-machine', HammerCLIForeman::VirtualMachine.desc,
241
+ HammerCLIForeman::VirtualMachine
227
242
  subcommand 'image', HammerCLIForeman::Image.desc, HammerCLIForeman::Image
228
243
  end
229
244
 
@@ -15,6 +15,17 @@ module HammerCLIForeman
15
15
  ]
16
16
  end
17
17
 
18
+ def provider_vm_specific_fields
19
+ [
20
+ Fields::Field.new(:label => _('DNS'), :path => [:dns_name]),
21
+ Fields::Field.new(:label => _('Type'), :path => [:flavor_id]),
22
+ Fields::Field.new(:label => _('State'), :path => [:state]),
23
+ Fields::Field.new(:label => _('Owner Id'), :path => [:ownerId]),
24
+ Fields::Field.new(:label => _('DNS Name'), :path => [:dns_name]),
25
+ Fields::Field.new(:label => _('Virtualization Type'), :path => [:virtualization_type])
26
+ ]
27
+ end
28
+
18
29
  def mandatory_resource_options
19
30
  super + %i[region user password]
20
31
  end
@@ -28,6 +28,15 @@ module HammerCLIForeman
28
28
  ]
29
29
  end
30
30
 
31
+ def provider_vm_specific_fields
32
+ [
33
+ Fields::Field.new(:label => _('Machine Type'), :path => [:machine_type]),
34
+ Fields::Field.new(:label => _('Status'), :path => [:status]),
35
+ Fields::Field.new(:label => _('Description'), :path => [:description]),
36
+ Fields::Field.new(:label => _('Zone'), :path => [:zone])
37
+ ]
38
+ end
39
+
31
40
  def mandatory_resource_options
32
41
  super + %I{project key_path zone}
33
42
  end
@@ -41,6 +41,17 @@ module HammerCLIForeman
41
41
  'nics_attributes'
42
42
  end
43
43
 
44
+ def provider_vm_specific_fields
45
+ [
46
+ Fields::Field.new(:label => _('CPUs'), :path => [:cpus]),
47
+ Fields::Field.new(:label => _('Memory'), :path => [:memory_size]),
48
+ Fields::Field.new(:label => _('Status'), :path => [:state]),
49
+ Fields::Field.new(:label => _('OS Type'), :path => [:os_type]),
50
+ Fields::Field.new(:label => _('Domain Type'), :path => [:domain_type]),
51
+ Fields::Field.new(:label => _('Persistent'), :path => [:persistent])
52
+ ]
53
+ end
54
+
44
55
  def mandatory_resource_options
45
56
  super + %i[url]
46
57
  end
@@ -20,6 +20,13 @@ module HammerCLIForeman
20
20
  def mandatory_resource_options
21
21
  super + %i[url user password]
22
22
  end
23
+
24
+ def provider_vm_specific_fields
25
+ [
26
+ Fields::Field.new(:label => _('State'), :path => [:state]),
27
+ Fields::Field.new(:label => _('Tenant Id'), :path => [:tenant_id])
28
+ ]
29
+ end
23
30
  end
24
31
 
25
32
  HammerCLIForeman.register_compute_resource('openstack', OpenStack.new)
@@ -7,17 +7,19 @@ module HammerCLIForeman
7
7
 
8
8
  def compute_attributes
9
9
  [
10
- ['cluster', _('ID or name of cluster to use')],
11
- ['template', _('Hardware profile to use')],
12
- ['cores', _('Integer value, number of cores')],
13
- ['sockets', _('Integer value, number of sockets')],
14
- ['memory', _('Amount of memory, integer value in bytes')]
10
+ ['cluster', _('ID or name of cluster to use')],
11
+ ['template', _('Hardware profile to use')],
12
+ ['cores', _('Integer value, number of cores')],
13
+ ['sockets', _('Integer value, number of sockets')],
14
+ ['memory', _('Amount of memory, integer value in bytes')],
15
+ ['display_type', _('Possible values: %s') % 'VNC, SPICE'],
16
+ ['keyboard_layout', _('Possible values: %s. Not usable if display type is SPICE.') % 'ar, de-ch, es, fo, fr-ca, hu, ja, mk, no, pt-br, sv, da, en-gb, et, fr, fr-ch, is, lt, nl, pl, ru, th, de, en-us, fi, fr-be, hr, it, lv, nl-be, pt, sl, tr']
15
17
  ]
16
18
  end
17
19
 
18
20
  def host_attributes
19
21
  [
20
- ['start', _('Boolean (expressed as 0 or 1), whether to start the machine or not')]
22
+ ['start', _('Boolean, set 1 to start the vm')]
21
23
  ]
22
24
  end
23
25
 
@@ -33,9 +35,9 @@ module HammerCLIForeman
33
35
  [
34
36
  ['size_gb', _('Volume size in GB, integer value')],
35
37
  ['storage_domain', _('ID or name of storage domain')],
36
- ['bootable', _('Boolean, only one volume can be bootable')],
37
- ['preallocate', _('Boolean, set %s to preallocate') % 'true'],
38
- ['wipe_after_delete', _('Boolean, set %s to wipe disk after delete') % 'true'],
38
+ ['bootable', _('Boolean, set 1 for bootable, only one volume can be bootable')],
39
+ ['preallocate', _('Boolean, set 1 to preallocate')],
40
+ ['wipe_after_delete', _('Boolean, set 1 to wipe disk after delete')],
39
41
  ['interface', _('Disk interface name, must be ide, virto or virto_scsi')]
40
42
  ]
41
43
  end
@@ -46,6 +48,16 @@ module HammerCLIForeman
46
48
  ]
47
49
  end
48
50
 
51
+ def provider_vm_specific_fields
52
+ [
53
+ Fields::Field.new(:label => _('CPUs'), :path => [:cpu]),
54
+ Fields::Field.new(:label => _('Memory'), :path => [:memory]),
55
+ Fields::Field.new(:label => _('Status'), :path => [:status]),
56
+ Fields::Field.new(:label => _('Cores'), :path => [:cores]),
57
+ Fields::Field.new(:label => _('Type'), :path => [:type])
58
+ ]
59
+ end
60
+
49
61
  def mandatory_resource_options
50
62
  super + %i[url user password datacenter]
51
63
  end
@@ -18,8 +18,8 @@ module HammerCLIForeman
18
18
  ['firmware', 'automatic/bios/efi'],
19
19
  ['guest_id', _('Guest OS ID form VMware')],
20
20
  ['hardware_version', _('Hardware version ID from VMware')],
21
- ['memoryHotAddEnabled', _('Must be a 1 or 0, lets you add CPU resources while the machine is on')],
22
- ['cpuHotAddEnabled', _('Must be a 1 or 0, lets you add memory resources while the machine is on')],
21
+ ['memoryHotAddEnabled', _('Must be a 1 or 0, lets you add memory resources while the machine is on')],
22
+ ['cpuHotAddEnabled', _('Must be a 1 or 0, lets you add CPU resources while the machine is on')],
23
23
  ['add_cdrom', _('Must be a 1 or 0, Add a CD-ROM drive to the virtual machine')],
24
24
  ['annotation', _('Annotation Notes')],
25
25
  ['scsi_controllers', [_('List with SCSI controllers definitions'),
@@ -67,6 +67,19 @@ module HammerCLIForeman
67
67
  ]
68
68
  end
69
69
 
70
+ def provider_vm_specific_fields
71
+ [
72
+ Fields::Field.new(:label => _('CPUs'), :path => [:cpus]),
73
+ Fields::Field.new(:label => _('Memory'), :path => [:memory_mb]),
74
+ Fields::Field.new(:label => _('Power Status'), :path => [:power_state]),
75
+ Fields::Field.new(:label => _('Host Name'), :path => [:hostname]),
76
+ Fields::Field.new(:label => _('Connection Status'), :path => [:connection_status]),
77
+ Fields::Field.new(:label => _('Hardware Version'), :path => [:hardware_version]),
78
+ Fields::Field.new(:label => _('Path'), :path => [:path]),
79
+ Fields::Field.new(:label => _('Operating System'), :path => [:operatingsystem])
80
+ ]
81
+ end
82
+
70
83
  def mandatory_resource_options
71
84
  super + %i[user password datacenter server]
72
85
  end
@@ -15,10 +15,14 @@ module HammerCLIForeman
15
15
  base.option "--puppet-ca-proxy", "PUPPET_CA_PROXY_NAME", _("Name of puppet CA proxy")
16
16
  base.option "--puppet-proxy", "PUPPET_PROXY_NAME", _("Name of puppet proxy")
17
17
  base.option "--parent", "PARENT_NAME", _("Name of parent hostgroup")
18
- base.option "--root-pass", "ROOT_PASSWORD", _("Root password")
19
- base.option "--ask-root-pass", "ASK_ROOT_PW", "",
20
- :format => HammerCLI::Options::Normalizers::Bool.new
18
+ base.option ["--root-password", "--root-pass"], "ROOT_PASSWORD", _("Root password"),
19
+ deprecated: { '--root-pass' => _("Use --root-password instead") }
20
+ base.option ["--ask-root-password", "--ask-root-pass"], "ASK_ROOT_PW", "",
21
+ format: HammerCLI::Options::Normalizers::Bool.new,
22
+ deprecated: { '--ask-root-pass' => _("Use --ask-root-password instead") }
21
23
  base.option "--subnet6", "SUBNET6_NAME", _("Subnet IPv6 name")
24
+
25
+ base.build_options without: %i[root_pass]
22
26
  end
23
27
 
24
28
  def self.ask_password
@@ -32,12 +36,8 @@ module HammerCLIForeman
32
36
  params['hostgroup']["puppet_proxy_id"] ||= proxy_id(option_puppet_proxy) if option_puppet_proxy
33
37
  params['hostgroup']["puppet_ca_proxy_id"] ||= proxy_id(option_puppet_ca_proxy) if option_puppet_ca_proxy
34
38
 
35
- # Remove after API docs are fixed: https://projects.theforeman.org/issues/28923
36
- puppetclass_ids = option_puppetclass_ids || puppet_class_ids(option_puppetclass_names)
37
- params['hostgroup']['puppetclass_ids'] = puppetclass_ids unless puppetclass_ids.nil?
38
-
39
- params['hostgroup']['root_pass'] = option_root_pass if option_root_pass
40
- params['hostgroup']['root_pass'] = HammerCLIForeman::HostgroupUpdateCreateCommons::ask_password if option_ask_root_pass
39
+ params['hostgroup']['root_pass'] = option_root_password if option_root_password
40
+ params['hostgroup']['root_pass'] = HammerCLIForeman::HostgroupUpdateCreateCommons::ask_password if option_ask_root_password
41
41
 
42
42
  params['hostgroup']['subnet6_id'] = resolver.subnet_id('option_name' => option_subnet6) if option_subnet6
43
43
  params
@@ -48,11 +48,6 @@ module HammerCLIForeman
48
48
  def proxy_id(name)
49
49
  resolver.smart_proxy_id('option_name' => name) if name
50
50
  end
51
-
52
- def puppet_class_ids(names)
53
- resolver.puppetclass_ids('option_names' => names) if names
54
- end
55
-
56
51
  end
57
52
 
58
53
  class Hostgroup < HammerCLIForeman::Command
@@ -87,7 +82,8 @@ module HammerCLIForeman
87
82
  field nil, _("Parent"), Fields::SingleReference, :key => :parent, :hide_blank => true
88
83
  field nil, _("Puppet CA Proxy"), Fields::SingleReference, :key => :puppet_ca_proxy
89
84
  field nil, _("Puppet Master Proxy"), Fields::SingleReference, :key => :puppet_proxy
90
- field nil, _("ComputeProfile"), Fields::SingleReference, :key => :compute_profile
85
+ field nil, _("Compute Profile"), Fields::SingleReference, :key => :compute_profile
86
+ field nil, _("Compute Resource"), Fields::SingleReference, :key => :compute_resource
91
87
  label _('Network') do
92
88
  field nil, _("Subnet ipv4"), Fields::SingleReference, :key => :subnet
93
89
  field nil, _("Subnet ipv6"), Fields::SingleReference, :key => :subnet6
@@ -116,8 +112,6 @@ module HammerCLIForeman
116
112
  success_message _("Hostgroup created.")
117
113
  failure_message _("Could not create the hostgroup")
118
114
 
119
- build_options
120
-
121
115
  extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
122
116
  end
123
117
 
@@ -128,8 +122,6 @@ module HammerCLIForeman
128
122
  success_message _("Hostgroup updated.")
129
123
  failure_message _("Could not update the hostgroup")
130
124
 
131
- build_options
132
-
133
125
  extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
134
126
  end
135
127
 
@@ -14,15 +14,22 @@ module HammerCLIForeman
14
14
  base.option "--ask-root-password", "ASK_ROOT_PW", " ",
15
15
  :format => HammerCLI::Options::Normalizers::Bool.new
16
16
 
17
- base.option "--puppet-proxy", "PUPPET_PROXY_NAME", ""
18
- base.option "--puppet-ca-proxy", "PUPPET_CA_PROXY_NAME", ""
19
- base.option "--puppet-class-ids", "PUPPET_CLASS_IDS", "",
20
- :format => HammerCLI::Options::Normalizers::List.new,
21
- :attribute_name => :option_puppetclass_ids
22
- base.option "--puppet-classes", "PUPPET_CLASS_NAMES", "",
23
- :format => HammerCLI::Options::Normalizers::List.new,
24
- :attribute_name => :option_puppetclass_names
25
-
17
+ base.option '--puppet-proxy', 'PUPPET_PROXY_NAME', '',
18
+ referenced_resource: 'puppet_proxy',
19
+ aliased_resource: 'puppet_proxy'
20
+ base.option '--puppet-ca-proxy', 'PUPPET_CA_PROXY_NAME', '',
21
+ referenced_resource: 'puppet_ca_proxy',
22
+ aliased_resource: 'puppet_ca_proxy'
23
+ base.option_family(
24
+ format: HammerCLI::Options::Normalizers::List.new,
25
+ aliased_resource: 'puppet-class',
26
+ description: 'Names/Ids of associated puppet classes'
27
+ ) do
28
+ parent '--puppet-class-ids', 'PUPPET_CLASS_IDS', '',
29
+ attribute_name: :option_puppetclass_ids
30
+ child '--puppet-classes', 'PUPPET_CLASS_NAMES', '',
31
+ attribute_name: :option_puppetclass_names
32
+ end
26
33
  bme_options = {}
27
34
  bme_options[:default] = 'true' if base.action.to_sym == :create
28
35
 
@@ -59,7 +66,7 @@ module HammerCLIForeman
59
66
 
60
67
  def request_params
61
68
  params = super
62
- owner_id = get_resource_id(HammerCLIForeman.foreman_resource(:users), :required => false, :scoped => true)
69
+ owner_id = owner_id(option_user_login, params['host']['owner_type'])
63
70
  params['host']['owner_id'] ||= owner_id unless owner_id.nil?
64
71
 
65
72
  puppet_proxy_id = proxy_id(option_puppet_proxy)
@@ -79,6 +86,14 @@ module HammerCLIForeman
79
86
  params['host']['host_parameters_attributes'] ||= option_typed_parameters unless option_typed_parameters.nil?
80
87
  params['host']['compute_attributes'] = option_compute_attributes || {}
81
88
 
89
+ compute_attributes = params['host']['compute_attributes']
90
+ compute_attributes['display'] = {} unless compute_attributes['display_type'].nil? && compute_attributes['keyboard_layout'].nil?
91
+ compute_attributes['display']['type'] = compute_attributes['display_type'] unless compute_attributes['display_type'].nil?
92
+ compute_attributes['display']['keyboard_layout'] = compute_attributes['keyboard_layout'] unless compute_attributes['keyboard_layout'].nil?
93
+ compute_attributes.delete('display_type')
94
+ compute_attributes.delete('keyboard_layout')
95
+ params['host']['compute_attributes'] = compute_attributes
96
+
82
97
  if action == :update
83
98
  params['host']['compute_attributes']['volumes_attributes'] = nested_attributes(option_volume_list) unless option_volume_list.empty?
84
99
  params['host']['interfaces_attributes'] = interfaces_attributes unless option_interface_list.empty?
@@ -119,6 +134,13 @@ module HammerCLIForeman
119
134
 
120
135
  private
121
136
 
137
+ def owner_id(name, type = 'User')
138
+ return unless name
139
+ return resolver.user_id('option_login' => name) if type == 'User'
140
+
141
+ resolver.usergroup_id('option_name' => name)
142
+ end
143
+
122
144
  def proxy_id(name)
123
145
  resolver.smart_proxy_id('option_name' => name) if name
124
146
  end
@@ -1,16 +1,16 @@
1
1
  module HammerCLIForeman
2
2
 
3
3
  class Searchable
4
+ attr_reader :name, :description, :format
4
5
 
5
6
  def initialize(name, description, options={})
6
7
  @name = name
7
8
  @description = description
8
9
  @editable = options[:editable].nil? ? true : options[:editable]
9
10
  @format = options[:format]
11
+ @parent = options[:parent]
10
12
  end
11
13
 
12
- attr_reader :name, :description
13
-
14
14
  def plural_name
15
15
  ApipieBindings::Inflector.pluralize(@name)
16
16
  end
@@ -19,10 +19,9 @@ module HammerCLIForeman
19
19
  @editable
20
20
  end
21
21
 
22
- def format
23
- @format
22
+ def parent?
23
+ @parent
24
24
  end
25
-
26
25
  end
27
26
 
28
27
  class Searchables
@@ -51,15 +50,17 @@ module HammerCLIForeman
51
50
  :hostgroup => [ s_name(_("Hostgroup name")), s("title", _("Hostgroup title"), :editable => false) ],
52
51
  # :image => [],
53
52
  :interface => [],
54
- :location => [ s("name", _("Location Name, Set the current location context for the request")),
55
- s("title", _("Location title, Set the current location context for the request" ),:editable => false),
56
- s("id", _("Set the current location context for the request"), :editable => false, :format => HammerCLI::Options::Normalizers::Number.new),
53
+ :location => [ s('name', _('Set the current location context for the request')),
54
+ s('title', _('Set the current location context for the request' ),
55
+ editable: false
56
+ )
57
57
  ],
58
58
  :medium => [ s_name(_("Medium name")) ],
59
59
  :model => [ s_name(_("Model name")) ],
60
- :organization => [ s("name", _("Set the current organization context for the request")),
61
- s("title", _("Set the current organization context for the request"),:editable => false),
62
- s("id", _("Set the current organization context for the request"), :editable => false, :format => HammerCLI::Options::Normalizers::Number.new),
60
+ :organization => [ s('name', _('Set the current organization context for the request')),
61
+ s('title', _('Set the current organization context for the request'),
62
+ editable: false
63
+ )
63
64
  ],
64
65
  :operatingsystem => [ s("title", _("Operating system title"), :editable => false) ],
65
66
  :override_value => [],