hammer_cli_foreman 2.1.2 → 2.4.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.
- checksums.yaml +4 -4
- data/doc/release_notes.md +35 -4
- data/doc/testing.md +13 -0
- data/lib/hammer_cli_foreman.rb +0 -4
- data/lib/hammer_cli_foreman/architecture.rb +5 -5
- data/lib/hammer_cli_foreman/associating_commands.rb +4 -5
- data/lib/hammer_cli_foreman/auth.rb +4 -4
- data/lib/hammer_cli_foreman/bookmark.rb +6 -6
- data/lib/hammer_cli_foreman/command_extensions/ping.rb +10 -1
- data/lib/hammer_cli_foreman/command_extensions/status.rb +1 -1
- data/lib/hammer_cli_foreman/commands.rb +3 -1
- data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
- data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +1 -0
- data/lib/hammer_cli_foreman/config_group.rb +5 -5
- data/lib/hammer_cli_foreman/host.rb +3 -2
- data/lib/hammer_cli_foreman/hosts/common_update_options.rb +17 -10
- data/lib/hammer_cli_foreman/location.rb +2 -0
- data/lib/hammer_cli_foreman/mail_notification.rb +2 -2
- data/lib/hammer_cli_foreman/model.rb +5 -5
- data/lib/hammer_cli_foreman/operating_system.rb +10 -9
- data/lib/hammer_cli_foreman/organization.rb +2 -0
- data/lib/hammer_cli_foreman/output/fields.rb +1 -1
- data/lib/hammer_cli_foreman/output/formatters.rb +1 -1
- data/lib/hammer_cli_foreman/ping.rb +20 -11
- data/lib/hammer_cli_foreman/references.rb +16 -0
- data/lib/hammer_cli_foreman/settings.rb +16 -2
- data/lib/hammer_cli_foreman/testing/api_expectations.rb +10 -0
- data/lib/hammer_cli_foreman/usergroup.rb +5 -5
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/lib/minitest/coverage_reporter.rb +94 -0
- data/lib/minitest/hammer_coverage_plugin.rb +19 -0
- data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/test/functional/architecture_test.rb +49 -0
- data/test/functional/audit_test.rb +86 -63
- data/test/functional/bookmark_test.rb +20 -0
- data/test/functional/commands/list_test.rb +11 -11
- data/test/functional/compute_profile_test.rb +47 -2
- data/test/functional/config_group_test.rb +50 -0
- data/test/functional/filter_test.rb +114 -47
- data/test/functional/host_test.rb +105 -19
- data/test/functional/location_test.rb +134 -0
- data/test/functional/mail_notification_test.rb +20 -0
- data/test/functional/media_test.rb +130 -0
- data/test/functional/model_test.rb +50 -0
- data/test/functional/operating_system_test.rb +51 -0
- data/test/functional/organization_test.rb +52 -0
- data/test/functional/realm_test.rb +103 -0
- data/test/functional/role_test.rb +9 -12
- data/test/functional/settings_test.rb +78 -1
- data/test/functional/status_test.rb +79 -13
- data/test/functional/user_test.rb +39 -0
- data/test/functional/usergroup_test.rb +51 -0
- data/test/test_helper.rb +5 -2
- data/test/unit/api/interactive_basic_auth_test.rb +3 -1
- data/test/unit/api/oauth/oauth_authentication_code_grant_test.rb +2 -2
- data/test/unit/api/oauth/oauth_password_grant_test.rb +2 -2
- data/test/unit/api_test.rb +3 -4
- data/test/unit/apipie_resource_mock.rb +25 -4
- data/test/unit/architecture_test.rb +10 -1
- data/test/unit/bookmark_test.rb +99 -0
- data/test/unit/commands_test.rb +19 -19
- data/test/unit/common_parameter_test.rb +1 -1
- data/test/unit/compute_profile_test.rb +87 -0
- data/test/unit/config_group_test.rb +10 -0
- data/test/unit/dependency_resolver_test.rb +4 -4
- data/test/unit/exception_handler_test.rb +13 -13
- data/test/unit/helpers/command.rb +5 -5
- data/test/unit/helpers/resource_disabled.rb +2 -2
- data/test/unit/host_test.rb +1 -24
- data/test/unit/id_resolver_test.rb +23 -23
- data/test/unit/mail_notification_test.rb +53 -0
- data/test/unit/media_test.rb +1 -1
- data/test/unit/model_test.rb +10 -0
- data/test/unit/operating_system_test.rb +14 -1
- data/test/unit/option_builders_test.rb +49 -49
- data/test/unit/option_sources/id_params_test.rb +2 -2
- data/test/unit/option_sources/ids_params_test.rb +2 -2
- data/test/unit/output/formatters_test.rb +21 -21
- data/test/unit/param_filters_test.rb +17 -17
- data/test/unit/partition_table_test.rb +2 -2
- data/test/unit/role_test.rb +2 -2
- data/test/unit/sessions_test.rb +24 -24
- data/test/unit/settings_test.rb +4 -0
- data/test/unit/template_test.rb +1 -1
- data/test/unit/usergroup_test.rb +10 -0
- metadata +26 -7
- data/lib/hammer_cli_foreman/trend.rb +0 -47
- data/test/functional/trend_test.rb +0 -22
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
|
4
|
+
|
|
5
|
+
describe 'config_group' do
|
|
6
|
+
describe 'list' do
|
|
7
|
+
before do
|
|
8
|
+
@cmd = %w[config-group list]
|
|
9
|
+
@config_groups = [{
|
|
10
|
+
id: 1,
|
|
11
|
+
name: 'config-group-test',
|
|
12
|
+
}]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'should return a list of config groups' do
|
|
16
|
+
api_expects(:config_groups, :index, 'List config groups').returns(@config_groups)
|
|
17
|
+
|
|
18
|
+
output = IndexMatcher.new([
|
|
19
|
+
%w[ID NAME],
|
|
20
|
+
%w[1 config-group-test]
|
|
21
|
+
])
|
|
22
|
+
expected_result = success_result(output)
|
|
23
|
+
|
|
24
|
+
result = run_cmd(@cmd)
|
|
25
|
+
assert_cmd(expected_result, result)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'should run list command with defaults' do
|
|
29
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
|
|
30
|
+
defaults = HammerCLI::Defaults.new(
|
|
31
|
+
{
|
|
32
|
+
organization_id: {
|
|
33
|
+
provider: 'foreman'
|
|
34
|
+
},
|
|
35
|
+
location_id: {
|
|
36
|
+
provider: 'foreman'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
defaults.stubs(:write_to_file).returns(true)
|
|
41
|
+
defaults.stubs(:providers).returns(providers)
|
|
42
|
+
api_expects(:config_groups, :index, 'List config groups').returns(@config_groups)
|
|
43
|
+
|
|
44
|
+
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
|
45
|
+
_(result.exit_code).must_equal HammerCLI::EX_OK
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require File.join(File.dirname(__FILE__), 'test_helper')
|
|
2
4
|
|
|
3
5
|
describe 'filter' do
|
|
4
6
|
def api_expects_filter_info(options)
|
|
5
7
|
override = !!options[:override]
|
|
6
|
-
api_expects(:filters, :show, 'Get filter info').with_params(
|
|
7
|
-
:
|
|
8
|
-
|
|
8
|
+
api_expects(:filters, :show, 'Get filter info').with_params(
|
|
9
|
+
id: '1'
|
|
10
|
+
).returns(@filter.merge('override?' => override))
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def taxonomy_usage_error(action, cmd)
|
|
12
14
|
usage_error_result(
|
|
13
15
|
cmd,
|
|
14
16
|
'Organizations and locations can be set only for overriding filters.',
|
|
15
|
-
"Could not #{action} the permission filter"
|
|
17
|
+
"Could not #{action} the permission filter"
|
|
18
|
+
)
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
def assert_update_success(result)
|
|
@@ -21,7 +24,7 @@ describe 'filter' do
|
|
|
21
24
|
|
|
22
25
|
describe 'create' do
|
|
23
26
|
before do
|
|
24
|
-
@cmd = %w
|
|
27
|
+
@cmd = %w[filter create]
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
it 'prints error when taxonomies are used for a not-overriding filter' do
|
|
@@ -32,41 +35,105 @@ describe 'filter' do
|
|
|
32
35
|
result = run_cmd(@cmd + params)
|
|
33
36
|
assert_cmd(taxonomy_usage_error('create', @cmd), result)
|
|
34
37
|
end
|
|
38
|
+
|
|
39
|
+
it 'should create a filter' do
|
|
40
|
+
params = ['--role-id=1', '--permission-ids=[1]']
|
|
41
|
+
|
|
42
|
+
api_expects(:filters, :create) do |params|
|
|
43
|
+
(params['filter']['role_id'] == 1)
|
|
44
|
+
(params['filter']['permission_ids'] == [1])
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
result = run_cmd(@cmd + params)
|
|
48
|
+
assert_cmd(success_result("Permission filter for [%<resource_type>s] created.\n"), result)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe 'list' do
|
|
53
|
+
before do
|
|
54
|
+
@cmd = %w[filter list]
|
|
55
|
+
@filters = [{
|
|
56
|
+
id: 1,
|
|
57
|
+
resource_type: 'Architecture',
|
|
58
|
+
search: 'none',
|
|
59
|
+
unlimited?: true,
|
|
60
|
+
override?: false,
|
|
61
|
+
role: { name: 'Manager', id: 2, description: 'Role granting all available permissions.', origin: 'foreman' },
|
|
62
|
+
permissions: 'view_architectures'
|
|
63
|
+
}]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it 'should return a list of filters' do
|
|
67
|
+
api_expects(:filters, :index, 'List filters').returns(@filters)
|
|
68
|
+
|
|
69
|
+
output = IndexMatcher.new([
|
|
70
|
+
['ID', 'RESOURCE TYPE', 'SEARCH', 'UNLIMITED?', 'OVERRIDE?', 'ROLE', 'PERMISSIONS'],
|
|
71
|
+
['1', 'Architecture', 'none', 'yes', 'no', 'Manager', 'view_architectures']
|
|
72
|
+
])
|
|
73
|
+
expected_result = success_result(output)
|
|
74
|
+
|
|
75
|
+
result = run_cmd(@cmd)
|
|
76
|
+
assert_cmd(expected_result, result)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe 'delete' do
|
|
81
|
+
before do
|
|
82
|
+
@cmd = %w(filter delete)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it 'should print error missing argument id' do
|
|
86
|
+
expected_result = "Could not delete the permission filter:\n Missing arguments for '--id'.\n"
|
|
87
|
+
|
|
88
|
+
api_expects_no_call
|
|
89
|
+
|
|
90
|
+
result = run_cmd(@cmd)
|
|
91
|
+
assert_match(expected_result, result.err)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'should delete a filter' do
|
|
95
|
+
params = ['--id=1']
|
|
96
|
+
|
|
97
|
+
api_expects(:filters, :destroy, 'Delete a filter').with_params(id: '1')
|
|
98
|
+
|
|
99
|
+
result = run_cmd(@cmd + params)
|
|
100
|
+
assert_cmd(success_result("Permission filter deleted.\n"), result)
|
|
101
|
+
end
|
|
35
102
|
end
|
|
36
103
|
|
|
37
104
|
describe 'update' do
|
|
38
105
|
before do
|
|
39
|
-
@cmd = %w
|
|
106
|
+
@cmd = %w[filter update]
|
|
40
107
|
@filter = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
108
|
+
'search' => nil,
|
|
109
|
+
'resource_type' => 'User',
|
|
110
|
+
'unlimited?' => false,
|
|
111
|
+
'created_at' => '2017-07-18 14:34:09 UTC',
|
|
112
|
+
'updated_at' => '2017-07-18 14:34:09 UTC',
|
|
113
|
+
'override?' => true,
|
|
114
|
+
'id' => 404,
|
|
115
|
+
'role' => {
|
|
116
|
+
'name' => 'Some Role',
|
|
117
|
+
'id' => 28,
|
|
118
|
+
'description' => "Description\nof the new\nrole",
|
|
119
|
+
'origin' => nil
|
|
53
120
|
},
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
121
|
+
'permissions' => [{
|
|
122
|
+
'name' => 'view_users',
|
|
123
|
+
'id' => 164,
|
|
124
|
+
'resource_type' => 'User'
|
|
58
125
|
}],
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
126
|
+
'locations' => [{
|
|
127
|
+
'id' => 28,
|
|
128
|
+
'name' => 'location74',
|
|
129
|
+
'title' => 'location74',
|
|
130
|
+
'description' => nil
|
|
64
131
|
}],
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
132
|
+
'organizations' => [{
|
|
133
|
+
'id' => 27,
|
|
134
|
+
'name' => 'organization74',
|
|
135
|
+
'title' => 'organization74',
|
|
136
|
+
'description' => nil
|
|
70
137
|
}]
|
|
71
138
|
}
|
|
72
139
|
end
|
|
@@ -74,13 +141,13 @@ describe 'filter' do
|
|
|
74
141
|
it 'resets taxonomies when a filter is not-overriding' do
|
|
75
142
|
params = ['--id=1']
|
|
76
143
|
|
|
77
|
-
api_expects_filter_info(:
|
|
78
|
-
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
144
|
+
api_expects_filter_info(override: false)
|
|
145
|
+
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
79
146
|
'filter' => {
|
|
80
147
|
'organization_ids' => [],
|
|
81
148
|
'location_ids' => []
|
|
82
149
|
}
|
|
83
|
-
|
|
150
|
+
).returns(@filter)
|
|
84
151
|
|
|
85
152
|
assert_update_success(run_cmd(@cmd + params))
|
|
86
153
|
end
|
|
@@ -88,12 +155,12 @@ describe 'filter' do
|
|
|
88
155
|
it 'resets taxonomies when switching a filter to not-overriding' do
|
|
89
156
|
params = ['--id=1', '--override=false']
|
|
90
157
|
|
|
91
|
-
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
158
|
+
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
92
159
|
'filter' => {
|
|
93
160
|
'organization_ids' => [],
|
|
94
161
|
'location_ids' => []
|
|
95
162
|
}
|
|
96
|
-
|
|
163
|
+
).returns(@filter)
|
|
97
164
|
|
|
98
165
|
assert_update_success(run_cmd(@cmd + params))
|
|
99
166
|
end
|
|
@@ -101,13 +168,13 @@ describe 'filter' do
|
|
|
101
168
|
it 'can add taxonomies when a filter is overriding' do
|
|
102
169
|
params = ['--id=1', '--organization-ids=1,2', '--location-ids=3,4']
|
|
103
170
|
|
|
104
|
-
api_expects_filter_info(:
|
|
105
|
-
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
171
|
+
api_expects_filter_info(override: true)
|
|
172
|
+
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
106
173
|
'filter' => {
|
|
107
|
-
'organization_ids' => [
|
|
108
|
-
'location_ids' => [
|
|
174
|
+
'organization_ids' => %w[1 2],
|
|
175
|
+
'location_ids' => %w[3 4]
|
|
109
176
|
}
|
|
110
|
-
|
|
177
|
+
).returns(@filter)
|
|
111
178
|
|
|
112
179
|
assert_update_success(run_cmd(@cmd + params))
|
|
113
180
|
end
|
|
@@ -115,12 +182,12 @@ describe 'filter' do
|
|
|
115
182
|
it 'can add taxonomies when switching a filter to overriding' do
|
|
116
183
|
params = ['--id=1', '--organization-ids=1,2', '--location-ids=3,4', '--override=true']
|
|
117
184
|
|
|
118
|
-
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
185
|
+
api_expects(:filters, :update, 'Update the filter').with_params(
|
|
119
186
|
'filter' => {
|
|
120
|
-
'organization_ids' => [
|
|
121
|
-
'location_ids' => [
|
|
187
|
+
'organization_ids' => %w[1 2],
|
|
188
|
+
'location_ids' => %w[3 4]
|
|
122
189
|
}
|
|
123
|
-
|
|
190
|
+
).returns(@filter)
|
|
124
191
|
|
|
125
192
|
assert_update_success(run_cmd(@cmd + params))
|
|
126
193
|
end
|
|
@@ -128,7 +195,7 @@ describe 'filter' do
|
|
|
128
195
|
it 'prints error when taxonomies are used on not-overriding' do
|
|
129
196
|
params = ['--id=1', '--organization-ids=1,2', '--location-ids=3,4']
|
|
130
197
|
|
|
131
|
-
api_expects_filter_info(:
|
|
198
|
+
api_expects_filter_info(override: false)
|
|
132
199
|
|
|
133
200
|
result = run_cmd(@cmd + params)
|
|
134
201
|
assert_cmd(taxonomy_usage_error('update', @cmd), result)
|
|
@@ -297,6 +297,21 @@ describe "host create" do
|
|
|
297
297
|
assert_cmd(expected_result, result)
|
|
298
298
|
end
|
|
299
299
|
|
|
300
|
+
it 'should create a host with an owner' do
|
|
301
|
+
params = ['--owner-id=1']
|
|
302
|
+
|
|
303
|
+
api_expects(:hosts, :create, 'Create a host with an owner').with_params(
|
|
304
|
+
'location_id' => 1, 'organization_id' => 1, 'host' => {
|
|
305
|
+
'owner_id' => '1', 'name' => 'test'
|
|
306
|
+
}
|
|
307
|
+
).returns(results: { 'owner_id' => '1', 'name' => 'test' })
|
|
308
|
+
|
|
309
|
+
expected_result = success_result("Host created.\n")
|
|
310
|
+
|
|
311
|
+
result = run_cmd(cmd + minimal_params_without_hostgroup + params)
|
|
312
|
+
|
|
313
|
+
assert_cmd(expected_result, result)
|
|
314
|
+
end
|
|
300
315
|
end
|
|
301
316
|
|
|
302
317
|
describe 'host update' do
|
|
@@ -315,6 +330,26 @@ describe 'host update' do
|
|
|
315
330
|
}
|
|
316
331
|
end
|
|
317
332
|
|
|
333
|
+
it 'updates with passed options only' do
|
|
334
|
+
params = ['--new-name=new-name']
|
|
335
|
+
expected_result = success_result("Host updated.\n")
|
|
336
|
+
|
|
337
|
+
api_expects(:hosts, :update, 'Update host name only').with_params(
|
|
338
|
+
'id' => '1', 'organization_id' => 1, 'location_id' => 1,
|
|
339
|
+
'host' => { 'name' => 'new-name' }
|
|
340
|
+
).returns(
|
|
341
|
+
{
|
|
342
|
+
'id' => '1',
|
|
343
|
+
'name' => 'new-name',
|
|
344
|
+
'organization_id' => '1',
|
|
345
|
+
'location_id' => '1'
|
|
346
|
+
}
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
result = run_cmd(cmd + minimal_params + params)
|
|
350
|
+
assert_cmd(expected_result, result)
|
|
351
|
+
end
|
|
352
|
+
|
|
318
353
|
it 'ensures helper methods are invoked' do
|
|
319
354
|
params = ['--image-id=1']
|
|
320
355
|
expected_result = success_result("Host updated.\n")
|
|
@@ -350,12 +385,9 @@ describe 'host update' do
|
|
|
350
385
|
)
|
|
351
386
|
api_expects(:hosts, :update, 'Update host with new org').with_params(
|
|
352
387
|
'id' => '1', 'location_id' => 1, 'organization_id' => 1, 'host' => {
|
|
353
|
-
'organization_id' => '5'
|
|
354
|
-
}
|
|
388
|
+
'organization_id' => '5' }
|
|
355
389
|
) do |par|
|
|
356
|
-
par['id'] == '1' &&
|
|
357
|
-
par['host']['organization_id'] == '5' &&
|
|
358
|
-
par['host']['compute_attributes'] == {}
|
|
390
|
+
par['id'] == '1' && par['host']['organization_id'] == '5'
|
|
359
391
|
end.returns(updated_host)
|
|
360
392
|
|
|
361
393
|
expected_result = success_result("Host updated.\n")
|
|
@@ -373,12 +405,9 @@ describe 'host update' do
|
|
|
373
405
|
)
|
|
374
406
|
api_expects(:hosts, :update, 'Update host with new loc').with_params(
|
|
375
407
|
'id' => '1', 'location_id' => 1, 'organization_id' => 1, 'host' => {
|
|
376
|
-
'location_id' => '5'
|
|
377
|
-
}
|
|
408
|
+
'location_id' => '5' }
|
|
378
409
|
) do |par|
|
|
379
|
-
par['id'] == '1' &&
|
|
380
|
-
par['host']['location_id'] == '5' &&
|
|
381
|
-
par['host']['compute_attributes'] == {}
|
|
410
|
+
par['id'] == '1' && par['host']['location_id'] == '5'
|
|
382
411
|
end.returns(updated_host)
|
|
383
412
|
|
|
384
413
|
expected_result = success_result("Host updated.\n")
|
|
@@ -396,12 +425,27 @@ describe 'host update' do
|
|
|
396
425
|
)
|
|
397
426
|
api_expects(:hosts, :update, 'Update host with new owner').with_params(
|
|
398
427
|
'id' => '1', 'location_id' => 1, 'organization_id' => 1, 'host' => {
|
|
399
|
-
|
|
400
|
-
|
|
428
|
+
'owner_id' => '1' }
|
|
429
|
+
) do |par|
|
|
430
|
+
par['id'] == '1' && par['host']['owner_id'] == '1'
|
|
431
|
+
end.returns(updated_host)
|
|
432
|
+
|
|
433
|
+
expected_result = success_result("Host updated.\n")
|
|
434
|
+
|
|
435
|
+
result = run_cmd(cmd + minimal_params + params)
|
|
436
|
+
|
|
437
|
+
assert_cmd(expected_result, result)
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
it 'should update the host owner with id' do
|
|
441
|
+
params = ['--owner-id=1']
|
|
442
|
+
|
|
443
|
+
api_expects(:hosts, :update, 'Update host with new owner').with_params(
|
|
444
|
+
'id' => '1', 'location_id' => 1, 'organization_id' => 1, 'host' => {
|
|
445
|
+
'owner_id' => '1'
|
|
446
|
+
}
|
|
401
447
|
) do |par|
|
|
402
|
-
par['id'] == '1' &&
|
|
403
|
-
par['host']['owner_id'] == '1' &&
|
|
404
|
-
par['host']['compute_attributes'] == {}
|
|
448
|
+
par['id'] == '1' && par['host']['owner_id'] == '1'
|
|
405
449
|
end.returns(updated_host)
|
|
406
450
|
|
|
407
451
|
expected_result = success_result("Host updated.\n")
|
|
@@ -415,7 +459,7 @@ end
|
|
|
415
459
|
describe 'host config reports' do
|
|
416
460
|
let(:report15) do
|
|
417
461
|
{
|
|
418
|
-
|
|
462
|
+
"id" => 15,
|
|
419
463
|
"host_id" => 1,
|
|
420
464
|
"host_name" => "host.example.com",
|
|
421
465
|
"reported_at" => "2017-11-13 03:04:53 UTC",
|
|
@@ -428,7 +472,7 @@ describe 'host config reports' do
|
|
|
428
472
|
end.returns(index_response([report15]))
|
|
429
473
|
|
|
430
474
|
result = run_cmd(['host', 'config-reports', '--id=1'])
|
|
431
|
-
result.exit_code.must_equal HammerCLI::EX_OK
|
|
475
|
+
_(result.exit_code).must_equal HammerCLI::EX_OK
|
|
432
476
|
end
|
|
433
477
|
|
|
434
478
|
it 'filters reports by --name' do
|
|
@@ -437,7 +481,7 @@ describe 'host config reports' do
|
|
|
437
481
|
end.returns(index_response([report15]))
|
|
438
482
|
|
|
439
483
|
result = run_cmd(['host', 'config-reports', '--name=host.example.com'])
|
|
440
|
-
result.exit_code.must_equal HammerCLI::EX_OK
|
|
484
|
+
_(result.exit_code).must_equal HammerCLI::EX_OK
|
|
441
485
|
end
|
|
442
486
|
|
|
443
487
|
it 'prints error or missing --id and --name' do
|
|
@@ -462,7 +506,7 @@ describe 'host config reports' do
|
|
|
462
506
|
end.returns(index_response([report15]))
|
|
463
507
|
|
|
464
508
|
result = run_cmd(['host', 'config-reports', '--name=host.example.com', '--search=reported > "2 hour ago"'])
|
|
465
|
-
result.exit_code.must_equal HammerCLI::EX_OK
|
|
509
|
+
_(result.exit_code).must_equal HammerCLI::EX_OK
|
|
466
510
|
end
|
|
467
511
|
end
|
|
468
512
|
describe 'disassociate host from vm' do
|
|
@@ -491,3 +535,45 @@ describe 'disassociate host from vm' do
|
|
|
491
535
|
assert_cmd(expected_result, result)
|
|
492
536
|
end
|
|
493
537
|
end
|
|
538
|
+
|
|
539
|
+
describe 'run puppetrun for host' do
|
|
540
|
+
let(:cmd) { ['host', 'puppetrun'] }
|
|
541
|
+
let(:params) { ['--id=1'] }
|
|
542
|
+
|
|
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
|
|
547
|
+
|
|
548
|
+
result = run_cmd(cmd)
|
|
549
|
+
assert_cmd(expected_result, result)
|
|
550
|
+
end
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
describe 'list' do
|
|
554
|
+
before do
|
|
555
|
+
@cmd = %w[host list]
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
it 'should run list command with defaults' do
|
|
559
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
|
|
560
|
+
defaults = HammerCLI::Defaults.new(
|
|
561
|
+
{
|
|
562
|
+
organization_id: {
|
|
563
|
+
provider: 'foreman'
|
|
564
|
+
},
|
|
565
|
+
location_id: {
|
|
566
|
+
provider: 'foreman'
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
)
|
|
570
|
+
defaults.stubs(:write_to_file).returns(true)
|
|
571
|
+
defaults.stubs(:providers).returns(providers)
|
|
572
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
|
|
573
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
|
|
574
|
+
api_expects(:hosts, :index, 'List hosts').returns(index_response([{ 'id' => '42' }]))
|
|
575
|
+
|
|
576
|
+
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
|
577
|
+
_(result.exit_code).must_equal HammerCLI::EX_OK
|
|
578
|
+
end
|
|
579
|
+
end
|