hammer_cli_foreman 0.16.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|