hammer_cli_foreman 2.5.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes.md +31 -1
  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/domain.rb +20 -0
  8. data/lib/hammer_cli_foreman/command_extensions/subnet.rb +25 -10
  9. data/lib/hammer_cli_foreman/command_extensions/user.rb +9 -5
  10. data/lib/hammer_cli_foreman/command_extensions.rb +1 -2
  11. data/lib/hammer_cli_foreman/commands.rb +3 -11
  12. data/lib/hammer_cli_foreman/compute_attribute.rb +1 -1
  13. data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
  14. data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +4 -2
  15. data/lib/hammer_cli_foreman/compute_resource/vmware.rb +4 -2
  16. data/lib/hammer_cli_foreman/compute_resource.rb +1 -0
  17. data/lib/hammer_cli_foreman/domain.rb +5 -28
  18. data/lib/hammer_cli_foreman/filter.rb +3 -3
  19. data/lib/hammer_cli_foreman/host.rb +1 -35
  20. data/lib/hammer_cli_foreman/hostgroup.rb +14 -58
  21. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +8 -30
  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 +65 -53
  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/references.rb +0 -16
  33. data/lib/hammer_cli_foreman/settings.rb +3 -3
  34. data/lib/hammer_cli_foreman/smart_proxy.rb +7 -57
  35. data/lib/hammer_cli_foreman/template.rb +3 -15
  36. data/lib/hammer_cli_foreman/user.rb +5 -4
  37. data/lib/hammer_cli_foreman/usergroup.rb +5 -5
  38. data/lib/hammer_cli_foreman/version.rb +1 -1
  39. data/lib/hammer_cli_foreman.rb +0 -21
  40. data/lib/minitest/coverage_reporter.rb +1 -1
  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/3.1/foreman_api.json +1 -0
  55. data/test/functional/architecture_test.rb +6 -4
  56. data/test/functional/bookmark_test.rb +3 -1
  57. data/test/functional/compute_attribute_test.rb +20 -20
  58. data/test/functional/compute_profile_test.rb +3 -1
  59. data/test/functional/domain/create_test.rb +91 -0
  60. data/test/functional/domain/update_test.rb +90 -0
  61. data/test/functional/host_test.rb +34 -1
  62. data/test/functional/hostgroup/create_test.rb +11 -117
  63. data/test/functional/hostgroup/update_test.rb +11 -79
  64. data/test/functional/location_test.rb +0 -3
  65. data/test/functional/mail_notification_test.rb +3 -1
  66. data/test/functional/model_test.rb +3 -1
  67. data/test/functional/operating_system_test.rb +3 -1
  68. data/test/functional/personal_access_token_test.rb +4 -4
  69. data/test/functional/settings_test.rb +4 -4
  70. data/test/functional/template_test.rb +76 -49
  71. data/test/functional/user_mail_notification_test.rb +3 -3
  72. data/test/functional/usergroup_test.rb +3 -1
  73. data/test/test_helper.rb +1 -1
  74. data/test/unit/apipie_resource_mock.rb +1 -39
  75. data/test/unit/architecture_test.rb +10 -10
  76. data/test/unit/bookmark_test.rb +10 -14
  77. data/test/unit/commands_test.rb +1 -2
  78. data/test/unit/compute_profile_test.rb +10 -10
  79. data/test/unit/helpers/command.rb +0 -8
  80. data/test/unit/host_test.rb +14 -61
  81. data/test/unit/hostgroup_test.rb +7 -26
  82. data/test/unit/id_resolver_test.rb +0 -28
  83. data/test/unit/mail_notification_test.rb +4 -4
  84. data/test/unit/model_test.rb +47 -47
  85. data/test/unit/operating_system_test.rb +10 -16
  86. data/test/unit/option_builders_test.rb +88 -83
  87. data/test/unit/settings_test.rb +4 -4
  88. data/test/unit/smart_proxy_test.rb +0 -12
  89. data/test/unit/usergroup_test.rb +10 -10
  90. metadata +70 -84
  91. data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +0 -29
  92. data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +0 -29
  93. data/lib/hammer_cli_foreman/config_group.rb +0 -45
  94. data/lib/hammer_cli_foreman/option_sources/puppet_environment_params.rb +0 -59
  95. data/lib/hammer_cli_foreman/puppet_class.rb +0 -61
  96. data/lib/hammer_cli_foreman/puppet_environment.rb +0 -65
  97. data/lib/hammer_cli_foreman/smart_class_parameter.rb +0 -189
  98. data/test/functional/config_group_test.rb +0 -50
  99. data/test/functional/proxy_test.rb +0 -86
  100. data/test/functional/smart_class_parameter_test.rb +0 -97
  101. data/test/unit/config_group_test.rb +0 -82
  102. data/test/unit/puppet_class_test.rb +0 -72
  103. data/test/unit/puppet_environment_test.rb +0 -114
  104. 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,6 +39,8 @@ 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 })
@@ -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 })
@@ -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|
@@ -132,7 +132,7 @@ describe "parameters" do
132
132
  end
133
133
 
134
134
  it 'should run list command with defaults' do
135
- providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
135
+ providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
136
136
  defaults = HammerCLI::Defaults.new(
137
137
  {
138
138
  organization_id: {
@@ -145,6 +145,8 @@ describe "parameters" do
145
145
  )
146
146
  defaults.stubs(:write_to_file).returns(true)
147
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 } }]))
148
150
  api_expects(:compute_profiles, :index, 'List compute profiles').returns(@compute_profiles)
149
151
 
150
152
  result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
@@ -0,0 +1,91 @@
1
+ require_relative '../test_helper'
2
+
3
+ describe 'Domain' do
4
+ describe 'CreateCommand' do
5
+ let(:cmd) { %w[domain create] }
6
+ let(:minimal_params) { %w[--name=dom1.com] }
7
+
8
+ def domain_params(additional_params = {})
9
+ params = {
10
+ domain: {
11
+ name: 'dom1.com'
12
+ }
13
+ }
14
+ params[:domain].merge!(additional_params)
15
+ params
16
+ end
17
+
18
+ it 'should print error on missing --name' do
19
+ expected_result = missing_args_error_result(cmd, '--name')
20
+
21
+ api_expects_no_call
22
+
23
+ result = run_cmd(cmd)
24
+ assert_cmd(expected_result, result)
25
+ end
26
+
27
+ it 'allows minimal options' do
28
+ api_expects(:domains, :create).with_params(domain_params)
29
+
30
+ run_cmd(cmd + minimal_params)
31
+ end
32
+
33
+ it 'allows description' do
34
+ params = %w[--description=shortdesc]
35
+ api_expects(:domains, :create).with_params(domain_params(fullname: 'shortdesc'))
36
+
37
+ run_cmd(cmd + minimal_params + params)
38
+ end
39
+
40
+ it 'allows dns id' do
41
+ params = %w[--dns-id=1]
42
+ api_expects(:domains, :create).with_params(domain_params(dns_id: 1))
43
+
44
+ run_cmd(cmd + minimal_params + params)
45
+ end
46
+
47
+ it 'allows dns name' do
48
+ params = %w[--dns=sp1]
49
+ api_expects_search(:smart_proxies, { name: 'sp1' }).returns(
50
+ index_response([{ 'id' => 1 }])
51
+ )
52
+ api_expects(:domains, :create).with_params(domain_params(dns_id: 1))
53
+
54
+ run_cmd(cmd + minimal_params + params)
55
+ end
56
+
57
+ it 'allows location ids' do
58
+ params = %w[--location-ids=1,4]
59
+ api_expects(:domains, :create).with_params(domain_params(location_ids: %w[1 4]))
60
+
61
+ run_cmd(cmd + minimal_params + params)
62
+ end
63
+
64
+ it 'allows location names' do
65
+ params = %w[--locations=loc1,loc2]
66
+ api_expects(:locations, :index) do |p|
67
+ p[:search] == 'name = "loc1" or name = "loc2"'
68
+ end.returns(index_response([{ 'id' => 1 }, { 'id' => 2 }]))
69
+ api_expects(:domains, :create).with_params(domain_params(location_ids: [1, 2]))
70
+
71
+ run_cmd(cmd + minimal_params + params)
72
+ end
73
+
74
+ it 'allows organization ids' do
75
+ params = %w[--organization-ids=1,4]
76
+ api_expects(:domains, :create).with_params(domain_params(organization_ids: %w[1 4]))
77
+
78
+ run_cmd(cmd + minimal_params + params)
79
+ end
80
+
81
+ it 'allows organization names' do
82
+ params = %w[--organizations=org1,org2]
83
+ api_expects(:organizations, :index) do |p|
84
+ p[:search] == 'name = "org1" or name = "org2"'
85
+ end.returns(index_response([{ 'id' => 1 }, { 'id' => 2 }]))
86
+ api_expects(:domains, :create).with_params(domain_params(organization_ids: [1, 2]))
87
+
88
+ run_cmd(cmd + minimal_params + params)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,90 @@
1
+ require_relative '../test_helper'
2
+
3
+ describe 'Domain' do
4
+ describe 'UpdateCommand' do
5
+ let(:cmd) { %w[domain update] }
6
+ let(:minimal_params) { %w[--id=1] }
7
+
8
+ def domain_params(additional_params = {})
9
+ params = {
10
+ id: '1',
11
+ domain: {}
12
+ }
13
+ params[:domain].merge!(additional_params)
14
+ params
15
+ end
16
+
17
+ it 'should print error on missing --id' do
18
+ expected_result = missing_args_error_result(cmd, '--id')
19
+
20
+ api_expects_no_call
21
+
22
+ result = run_cmd(cmd)
23
+ assert_cmd(expected_result, result)
24
+ end
25
+
26
+ it 'allows minimal options' do
27
+ api_expects(:domains, :update).with_params(domain_params)
28
+
29
+ run_cmd(cmd + minimal_params)
30
+ end
31
+
32
+ it 'allows description' do
33
+ params = %w[--description=shortdesc]
34
+ api_expects(:domains, :update).with_params(domain_params(fullname: 'shortdesc'))
35
+
36
+ run_cmd(cmd + minimal_params + params)
37
+ end
38
+
39
+ it 'allows dns id' do
40
+ params = %w[--dns-id=1]
41
+ api_expects(:domains, :update).with_params(domain_params(dns_id: 1))
42
+
43
+ run_cmd(cmd + minimal_params + params)
44
+ end
45
+
46
+ it 'allows dns name' do
47
+ params = %w[--dns=sp1]
48
+ api_expects_search(:smart_proxies, { name: 'sp1' }).returns(
49
+ index_response([{ 'id' => 1 }])
50
+ )
51
+ api_expects(:domains, :update).with_params(domain_params(dns_id: 1))
52
+
53
+ run_cmd(cmd + minimal_params + params)
54
+ end
55
+
56
+ it 'allows location ids' do
57
+ params = %w[--location-ids=1,4]
58
+ api_expects(:domains, :update).with_params(domain_params(location_ids: %w[1 4]))
59
+
60
+ run_cmd(cmd + minimal_params + params)
61
+ end
62
+
63
+ it 'allows location names' do
64
+ params = %w[--locations=loc1,loc2]
65
+ api_expects(:locations, :index) do |p|
66
+ p[:search] == 'name = "loc1" or name = "loc2"'
67
+ end.returns(index_response([{ 'id' => 1 }, { 'id' => 2 }]))
68
+ api_expects(:domains, :update).with_params(domain_params(location_ids: [1, 2]))
69
+
70
+ run_cmd(cmd + minimal_params + params)
71
+ end
72
+
73
+ it 'allows organization ids' do
74
+ params = %w[--organization-ids=1,4]
75
+ api_expects(:domains, :update).with_params(domain_params(organization_ids: %w[1 4]))
76
+
77
+ run_cmd(cmd + minimal_params + params)
78
+ end
79
+
80
+ it 'allows organization names' do
81
+ params = %w[--organizations=org1,org2]
82
+ api_expects(:organizations, :index) do |p|
83
+ p[:search] == 'name = "org1" or name = "org2"'
84
+ end.returns(index_response([{ 'id' => 1 }, { 'id' => 2 }]))
85
+ api_expects(:domains, :update).with_params(domain_params(organization_ids: [1, 2]))
86
+
87
+ run_cmd(cmd + minimal_params + params)
88
+ end
89
+ end
90
+ end
@@ -356,7 +356,6 @@ describe 'host update' do
356
356
  'organization_id' => '5',
357
357
  'location_id' => '5',
358
358
  'compute_attributes' => {},
359
- 'puppetclass_ids' => [],
360
359
  'owner_id' => '1',
361
360
  'owner_name' => 'adminGroup',
362
361
  'owner_type' => 'Usergroup'
@@ -569,7 +568,41 @@ describe 'disassociate host from vm' do
569
568
  end
570
569
  end
571
570
 
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
585
+
586
+ it 'works with default org name overridden via cli' do
587
+ params = %w[--organization=Org2]
572
588
 
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 })
604
+ end
605
+ end
573
606
 
574
607
  describe 'list' do
575
608
  before do
@@ -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 &&