hammer_cli_foreman 0.16.0 → 0.17.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 +5 -5
- data/doc/release_notes.md +13 -0
- data/lib/hammer_cli_foreman.rb +4 -0
- data/lib/hammer_cli_foreman/common_parameter.rb +4 -0
- data/lib/hammer_cli_foreman/compute_attribute.rb +318 -0
- data/lib/hammer_cli_foreman/compute_profile.rb +61 -0
- data/lib/hammer_cli_foreman/compute_resource.rb +29 -13
- data/lib/hammer_cli_foreman/compute_resource/base.rb +12 -0
- data/lib/hammer_cli_foreman/compute_resource/ec2.rb +24 -0
- data/lib/hammer_cli_foreman/compute_resource/gce.rb +23 -0
- data/lib/hammer_cli_foreman/compute_resource/help_utils.rb +34 -0
- data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +49 -0
- data/lib/hammer_cli_foreman/compute_resource/openstack.rb +25 -0
- data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +47 -0
- data/lib/hammer_cli_foreman/compute_resource/rackspace.rb +22 -0
- data/lib/hammer_cli_foreman/compute_resource/register_compute_resources.rb +20 -0
- data/lib/hammer_cli_foreman/compute_resource/vmware.rb +68 -0
- data/lib/hammer_cli_foreman/host.rb +4 -11
- data/lib/hammer_cli_foreman/hostgroup.rb +9 -0
- data/lib/hammer_cli_foreman/hosts/common_update_help.rb +1 -7
- data/lib/hammer_cli_foreman/hosts/common_update_options.rb +1 -1
- data/lib/hammer_cli_foreman/id_resolver.rb +3 -1
- data/lib/hammer_cli_foreman/parameter.rb +7 -0
- data/lib/hammer_cli_foreman/references.rb +8 -0
- data/lib/hammer_cli_foreman/report_template.rb +79 -0
- data/lib/hammer_cli_foreman/smart_variable.rb +1 -2
- data/lib/hammer_cli_foreman/version.rb +1 -1
- 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/data/1.21/foreman_api.json +1 -0
- data/test/data/1.22/foreman_api.json +1 -0
- data/test/functional/compute_attribute_test.rb +654 -0
- data/test/functional/compute_profile_test.rb +99 -0
- data/test/functional/compute_resource_test.rb +42 -18
- data/test/functional/location_test.rb +6 -5
- data/test/functional/organization_test.rb +6 -5
- data/test/functional/report_template_test.rb +107 -7
- data/test/test_helper.rb +1 -1
- data/test/unit/common_parameter_test.rb +17 -5
- data/test/unit/domain_test.rb +2 -0
- data/test/unit/host_test.rb +1 -0
- data/test/unit/hostgroup_test.rb +14 -1
- data/test/unit/operating_system_test.rb +1 -0
- metadata +25 -20
- data/lib/hammer_cli_foreman/compute_resources/all.rb +0 -7
- data/lib/hammer_cli_foreman/compute_resources/ec2.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/ec2/host_help_extenstion.rb +0 -23
- data/lib/hammer_cli_foreman/compute_resources/gce.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/gce/host_help_extenstion.rb +0 -22
- data/lib/hammer_cli_foreman/compute_resources/libvirt.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/libvirt/host_help_extenstion.rb +0 -35
- data/lib/hammer_cli_foreman/compute_resources/openstack.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/openstack/host_help_extenstion.rb +0 -23
- data/lib/hammer_cli_foreman/compute_resources/ovirt.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/ovirt/host_help_extenstion.rb +0 -36
- data/lib/hammer_cli_foreman/compute_resources/rackspace.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/rackspace/host_help_extenstion.rb +0 -20
- data/lib/hammer_cli_foreman/compute_resources/vmware.rb +0 -9
- data/lib/hammer_cli_foreman/compute_resources/vmware/host_help_extenstion.rb +0 -66
@@ -0,0 +1,99 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
describe "parameters" do
|
3
|
+
|
4
|
+
describe "create compute profile" do
|
5
|
+
before do
|
6
|
+
@cmd = ["compute-profile", "create"]
|
7
|
+
end
|
8
|
+
it 'should create a compute-profile' do
|
9
|
+
params = ['--name=newProfile']
|
10
|
+
api_expects(:compute_profiles, :create, 'Create Compute Profile') do |params|
|
11
|
+
(params['compute_profile']['name'] == 'newProfile')
|
12
|
+
end
|
13
|
+
result = run_cmd(@cmd + params)
|
14
|
+
assert_cmd(success_result("Compute profile created.\n"), result)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "update compute profile" do
|
19
|
+
before do
|
20
|
+
@cmd = ["compute-profile","update"]
|
21
|
+
@compute_profile =
|
22
|
+
{
|
23
|
+
"id": 1,
|
24
|
+
"name": "profile2",
|
25
|
+
"compute_attributes": [{
|
26
|
+
"id": 2,
|
27
|
+
"compute_resource_id": 3,
|
28
|
+
"compute_resource_name": "bla",
|
29
|
+
"provider_friendly_name": "oVirt",
|
30
|
+
"compute_profile_id": 1,
|
31
|
+
"compute_profile_name": "profile2",
|
32
|
+
}]
|
33
|
+
}
|
34
|
+
end
|
35
|
+
it 'update compute profile name' do
|
36
|
+
params = ['--id=1' ,'--new-name=profile2']
|
37
|
+
api_expects(:compute_profiles, :update, 'Update the compute profile').with_params({"name" =>"profile2"}).returns(@compute_profile)
|
38
|
+
result = run_cmd(@cmd + params)
|
39
|
+
assert_cmd(success_result("Compute profile updated.\n"), result)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "delete compute profile" do
|
44
|
+
before do
|
45
|
+
@cmd = ["compute-profile","delete"]
|
46
|
+
@compute_profile =
|
47
|
+
{
|
48
|
+
"id": 3,
|
49
|
+
"name": "profile3",
|
50
|
+
"compute_attributes": [{
|
51
|
+
"id": 4,
|
52
|
+
"compute_resource_id": 3,
|
53
|
+
"compute_resource_name": "bla",
|
54
|
+
"provider_friendly_name": "oVirt",
|
55
|
+
"compute_profile_id": 3,
|
56
|
+
"compute_profile_name": "profile3",
|
57
|
+
}]
|
58
|
+
}
|
59
|
+
end
|
60
|
+
it 'delete compute profile' do
|
61
|
+
params = ['--id=3']
|
62
|
+
api_expects(:compute_profiles, :destroy, :id => 3).returns({})
|
63
|
+
result = run_cmd(@cmd + params)
|
64
|
+
assert_cmd(success_result("Compute profile deleted.\n"), result)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
it "should print error on missing --name or --id" do
|
69
|
+
params = []
|
70
|
+
|
71
|
+
expected_result = usage_error_result(
|
72
|
+
@cmd,
|
73
|
+
"At least one of options --name, --id is required.",
|
74
|
+
"Could not delete the Compute profile"
|
75
|
+
)
|
76
|
+
|
77
|
+
api_expects_no_call
|
78
|
+
result = run_cmd(@cmd + params)
|
79
|
+
assert_cmd(expected_result, result)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should print error when the compute profile doesn't exist" do
|
83
|
+
params = ['--id=200']
|
84
|
+
|
85
|
+
expected_result = not_found_error_result(
|
86
|
+
@cmd,
|
87
|
+
"Resource compute_profile not found by id '200'",
|
88
|
+
"Could not delete the Compute profile"
|
89
|
+
)
|
90
|
+
expected_message = "{ \"error\": {\"message\": \"Error: Resource compute_profile not found by id '200'\" }}"
|
91
|
+
response = HammerCLIForeman.foreman_api.api.send(:create_fake_response, 404,
|
92
|
+
expected_message, "GET", "http://example.com/", {})
|
93
|
+
api_expects(:compute_profiles, :destroy, :id => 3).raises(RestClient::NotFound, response)
|
94
|
+
result = run_cmd(@cmd + params)
|
95
|
+
assert_cmd(expected_result, result)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
@@ -39,10 +39,9 @@ describe 'compute-resource' do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should print error for incorrect/invalid --provider option' do
|
42
|
-
params = %w(--provider=unknown)
|
43
|
-
|
42
|
+
params = %w(--provider=unknown --name=new)
|
44
43
|
expected_result = CommandExpectation.new
|
45
|
-
expected_result.expected_err =
|
44
|
+
expected_result.expected_err = "Could not create the compute resource:\n incorrect/invalid --provider option\n"
|
46
45
|
expected_result.expected_exit_code = HammerCLI::EX_USAGE
|
47
46
|
|
48
47
|
api_expects_no_call
|
@@ -53,12 +52,10 @@ describe 'compute-resource' do
|
|
53
52
|
end
|
54
53
|
|
55
54
|
it 'should print error for blank --provider option' do
|
56
|
-
params = %w(--provider='')
|
57
|
-
|
55
|
+
params = %w(--provider= --name=new'')
|
58
56
|
expected_result = CommandExpectation.new
|
59
|
-
expected_result.expected_err =
|
57
|
+
expected_result.expected_err = "Could not create the compute resource:\n incorrect/invalid --provider option\n"
|
60
58
|
expected_result.expected_exit_code = HammerCLI::EX_USAGE
|
61
|
-
|
62
59
|
api_expects_no_call
|
63
60
|
|
64
61
|
result = run_cmd(@cmd + params)
|
@@ -88,12 +85,12 @@ describe 'compute-resource' do
|
|
88
85
|
end
|
89
86
|
|
90
87
|
it 'should create a compute-resource' do
|
91
|
-
params = %w(--name=my-libvirt --provider=LibVirt --url=qemu+ssh://root@test.foreman.com
|
88
|
+
params = %w(--name=my-libvirt --provider=LibVirt --url=qemu+ssh://root@test.foreman.com)
|
92
89
|
|
93
90
|
api_expects(:compute_resources, :create, 'Create Compute Resource') do |params|
|
94
|
-
(params['compute_resource']['name']
|
95
|
-
(params['compute_resource']['provider']
|
96
|
-
(params['compute_resource']['url']
|
91
|
+
(params['compute_resource']['name'] == 'my-libvirt') &&
|
92
|
+
(params['compute_resource']['provider'] == 'LibVirt') &&
|
93
|
+
(params['compute_resource']['url'] == 'qemu+ssh://root@test.foreman.com')
|
97
94
|
end
|
98
95
|
|
99
96
|
result = run_cmd(@cmd + params)
|
@@ -110,19 +107,46 @@ describe 'compute-resource' do
|
|
110
107
|
--datacenter=ovirt.example.com)
|
111
108
|
|
112
109
|
api_expects(:compute_resources, :create, 'Create Compute Resource') do |params|
|
113
|
-
(params['compute_resource']['name']
|
114
|
-
(params['compute_resource']['provider']
|
115
|
-
(params['compute_resource']['url']
|
116
|
-
(params['compute_resource']['user']
|
117
|
-
(params['compute_resource']['password']
|
118
|
-
(params['compute_resource']['datacenter']
|
110
|
+
(params['compute_resource']['name'] == 'test-ovirt') &&
|
111
|
+
(params['compute_resource']['provider'] == 'ovirt') &&
|
112
|
+
(params['compute_resource']['url'] == 'https://ovirt.example.com/ovirt-engine/api') &&
|
113
|
+
(params['compute_resource']['user'] == 'foreman') &&
|
114
|
+
(params['compute_resource']['password'] == 'changeme') &&
|
115
|
+
(params['compute_resource']['datacenter'] == 'ovirt.example.com')
|
119
116
|
end
|
120
117
|
|
121
118
|
result = run_cmd(@cmd + params)
|
122
119
|
|
123
120
|
assert_cmd(success_result("Compute resource created.\n"), result)
|
124
121
|
end
|
125
|
-
|
122
|
+
|
123
|
+
|
124
|
+
it 'should create a compute-resource ovirt with custom public key' do
|
125
|
+
tempfile = Tempfile.new('ca.pem')
|
126
|
+
tempfile << 'test data'
|
127
|
+
tempfile.close
|
128
|
+
params = %W(--name=test-ovirt
|
129
|
+
--provider=ovirt
|
130
|
+
--url=https://ovirt.example.com/ovirt-engine/api
|
131
|
+
--user=foreman
|
132
|
+
--password=changeme
|
133
|
+
--datacenter=ovirt.example.com
|
134
|
+
--public-key-path=#{tempfile.path})
|
135
|
+
|
136
|
+
api_expects(:compute_resources, :create, 'Create Compute Resource') do |params|
|
137
|
+
(params['compute_resource']['name'] =='test-ovirt') &&
|
138
|
+
(params['compute_resource']['provider'] == 'ovirt') &&
|
139
|
+
(params['compute_resource']['url'] == 'https://ovirt.example.com/ovirt-engine/api') &&
|
140
|
+
(params['compute_resource']['user'] == 'foreman') &&
|
141
|
+
(params['compute_resource']['password'] == 'changeme') &&
|
142
|
+
(params['compute_resource']['datacenter'] == 'ovirt.example.com' &&
|
143
|
+
(params['compute_resource']['public_key'] == 'test data'))
|
144
|
+
end
|
145
|
+
result = run_cmd(@cmd + params)
|
146
|
+
|
147
|
+
assert_cmd(success_result("Compute resource created.\n"), result)
|
148
|
+
end
|
149
|
+
end
|
126
150
|
|
127
151
|
describe 'clusters' do
|
128
152
|
let(:cmd) { base_cmd << 'clusters' }
|
@@ -48,16 +48,16 @@ describe "parameters" do
|
|
48
48
|
assert_cmd(expected_result, result)
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
51
|
it "should create new parameter" do
|
53
|
-
params = ['--name=A', '--value=1', '--location-id=3']
|
52
|
+
params = ['--name=A', '--value=1', '--parameter-type=integer', '--location-id=3']
|
54
53
|
|
55
54
|
api_expects(:parameters, :index, 'Attempt find parameters') do |par|
|
56
55
|
par['location_id'].to_i == 3
|
57
56
|
end.returns(index_response([]))
|
58
57
|
api_expects(:parameters, :create, 'Create parameter') do |par|
|
59
58
|
par['parameter']['name'] == 'A' &&
|
60
|
-
par['parameter']['value'] == '1'
|
59
|
+
par['parameter']['value'] == '1' &&
|
60
|
+
par['parameter']['parameter_type'] == 'integer'
|
61
61
|
end.returns({:name => 'A', :value => '1'})
|
62
62
|
|
63
63
|
result = run_cmd(@cmd + params)
|
@@ -66,7 +66,7 @@ describe "parameters" do
|
|
66
66
|
|
67
67
|
|
68
68
|
it "should update existing parameter" do
|
69
|
-
params = ['--name=A', '--value=1', '--location-id=3']
|
69
|
+
params = ['--name=A', '--value=1', '--parameter-type=integer', '--location-id=3']
|
70
70
|
|
71
71
|
api_expects(:parameters, :index, 'Find parameter') do |par|
|
72
72
|
par['location_id'].to_i == 3
|
@@ -74,7 +74,8 @@ describe "parameters" do
|
|
74
74
|
api_expects(:parameters, :update, 'Update parameter') do |par|
|
75
75
|
par['id'].to_i == 15 &&
|
76
76
|
par['location_id'].to_i == 3 &&
|
77
|
-
par['parameter']['value'] == '1'
|
77
|
+
par['parameter']['value'] == '1' &&
|
78
|
+
par['parameter']['parameter_type'] == 'integer'
|
78
79
|
end.returns({:name => 'A', :value => '1'})
|
79
80
|
|
80
81
|
result = run_cmd(@cmd + params)
|
@@ -48,16 +48,16 @@ describe "parameters" do
|
|
48
48
|
assert_cmd(expected_result, result)
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
51
|
it "should create new parameter" do
|
53
|
-
params = ['--name=A', '--value=1', '--organization-id=3']
|
52
|
+
params = ['--name=A', '--value=1', '--parameter-type=integer', '--organization-id=3']
|
54
53
|
|
55
54
|
api_expects(:parameters, :index, 'Attempt find parameters') do |par|
|
56
55
|
par['organization_id'].to_i == 3
|
57
56
|
end.returns(index_response([]))
|
58
57
|
api_expects(:parameters, :create, 'Create parameter') do |par|
|
59
58
|
par['parameter']['name'] == 'A' &&
|
60
|
-
par['parameter']['value'] == '1'
|
59
|
+
par['parameter']['value'] == '1' &&
|
60
|
+
par['parameter']['parameter_type'] == 'integer'
|
61
61
|
end.returns({:name => 'A', :value => '1'})
|
62
62
|
|
63
63
|
result = run_cmd(@cmd + params)
|
@@ -66,7 +66,7 @@ describe "parameters" do
|
|
66
66
|
|
67
67
|
|
68
68
|
it "should update existing parameter" do
|
69
|
-
params = ['--name=A', '--value=1', '--organization-id=3']
|
69
|
+
params = ['--name=A', '--value=1', '--parameter-type=integer', '--organization-id=3']
|
70
70
|
|
71
71
|
api_expects(:parameters, :index, 'Find parameter') do |par|
|
72
72
|
par['organization_id'].to_i == 3
|
@@ -74,7 +74,8 @@ describe "parameters" do
|
|
74
74
|
api_expects(:parameters, :update, 'Update parameter') do |par|
|
75
75
|
par['id'].to_i == 15 &&
|
76
76
|
par['organization_id'].to_i == 3 &&
|
77
|
-
par['parameter']['value'] == '1'
|
77
|
+
par['parameter']['value'] == '1' &&
|
78
|
+
par['parameter']['parameter_type'] == 'integer'
|
78
79
|
end.returns({:name => 'A', :value => '1'})
|
79
80
|
|
80
81
|
result = run_cmd(@cmd + params)
|
@@ -219,17 +219,25 @@ describe 'report-template' do
|
|
219
219
|
end
|
220
220
|
end
|
221
221
|
|
222
|
+
let(:generated_report_response) do
|
223
|
+
response = mock('ReportResponse')
|
224
|
+
response.stubs(:code).returns(200)
|
225
|
+
response.stubs(:body).returns('Report')
|
226
|
+
response.stubs(:headers).returns({:content_disposition => "filename=\"#{File.basename(tempfile.path)}\""})
|
227
|
+
response
|
228
|
+
end
|
229
|
+
let(:report_not_ready_response) do
|
230
|
+
mock('NoDataResponse', code: 204)
|
231
|
+
end
|
232
|
+
|
222
233
|
describe 'generate' do
|
223
234
|
let(:cmd) { %w(report-template generate) }
|
224
235
|
let(:tempfile) { Tempfile.new('template', '/tmp') }
|
225
236
|
|
226
237
|
it 'generates the report to the file' do
|
227
238
|
params = ['--id=3', '--path=/tmp', '--inputs=Host filter=filter']
|
228
|
-
response = mock()
|
229
|
-
response.stubs(:body).returns('Report')
|
230
|
-
response.stubs(:headers).returns({:content_disposition => "filename=\"#{File.basename(tempfile.path)}\""})
|
231
239
|
api_expects(:report_templates, :generate, 'Generate').with_params(
|
232
|
-
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(
|
240
|
+
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(generated_report_response)
|
233
241
|
|
234
242
|
output = OutputMatcher.new("The response has been saved to #{tempfile.path}")
|
235
243
|
expected_result = success_result(output)
|
@@ -240,10 +248,8 @@ describe 'report-template' do
|
|
240
248
|
|
241
249
|
it 'generates the report to stdout' do
|
242
250
|
params = ['--id=3', '--inputs=Host filter=filter']
|
243
|
-
response = mock()
|
244
|
-
response.stubs(:body).returns('Report')
|
245
251
|
api_expects(:report_templates, :generate, 'Generate').with_params(
|
246
|
-
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(
|
252
|
+
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(generated_report_response)
|
247
253
|
|
248
254
|
output = OutputMatcher.new('Report')
|
249
255
|
expected_result = success_result(output)
|
@@ -251,4 +257,98 @@ describe 'report-template' do
|
|
251
257
|
assert_cmd(expected_result, result)
|
252
258
|
end
|
253
259
|
end
|
260
|
+
|
261
|
+
describe 'schedule' do
|
262
|
+
let(:cmd) { %w(report-template schedule) }
|
263
|
+
let(:tempfile) { Tempfile.new('template', '/tmp') }
|
264
|
+
|
265
|
+
let(:schedule_response) do
|
266
|
+
job_id = 'JOB-UNIQUE-ID'
|
267
|
+
{ 'job_id' => job_id, 'data_url' => "/report_data/#{job_id}" }
|
268
|
+
end
|
269
|
+
|
270
|
+
context 'without --wait' do
|
271
|
+
it 'schedule report and prints out data for getting the result' do
|
272
|
+
params = ['--id=3', '--inputs=Host filter=filter']
|
273
|
+
api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
|
274
|
+
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
|
275
|
+
|
276
|
+
output = OutputMatcher.new(schedule_response['job_id'])
|
277
|
+
expected_result = success_result(output)
|
278
|
+
result = run_cmd(cmd + params)
|
279
|
+
assert_cmd(expected_result, result)
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
context 'with --wait' do
|
284
|
+
it 'generates the report to the file' do
|
285
|
+
params = ['--id=3', '--inputs=Host filter=filter', '--wait', '--path=/tmp']
|
286
|
+
api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
|
287
|
+
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
|
288
|
+
api_expects(:report_templates, :report_data, 'Download report').with_params(
|
289
|
+
'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(generated_report_response)
|
290
|
+
|
291
|
+
output = OutputMatcher.new("The response has been saved to #{tempfile.path}")
|
292
|
+
expected_result = success_result(output)
|
293
|
+
result = run_cmd(cmd + params)
|
294
|
+
assert_cmd(expected_result, result)
|
295
|
+
assert_equal('Report', tempfile.read)
|
296
|
+
end
|
297
|
+
|
298
|
+
it 'generates the report to stdout' do
|
299
|
+
params = ['--id=3', '--inputs=Host filter=filter', '--wait']
|
300
|
+
api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
|
301
|
+
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
|
302
|
+
api_expects(:report_templates, :report_data, 'Download report').with_params(
|
303
|
+
'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(generated_report_response)
|
304
|
+
|
305
|
+
output = OutputMatcher.new('Report')
|
306
|
+
expected_result = success_result(output)
|
307
|
+
result = run_cmd(cmd + params)
|
308
|
+
assert_cmd(expected_result, result)
|
309
|
+
end
|
310
|
+
|
311
|
+
it 'polls for report while not ready' do
|
312
|
+
params = ['--id=3', '--inputs=Host filter=filter', '--wait']
|
313
|
+
api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
|
314
|
+
'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
|
315
|
+
api_expects(:report_templates, :report_data, 'No data first, download second call')
|
316
|
+
.twice.with_params('id' => '3', 'job_id' => 'JOB-UNIQUE-ID')
|
317
|
+
.returns(report_not_ready_response)
|
318
|
+
.then.returns(generated_report_response)
|
319
|
+
|
320
|
+
output = OutputMatcher.new('Report')
|
321
|
+
expected_result = success_result(output)
|
322
|
+
result = run_cmd(cmd + params)
|
323
|
+
assert_cmd(expected_result, result)
|
324
|
+
end
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
describe 'report-data' do
|
329
|
+
let(:cmd) { %w(report-template report-data) }
|
330
|
+
let(:tempfile) { Tempfile.new('template', '/tmp') }
|
331
|
+
let(:params) { ['--id=3', '--path=/tmp', '--job-id=JOB-UNIQUE-ID'] }
|
332
|
+
|
333
|
+
it 'download data if ready' do
|
334
|
+
api_expects(:report_templates, :report_data, 'Download report').with_params(
|
335
|
+
'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(generated_report_response)
|
336
|
+
|
337
|
+
output = OutputMatcher.new("The response has been saved to #{tempfile.path}")
|
338
|
+
expected_result = success_result(output)
|
339
|
+
result = run_cmd(cmd + params)
|
340
|
+
assert_cmd(expected_result, result)
|
341
|
+
assert_equal('Report', tempfile.read)
|
342
|
+
end
|
343
|
+
|
344
|
+
it 'let user know data are not ready' do
|
345
|
+
api_expects(:report_templates, :report_data, 'Download report').with_params(
|
346
|
+
'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(report_not_ready_response)
|
347
|
+
|
348
|
+
output = OutputMatcher.new("The report is not ready yet.")
|
349
|
+
expected_result = CommandExpectation.new(output, '', HammerCLI::EX_TEMPFAIL)
|
350
|
+
result = run_cmd(cmd + params)
|
351
|
+
assert_cmd(expected_result, result)
|
352
|
+
end
|
353
|
+
end
|
254
354
|
end
|
data/test/test_helper.rb
CHANGED
@@ -17,7 +17,7 @@ require "mocha/setup"
|
|
17
17
|
require 'hammer_cli'
|
18
18
|
require 'hammer_cli_foreman/testing/api_expectations'
|
19
19
|
|
20
|
-
FOREMAN_VERSION = Gem::Version.new(ENV['TEST_API_VERSION'] || '1.
|
20
|
+
FOREMAN_VERSION = Gem::Version.new(ENV['TEST_API_VERSION'] || '1.22')
|
21
21
|
|
22
22
|
include HammerCLIForeman::Testing::APIExpectations
|
23
23
|
HammerCLI.context[:api_connection].create('foreman') do
|
@@ -23,7 +23,7 @@ describe HammerCLIForeman::CommonParameter do
|
|
23
23
|
let(:expected_record_count) { count_records(cmd.resource.call(:index)) }
|
24
24
|
|
25
25
|
it_should_print_n_records
|
26
|
-
it_should_print_columns ["Name", "Value"]
|
26
|
+
it_should_print_columns ["Name", "Value", "Type"]
|
27
27
|
end
|
28
28
|
|
29
29
|
end
|
@@ -37,7 +37,7 @@ describe HammerCLIForeman::CommonParameter do
|
|
37
37
|
let(:cmd) { HammerCLIForeman::CommonParameter::SetCommand.new("", ctx) }
|
38
38
|
|
39
39
|
context "parameters" do
|
40
|
-
it_should_accept "name, value and hidden-value", ["--name=param", "--value=val", "--hidden-value=true"]
|
40
|
+
it_should_accept "name, value, parameter-type and hidden-value", ["--name=param", "--value=val", "--parameter-type=string", "--hidden-value=true"]
|
41
41
|
# it_should_fail_with "name missing", ["--value=val"]
|
42
42
|
# it_should_fail_with "value missing", ["--name=param"]
|
43
43
|
# TODO: temporarily disabled, parameters are checked by the api
|
@@ -48,8 +48,8 @@ describe HammerCLIForeman::CommonParameter do
|
|
48
48
|
ResourceMocks.mock_action_calls(
|
49
49
|
[:common_parameters, :index, []],
|
50
50
|
[:common_parameters, :create,
|
51
|
-
{"id" => 1, "name" => "param", "value" => "val", "hidden-value" => false},
|
52
|
-
{'common_parameter' => {'name' => 'param', 'value' => 'val', 'hidden_value' => false}, 'id' => 'param'}])
|
51
|
+
{"id" => 1, "name" => "param", "value" => "val", "parameter-type" => "string", "hidden-value" => false},
|
52
|
+
{'common_parameter' => {'name' => 'param', 'value' => 'val', 'parameter_type' => 'string', 'hidden_value' => false}, 'id' => 'param'}])
|
53
53
|
end
|
54
54
|
with_params ["--name=param", "--value=val", "--hidden-value=false"] do
|
55
55
|
it_should_output "Created parameter [param] with value [val].,1,param", :csv
|
@@ -62,7 +62,7 @@ describe HammerCLIForeman::CommonParameter do
|
|
62
62
|
[:common_parameters, :index, [{'name' => 'param', 'value' => 'test'}]],
|
63
63
|
[:common_parameters, :update,
|
64
64
|
{"id" => 1, "name" => "param", "value" => "val", "hidden-value" => false},
|
65
|
-
{'common_parameter' => {'name' => 'param', 'value' => 'val', 'hidden_value' => false}, 'id' => 'param'}])
|
65
|
+
{'common_parameter' => {'name' => 'param', 'value' => 'val', 'parameter_type' => 'string', 'hidden_value' => false}, 'id' => 'param'}])
|
66
66
|
end
|
67
67
|
|
68
68
|
with_params ["--name=param", "--value=val", "--hidden-value=false"] do
|
@@ -70,6 +70,18 @@ describe HammerCLIForeman::CommonParameter do
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
context "adding params with parameter type" do
|
74
|
+
before :each do
|
75
|
+
ResourceMocks.mock_action_calls(
|
76
|
+
[:common_parameters, :index, []],
|
77
|
+
[:common_parameters, :create,
|
78
|
+
{"id" => 2, "name" => "xyz", "value" => "1", "parameter-type" => "integer", "hidden-value" => false},
|
79
|
+
{'common_parameter' => {'name' => 'xyz', 'value' => '1', 'parameter_type' => 'integer', 'hidden_value' => false}, 'id' => 'xyz'}])
|
80
|
+
end
|
81
|
+
with_params ["--name=xyz", "--value=1", "--parameter-type=integer", "--hidden-value=false"] do
|
82
|
+
it_should_output "Created parameter [xyz] with value [1].,2,xyz", :csv
|
83
|
+
end
|
84
|
+
end
|
73
85
|
end
|
74
86
|
|
75
87
|
|