hammer_cli_foreman 2.4.0 → 3.1.0

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes.md +40 -0
  3. data/lib/hammer_cli_foreman/architecture.rb +5 -5
  4. data/lib/hammer_cli_foreman/associating_commands.rb +0 -24
  5. data/lib/hammer_cli_foreman/bookmark.rb +5 -5
  6. data/lib/hammer_cli_foreman/combination.rb +3 -13
  7. data/lib/hammer_cli_foreman/command_extensions/ping.rb +21 -2
  8. data/lib/hammer_cli_foreman/command_extensions/subnet.rb +25 -10
  9. data/lib/hammer_cli_foreman/command_extensions/update_common.rb +14 -0
  10. data/lib/hammer_cli_foreman/command_extensions/user.rb +9 -5
  11. data/lib/hammer_cli_foreman/command_extensions.rb +1 -2
  12. data/lib/hammer_cli_foreman/commands.rb +17 -11
  13. data/lib/hammer_cli_foreman/compute_attribute.rb +1 -1
  14. data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
  15. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +2 -1
  16. data/lib/hammer_cli_foreman/compute_resource.rb +23 -0
  17. data/lib/hammer_cli_foreman/config_report.rb +2 -0
  18. data/lib/hammer_cli_foreman/filter.rb +2 -2
  19. data/lib/hammer_cli_foreman/host.rb +1 -47
  20. data/lib/hammer_cli_foreman/hostgroup.rb +14 -58
  21. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +10 -31
  22. data/lib/hammer_cli_foreman/id_resolver.rb +7 -68
  23. data/lib/hammer_cli_foreman/location.rb +0 -6
  24. data/lib/hammer_cli_foreman/mail_notification.rb +2 -2
  25. data/lib/hammer_cli_foreman/model.rb +5 -5
  26. data/lib/hammer_cli_foreman/operating_system.rb +10 -10
  27. data/lib/hammer_cli_foreman/option_builders.rb +84 -52
  28. data/lib/hammer_cli_foreman/option_sources/id_params.rb +41 -11
  29. data/lib/hammer_cli_foreman/option_sources/ids_params.rb +39 -7
  30. data/lib/hammer_cli_foreman/option_sources.rb +0 -1
  31. data/lib/hammer_cli_foreman/organization.rb +0 -6
  32. data/lib/hammer_cli_foreman/ping.rb +6 -1
  33. data/lib/hammer_cli_foreman/references.rb +0 -16
  34. data/lib/hammer_cli_foreman/registration.rb +18 -0
  35. data/lib/hammer_cli_foreman/settings.rb +3 -3
  36. data/lib/hammer_cli_foreman/smart_proxy.rb +7 -57
  37. data/lib/hammer_cli_foreman/template.rb +3 -15
  38. data/lib/hammer_cli_foreman/user.rb +4 -4
  39. data/lib/hammer_cli_foreman/usergroup.rb +5 -5
  40. data/lib/hammer_cli_foreman/version.rb +1 -1
  41. data/lib/hammer_cli_foreman.rb +3 -21
  42. data/lib/minitest/coverage_reporter.rb +1 -1
  43. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  44. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  45. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  47. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  48. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  49. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  50. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  51. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  52. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  53. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  54. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  55. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  56. data/test/data/2.4/foreman_api.json +1 -0
  57. data/test/data/2.5/foreman_api.json +1 -0
  58. data/test/data/3.1/foreman_api.json +1 -0
  59. data/test/functional/architecture_test.rb +37 -5
  60. data/test/functional/bookmark_test.rb +5 -2
  61. data/test/functional/compute_attribute_test.rb +20 -20
  62. data/test/functional/compute_profile_test.rb +14 -1
  63. data/test/functional/compute_resource_test.rb +37 -0
  64. data/test/functional/filter_test.rb +2 -1
  65. data/test/functional/host_test.rb +65 -11
  66. data/test/functional/hostgroup/create_test.rb +11 -117
  67. data/test/functional/hostgroup/update_test.rb +11 -79
  68. data/test/functional/http_proxy_test.rb +12 -0
  69. data/test/functional/location_test.rb +13 -3
  70. data/test/functional/mail_notification_test.rb +3 -1
  71. data/test/functional/media_test.rb +11 -0
  72. data/test/functional/model_test.rb +3 -1
  73. data/test/functional/operating_system_test.rb +3 -1
  74. data/test/functional/personal_access_token_test.rb +4 -4
  75. data/test/functional/ping_test.rb +33 -0
  76. data/test/functional/realm_test.rb +11 -0
  77. data/test/functional/registration_test.rb +8 -0
  78. data/test/functional/report_template_test.rb +11 -0
  79. data/test/functional/settings_test.rb +4 -4
  80. data/test/functional/template_test.rb +87 -48
  81. data/test/functional/user_mail_notification_test.rb +3 -3
  82. data/test/functional/user_test.rb +11 -0
  83. data/test/functional/usergroup_test.rb +3 -1
  84. data/test/test_helper.rb +1 -1
  85. data/test/unit/apipie_resource_mock.rb +1 -39
  86. data/test/unit/architecture_test.rb +10 -10
  87. data/test/unit/bookmark_test.rb +10 -14
  88. data/test/unit/commands_test.rb +1 -2
  89. data/test/unit/compute_profile_test.rb +10 -10
  90. data/test/unit/config_report_test.rb +1 -0
  91. data/test/unit/helpers/command.rb +0 -8
  92. data/test/unit/host_test.rb +14 -61
  93. data/test/unit/hostgroup_test.rb +7 -26
  94. data/test/unit/id_resolver_test.rb +0 -28
  95. data/test/unit/mail_notification_test.rb +4 -4
  96. data/test/unit/model_test.rb +47 -47
  97. data/test/unit/operating_system_test.rb +10 -16
  98. data/test/unit/option_builders_test.rb +88 -83
  99. data/test/unit/settings_test.rb +4 -4
  100. data/test/unit/smart_proxy_test.rb +0 -12
  101. data/test/unit/usergroup_test.rb +10 -10
  102. metadata +115 -128
  103. data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +0 -29
  104. data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +0 -29
  105. data/lib/hammer_cli_foreman/config_group.rb +0 -45
  106. data/lib/hammer_cli_foreman/option_sources/puppet_environment_params.rb +0 -59
  107. data/lib/hammer_cli_foreman/puppet_class.rb +0 -61
  108. data/lib/hammer_cli_foreman/puppet_environment.rb +0 -65
  109. data/lib/hammer_cli_foreman/smart_class_parameter.rb +0 -189
  110. data/test/functional/config_group_test.rb +0 -50
  111. data/test/functional/proxy_test.rb +0 -86
  112. data/test/functional/smart_class_parameter_test.rb +0 -97
  113. data/test/reports/TEST-Minitest-Result.xml +0 -4344
  114. data/test/unit/config_group_test.rb +0 -82
  115. data/test/unit/puppet_class_test.rb +0 -72
  116. data/test/unit/puppet_environment_test.rb +0 -114
  117. data/test/unit/smart_class_parameter_test.rb +0 -113
@@ -7,9 +7,9 @@ describe 'architecture' do
7
7
  before do
8
8
  @cmd = %w[architecture list]
9
9
  @architectures = [{
10
- id: 1,
11
- name: 'i386',
12
- }]
10
+ id: 1,
11
+ name: 'i386'
12
+ }]
13
13
  end
14
14
 
15
15
  it 'should return a list of architectures' do
@@ -26,7 +26,7 @@ describe 'architecture' do
26
26
  end
27
27
 
28
28
  it 'should run list command with defaults' do
29
- providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
29
+ providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
30
30
  defaults = HammerCLI::Defaults.new(
31
31
  {
32
32
  organization_id: {
@@ -39,11 +39,43 @@ describe 'architecture' do
39
39
  )
40
40
  defaults.stubs(:write_to_file).returns(true)
41
41
  defaults.stubs(:providers).returns(providers)
42
+ api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
43
+ api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
42
44
  api_expects(:architectures, :index, 'List architectures').returns(@architectures)
43
45
 
44
46
  result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
45
47
  _(result.exit_code).must_equal HammerCLI::EX_OK
46
48
  end
47
49
  end
48
- end
49
50
 
51
+ describe 'update' do
52
+ before do
53
+ @cmd = %w[architecture update]
54
+ @architecture = {
55
+ id: 1,
56
+ name: 'x86_64',
57
+ }
58
+ end
59
+
60
+ it 'should update an architecture with id' do
61
+ params = %w[--id=1 --new-name=x86_64]
62
+ api_expects(:architectures, :update, 'Update architecture').returns(@architecture)
63
+
64
+ expected_result = success_result("Architecture updated.\n")
65
+
66
+ result = run_cmd(@cmd + params)
67
+ assert_cmd(expected_result, result)
68
+ end
69
+
70
+ it 'updates nothing without architecture related parameters' do
71
+ params = %w[--id=1]
72
+ api_expects(:architectures, :update, 'Update architecture with no params').returns({})
73
+
74
+ expected_result = success_result("Nothing to update.\n")
75
+
76
+ result = run_cmd(@cmd + params)
77
+ assert_cmd(expected_result, result)
78
+ end
79
+
80
+ end
81
+ end
@@ -29,7 +29,7 @@ describe 'bookmark' do
29
29
  end
30
30
 
31
31
  it 'should run list command with defaults' do
32
- providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
32
+ providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
33
33
  defaults = HammerCLI::Defaults.new(
34
34
  {
35
35
  organization_id: {
@@ -42,6 +42,8 @@ describe 'bookmark' do
42
42
  )
43
43
  defaults.stubs(:write_to_file).returns(true)
44
44
  defaults.stubs(:providers).returns(providers)
45
+ api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
46
+ api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
45
47
  api_expects(:bookmarks, :index, 'List bookmarks').returns(@bookmarks)
46
48
 
47
49
  result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
@@ -158,7 +160,8 @@ describe 'bookmark' do
158
160
  api_expects(:bookmarks, :update) do |par|
159
161
  par['id'] == '1'
160
162
  end
161
- run_cmd(%w[bookmark update --id 1])
163
+ result = run_cmd(%w[bookmark update --id 1])
164
+ assert_cmd(success_result("Nothing to update.\n"), result)
162
165
  end
163
166
 
164
167
  it 'update bookmark' do
@@ -11,11 +11,11 @@ describe "parameters" do
11
11
  }
12
12
  end
13
13
 
14
- it "should print error on missing --compute-profile-id or --compute-profile" do
14
+ it 'should print error on missing --compute-profile-id or --compute-profile' do
15
15
  expected_result = common_error_result(
16
16
  @cmd,
17
- "Could not find compute_profile, please set one of options --compute-profile, --compute-profile-id.",
18
- "Could not set the compute profile attributes"
17
+ 'Could not find compute_profile, please set one of options --compute-profile-id, --compute-profile.',
18
+ 'Could not set the compute profile attributes'
19
19
  )
20
20
 
21
21
  api_expects_no_call
@@ -23,12 +23,12 @@ describe "parameters" do
23
23
  assert_cmd(expected_result, result)
24
24
  end
25
25
 
26
- it "should print error on missing --compute-resource-id or --compute-resource" do
26
+ it 'should print error on missing --compute-resource-id or --compute-resource' do
27
27
  params = ['--compute-profile-id=1']
28
28
  expected_result = common_error_result(
29
29
  @cmd,
30
- "Could not find compute_resource, please set one of options --compute-resource, --compute-resource-id.",
31
- "Could not set the compute profile attributes"
30
+ 'Could not find compute_resource, please set one of options --compute-resource-id, --compute-resource.',
31
+ 'Could not set the compute profile attributes'
32
32
  )
33
33
 
34
34
  api_expects_no_call
@@ -103,11 +103,11 @@ describe "parameters" do
103
103
  params = ['--compute-profile-id=1', '--compute-resource-id=1', '--compute-attributes', 'cores=1']
104
104
 
105
105
  api_expects(:compute_profiles, :show) do |par|
106
- par['id'] == 1
106
+ par['id'] == '1'
107
107
  end.returns(@compute_profile)
108
108
 
109
109
  api_expects(:compute_resources, :show) do |par|
110
- par['id'] == 1
110
+ par['id'] == '1'
111
111
  end.returns(@compute_resource)
112
112
 
113
113
  api_expects(:compute_attributes, :update) do |par|
@@ -177,7 +177,7 @@ describe "parameters" do
177
177
  expected_result.expected_exit_code = HammerCLI::EX_USAGE
178
178
 
179
179
  api_expects(:compute_profiles, :show) do |par|
180
- par['id'] == 1
180
+ par['id'] == '1'
181
181
  end.returns(@compute_profile)
182
182
 
183
183
  result = run_cmd(@cmd + params)
@@ -189,7 +189,7 @@ describe "parameters" do
189
189
  params = ['--compute-profile-id=1', '--compute-resource-id=1', '--volume', 'size_gb=1']
190
190
 
191
191
  api_expects(:compute_profiles, :show) do |par|
192
- par['id'] == 1
192
+ par['id'] == '1'
193
193
  end.returns(@compute_profile)
194
194
 
195
195
  api_expects(:compute_attributes, :update) do |par|
@@ -261,7 +261,7 @@ describe "parameters" do
261
261
  params = ['--compute-profile-id=1', '--compute-resource-id=1', '--volume-id=1', '--volume', 'size_gb=1']
262
262
 
263
263
  api_expects(:compute_profiles, :show) do |par|
264
- par['id'] == 1
264
+ par['id'] == '1'
265
265
  end.returns(@compute_profile)
266
266
 
267
267
  api_expects(:compute_attributes, :update) do |par|
@@ -339,7 +339,7 @@ describe "parameters" do
339
339
  params = ['--compute-profile-id=1', '--compute-resource-id=1', '--volume-id=1']
340
340
 
341
341
  api_expects(:compute_profiles, :show) do |par|
342
- par['id'] == 1
342
+ par['id'] == '1'
343
343
  end.returns(@compute_profile)
344
344
 
345
345
  api_expects(:compute_attributes, :update) do |par|
@@ -438,7 +438,7 @@ describe "parameters" do
438
438
  expected_result.expected_exit_code = HammerCLI::EX_USAGE
439
439
 
440
440
  api_expects(:compute_profiles, :show) do |par|
441
- par['id'] == 1
441
+ par['id'] == '1'
442
442
  end.returns(@compute_profile)
443
443
  result = run_cmd(@cmd + params)
444
444
  assert_cmd(expected_result, result)
@@ -455,7 +455,7 @@ describe "parameters" do
455
455
  response = HammerCLIForeman.foreman_api.api.send(:create_fake_response, 404,
456
456
  expected_message, "GET", "http://example.com/", {})
457
457
  api_expects(:compute_profiles, :show) do |par|
458
- par['id'] == 200
458
+ par['id'] == '200'
459
459
  end.raises(RestClient::NotFound, response)
460
460
 
461
461
  result = run_cmd(@cmd + params)
@@ -465,11 +465,11 @@ describe "parameters" do
465
465
  it "should add interface" do
466
466
  params = [ '--interface', 'name=eth0', '--compute-profile-id=1', '--compute-resource-id=1']
467
467
  api_expects(:compute_profiles, :show) do |par|
468
- par['id'] == 1
468
+ par['id'] == '1'
469
469
  end.returns(@compute_profile)
470
470
 
471
471
  api_expects(:compute_resources, :show) do |par|
472
- par['id'] == 1
472
+ par['id'] == '1'
473
473
  end.returns(@compute_resource)
474
474
 
475
475
  api_expects(:compute_attributes, :update) do |par|
@@ -548,11 +548,11 @@ describe "parameters" do
548
548
  params = ['--compute-profile-id=1', '--compute-resource-id=1', '--interface-id=1', '--interface', 'compute_name=eth0']
549
549
 
550
550
  api_expects(:compute_profiles, :show) do |par|
551
- par['id'] == 1
551
+ par['id'] == '1'
552
552
  end.returns(@compute_profile)
553
553
 
554
554
  api_expects(:compute_resources, :show) do |par|
555
- par['id'] == 1
555
+ par['id'] == '1'
556
556
  end.returns(@compute_resource)
557
557
 
558
558
  api_expects(:compute_attributes, :update) do |par|
@@ -637,11 +637,11 @@ describe "parameters" do
637
637
  params = ['--compute-profile-id=1', '--compute-resource-id=1', '--interface-id=1']
638
638
 
639
639
  api_expects(:compute_profiles, :show) do |par|
640
- par['id'] == 1
640
+ par['id'] == '1'
641
641
  end.returns(@compute_profile)
642
642
 
643
643
  api_expects(:compute_resources, :show) do |par|
644
- par['id'] == 1
644
+ par['id'] == '1'
645
645
  end.returns(@compute_resource)
646
646
 
647
647
  api_expects(:compute_attributes, :update) do |par|
@@ -40,6 +40,17 @@ describe "parameters" do
40
40
  result = run_cmd(@cmd + params)
41
41
  assert_cmd(success_result("Compute profile updated.\n"), result)
42
42
  end
43
+
44
+ it 'updates nothing without profile related parameters' do
45
+ params = %w[--id=1]
46
+ api_expects(:compute_profiles, :update, 'Update profile with no params').returns({})
47
+
48
+ expected_result = success_result("Nothing to update.\n")
49
+
50
+ result = run_cmd(@cmd + params)
51
+ assert_cmd(expected_result, result)
52
+ end
53
+
43
54
  end
44
55
 
45
56
  describe "delete compute profile" do
@@ -121,7 +132,7 @@ describe "parameters" do
121
132
  end
122
133
 
123
134
  it 'should run list command with defaults' do
124
- providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
135
+ providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
125
136
  defaults = HammerCLI::Defaults.new(
126
137
  {
127
138
  organization_id: {
@@ -134,6 +145,8 @@ describe "parameters" do
134
145
  )
135
146
  defaults.stubs(:write_to_file).returns(true)
136
147
  defaults.stubs(:providers).returns(providers)
148
+ api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
149
+ api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
137
150
  api_expects(:compute_profiles, :index, 'List compute profiles').returns(@compute_profiles)
138
151
 
139
152
  result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
@@ -51,6 +51,18 @@ describe 'compute-resource' do
51
51
  assert_cmd(expected_result, result)
52
52
  end
53
53
 
54
+ describe 'associate VMs to hosts' do
55
+ it 'successful associate vms to hosts' do
56
+ expected_result = success_result("Virtual machines have been associated.\n")
57
+ api_expects(:compute_resources, :associate, 'Associate VMs') do |p|
58
+ p['id'] == '1'
59
+ end
60
+ result = run_cmd(%w(compute-resource associate-vms --id 1))
61
+ assert_cmd(expected_result, result)
62
+ end
63
+ end
64
+
65
+
54
66
  it 'should print error for blank --provider option' do
55
67
  params = %w(--provider= --name=new'')
56
68
  expected_result = CommandExpectation.new
@@ -198,6 +210,31 @@ end
198
210
  end
199
211
  end
200
212
 
213
+ describe 'vnic profiles' do
214
+ let(:cmd) { base_cmd << 'vnic-profiles' }
215
+ let(:vnic_profile_1) { { id: 1, name: 'network1', network: 2 } }
216
+ let(:vnic_profile_2) { { id: 2, name: 'network2', network: 2 } }
217
+ let(:vnic_profiles) { [vnic_profile_1, vnic_profile_2] }
218
+
219
+ it 'lists available vnic profiles for a compute resource' do
220
+ api_expects(:compute_resources, :available_vnic_profiles, 'vnic-profiles').with_params(
221
+ 'id' => '1'
222
+ ).returns(index_response(vnic_profiles))
223
+
224
+ output = IndexMatcher.new(
225
+ [
226
+ ['VNIC PROFILE ID', 'NAME', 'NETWORK ID'],
227
+ ['1', 'network1','2'],
228
+ ['2', 'network2','2']
229
+ ]
230
+ )
231
+ expected_result = success_result(output)
232
+
233
+ result = run_cmd(cmd + base_params)
234
+ assert_cmd(expected_result, result)
235
+ end
236
+ end
237
+
201
238
  describe 'images' do
202
239
  let(:cmd) { base_cmd << 'images' }
203
240
  let(:image1) { { uuid: 1, name: 'image1' } }
@@ -45,7 +45,7 @@ describe 'filter' do
45
45
  end
46
46
 
47
47
  result = run_cmd(@cmd + params)
48
- assert_cmd(success_result("Permission filter for [%<resource_type>s] created.\n"), result)
48
+ assert_cmd(success_result("Permission filter for [%<resource_type_label>s] created.\n"), result)
49
49
  end
50
50
  end
51
51
 
@@ -106,6 +106,7 @@ describe 'filter' do
106
106
  @cmd = %w[filter update]
107
107
  @filter = {
108
108
  'search' => nil,
109
+ 'resource_type_label' => 'User',
109
110
  'resource_type' => 'User',
110
111
  'unlimited?' => false,
111
112
  'created_at' => '2017-07-18 14:34:09 UTC',
@@ -312,6 +312,39 @@ describe "host create" do
312
312
 
313
313
  assert_cmd(expected_result, result)
314
314
  end
315
+
316
+ it 'should create a host and set owner-type' do
317
+ params = ['--owner=admin']
318
+
319
+ api_expects_search(:users, {login: 'admin'}).returns(index_response([{ 'id' => 1 }]))
320
+
321
+ api_expects(:hosts, :create, 'Create a host with an owner').with_params(
322
+ 'location_id' => 1, 'organization_id' => 1, 'host' => {
323
+ 'owner_id' => 1, 'name' => 'test'
324
+ }
325
+ ).returns(results: { 'owner' => 'admin', 'name' => 'test' })
326
+
327
+ expected_result = success_result("Host created.\n")
328
+
329
+ result = run_cmd(cmd + minimal_params_without_hostgroup + params)
330
+
331
+ assert_cmd(expected_result, result)
332
+ end
333
+
334
+ it 'should create a host with default owner-type User' do
335
+
336
+ api_expects(:hosts, :create, 'Create a host with an owner').with_params(
337
+ 'location_id' => 1, 'organization_id' => 1, 'host' => {
338
+ 'name' => 'test'
339
+ }
340
+ ).returns(results: { 'owner_type' => 'User', 'name' => 'test' })
341
+
342
+ expected_result = success_result("Host created.\n")
343
+
344
+ result = run_cmd(cmd + minimal_params_without_hostgroup)
345
+
346
+ assert_cmd(expected_result, result)
347
+ end
315
348
  end
316
349
 
317
350
  describe 'host update' do
@@ -323,7 +356,6 @@ describe 'host update' do
323
356
  'organization_id' => '5',
324
357
  'location_id' => '5',
325
358
  'compute_attributes' => {},
326
- 'puppetclass_ids' => [],
327
359
  'owner_id' => '1',
328
360
  'owner_name' => 'adminGroup',
329
361
  'owner_type' => 'Usergroup'
@@ -371,7 +403,7 @@ describe 'host update' do
371
403
  it 'updates nothing without host related parameters' do
372
404
  api_expects(:hosts, :update, 'Update host with no host params').returns({})
373
405
 
374
- expected_result = success_result("Host updated.\n")
406
+ expected_result = success_result("Nothing to update.\n")
375
407
 
376
408
  result = run_cmd(cmd + minimal_params)
377
409
  assert_cmd(expected_result, result)
@@ -536,17 +568,39 @@ describe 'disassociate host from vm' do
536
568
  end
537
569
  end
538
570
 
539
- describe 'run puppetrun for host' do
540
- let(:cmd) { ['host', 'puppetrun'] }
541
- let(:params) { ['--id=1'] }
571
+ describe 'defaults' do
572
+ let(:cmd) { %w[host list] }
573
+ let(:defaults) do
574
+ HammerCLI::Defaults.new(
575
+ {
576
+ organization_id: {
577
+ value: '1'
578
+ },
579
+ organization: {
580
+ value: 'Default Organization'
581
+ }
582
+ }
583
+ )
584
+ end
542
585
 
543
- it "does nothing for puppetrun" do
544
- expected_result = CommandExpectation.new
545
- expected_result.expected_err = "The puppetrun feature has been removed, however you can use the Remote Execution Plugin to run Puppet commands\n"
546
- expected_result.expected_exit_code = HammerCLI::EX_SOFTWARE
586
+ it 'works with default org name overridden via cli' do
587
+ params = %w[--organization=Org2]
547
588
 
548
- result = run_cmd(cmd)
549
- assert_cmd(expected_result, result)
589
+ api_expects_search(:organizations, name: 'Org2').returns(index_response([{ 'id' => '2' }]))
590
+ api_expects(:hosts, :index) do |p|
591
+ p['organization_id'] == '2'
592
+ end
593
+
594
+ run_cmd(cmd + params, { use_defaults: true, defaults: defaults })
595
+ end
596
+ it 'works with default org id overridden via cli' do
597
+ params = %w[--organization-id=2]
598
+
599
+ api_expects(:hosts, :index) do |p|
600
+ p['organization_id'] == '2'
601
+ end
602
+
603
+ run_cmd(cmd + params, { use_defaults: true, defaults: defaults })
550
604
  end
551
605
  end
552
606
 
@@ -68,25 +68,6 @@ module HammerCLIForeman
68
68
  run_cmd(%w(hostgroup create --name hg1 --domain d1))
69
69
  end
70
70
 
71
- it 'allows environment id' do
72
- api_expects(:hostgroups, :create) do |p|
73
- p['hostgroup']['environment_id'] == 1 &&
74
- p['hostgroup']['name'] == 'hg1'
75
- end
76
- run_cmd(%w(hostgroup create --name hg1 --environment-id 1))
77
- end
78
-
79
- it 'allows environment name' do
80
- api_expects(:environments, :index) do |p|
81
- p[:search] = "name = \"env1\""
82
- end.returns(index_response([{'id' => 1}]))
83
- api_expects(:hostgroups, :create) do |p|
84
- p['hostgroup']['environment_id'] == 1 &&
85
- p['hostgroup']['name'] == 'hg1'
86
- end
87
- run_cmd(%w(hostgroup create --name hg1 --environment env1))
88
- end
89
-
90
71
  it 'allows location ids' do
91
72
  api_expects(:hostgroups, :create) do |p|
92
73
  p['hostgroup']['location_ids'] == ['1','4'] &&
@@ -184,6 +165,17 @@ module HammerCLIForeman
184
165
  run_cmd(%w(hostgroup create --name hg1 --parent parent_hg))
185
166
  end
186
167
 
168
+ it 'allows parent hostgroup title' do
169
+ api_expects(:hostgroups, :index) do |p|
170
+ p[:search] = 'title = "parent_hg"'
171
+ end.returns(index_response([{ 'id' => 1 }]))
172
+ api_expects(:hostgroups, :create) do |p|
173
+ p['hostgroup']['parent_id'] == 1 &&
174
+ p['hostgroup']['name'] == 'hg1'
175
+ end
176
+ run_cmd(%w[hostgroup create --name hg1 --parent parent_hg])
177
+ end
178
+
187
179
  it 'allows partition table id' do
188
180
  api_expects(:hostgroups, :create) do |p|
189
181
  p['hostgroup']['ptable_id'] == 1 &&
@@ -203,104 +195,6 @@ module HammerCLIForeman
203
195
  run_cmd(%w(hostgroup create --name hg1 --partition-table pt1))
204
196
  end
205
197
 
206
- it 'allows puppet ca proxy id' do
207
- api_expects(:hostgroups, :create).with_params({
208
- :hostgroup => {
209
- :name => 'hg1',
210
- :puppet_ca_proxy_id => 1
211
- }
212
- })
213
- run_cmd(%w(hostgroup create --name hg1 --puppet-ca-proxy-id 1))
214
- end
215
-
216
- it 'allows puppet ca proxy name' do
217
- api_expects(:smart_proxies, :index) do |p|
218
- p[:search] = "name = \"sp1\""
219
- end.returns(index_response([{'id' => 1}]))
220
- api_expects(:hostgroups, :create) do |p|
221
- p['hostgroup']['puppet_ca_proxy_id'] == 1 &&
222
- p['hostgroup']['name'] == 'hg1'
223
- end
224
- run_cmd(%w(hostgroup create --name hg1 --puppet-ca-proxy sp1))
225
- end
226
-
227
- it 'allows puppet class ids' do
228
- api_expects(:hostgroups, :create) do |p|
229
- p['hostgroup']['puppetclass_ids'] == ['1','2'] &&
230
- p['hostgroup']['name'] == 'hg1'
231
- end
232
- run_cmd(%w(hostgroup create --name hg1 --puppet-class-ids 1,2))
233
- end
234
-
235
- it 'allows puppet class names' do
236
- api_expects(:puppetclasses, :index) do |p|
237
- p[:search] = "name = \"pc1\" or name = \"pc2\""
238
- end.returns(index_response('puppetclasses' => [
239
- {'id' => 1, 'name' => 'pc1'},
240
- {'id' => 2, 'name' => 'pc2'}
241
- ]))
242
- api_expects(:hostgroups, :create) do |p|
243
- p['hostgroup']['puppetclass_ids'] == [1,2] &&
244
- p['hostgroup']['name'] == 'hg1'
245
- end
246
- run_cmd(%w(hostgroup create --name hg1 --puppet-classes pc1,pc2))
247
- end
248
-
249
- it 'allows puppet class names that exceeds entries_per_page' do
250
- search_objects = []
251
- response_objects = []
252
- ids = []
253
- names = []
254
- 1100.times.with_object('pc').each do |id, name|
255
- next_name = "\"#{name}#{id}\""
256
- search_objects << "name = #{next_name}"
257
- response_objects << { 'id' => id, 'name' => next_name }
258
- ids << id
259
- names << next_name
260
- end
261
-
262
- api_expects(:puppetclasses, :index) do |p|
263
- p[:search] == search_objects.join(' or ') &&
264
- p[:page].to_i == 1 &&
265
- p[:per_page].to_i == HammerCLIForeman::IdResolver::ALL_PER_PAGE
266
- end.returns(
267
- index_response('puppetclasses' => response_objects[0...1000]))
268
-
269
- api_expects(:puppetclasses, :index) do |p|
270
- p[:search] == search_objects.join(' or ') &&
271
- p[:page].to_i == 2 &&
272
- p[:per_page].to_i == HammerCLIForeman::IdResolver::ALL_PER_PAGE
273
- end.returns(index_response('puppetclasses' => response_objects[1000...1100]))
274
-
275
- api_expects(:hostgroups, :create) do |p|
276
- p['hostgroup']['name'] == 'hg1' &&
277
- p['hostgroup']['puppetclass_ids'] == ids
278
- end
279
-
280
- run_cmd(%w[hostgroup create --name hg1 --puppet-classes] << names.join(',').tr('"', ''))
281
- end
282
-
283
- it 'allows puppet proxy id' do
284
- api_expects(:hostgroups, :create).with_params({
285
- :hostgroup => {
286
- :name => 'hg1',
287
- :puppet_proxy_id => 1
288
- }
289
- })
290
- run_cmd(%w(hostgroup create --name hg1 --puppet-proxy-id 1))
291
- end
292
-
293
- it 'allows puppet proxy name' do
294
- api_expects(:smart_proxies, :index) do |p|
295
- p[:search] = "name = \"sp1\""
296
- end.returns(index_response([{'id' => 1}]))
297
- api_expects(:hostgroups, :create) do |p|
298
- p['hostgroup']['puppet_proxy_id'] == 1 &&
299
- p['hostgroup']['name'] == 'hg1'
300
- end
301
- run_cmd(%w(hostgroup create --name hg1 --puppet-proxy sp1))
302
- end
303
-
304
198
  it 'allows realm id' do
305
199
  api_expects(:hostgroups, :create) do |p|
306
200
  p['hostgroup']['realm_id'] == 1 &&