hammer_cli_foreman_puppet 0.0.1
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 +7 -0
- data/LICENSE +5 -0
- data/README.md +20 -0
- data/config/foreman_puppet.yml +2 -0
- data/lib/hammer_cli_foreman_puppet.rb +57 -0
- data/lib/hammer_cli_foreman_puppet/associating_commands.rb +1 -0
- data/lib/hammer_cli_foreman_puppet/associating_commands/associating_commands.rb +40 -0
- data/lib/hammer_cli_foreman_puppet/class.rb +54 -0
- data/lib/hammer_cli_foreman_puppet/combination.rb +14 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions.rb +2 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/discovery.rb +8 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/environment.rb +24 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/environments.rb +24 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/host.rb +41 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/hostgroup.rb +47 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/location.rb +9 -0
- data/lib/hammer_cli_foreman_puppet/command_extensions/organization.rb +9 -0
- data/lib/hammer_cli_foreman_puppet/commands.rb +76 -0
- data/lib/hammer_cli_foreman_puppet/config_group.rb +45 -0
- data/lib/hammer_cli_foreman_puppet/discovery.rb +11 -0
- data/lib/hammer_cli_foreman_puppet/environment.rb +59 -0
- data/lib/hammer_cli_foreman_puppet/environment_name_mapping.rb +20 -0
- data/lib/hammer_cli_foreman_puppet/host.rb +70 -0
- data/lib/hammer_cli_foreman_puppet/hostgroup.rb +76 -0
- data/lib/hammer_cli_foreman_puppet/id_resolver.rb +73 -0
- data/lib/hammer_cli_foreman_puppet/location.rb +35 -0
- data/lib/hammer_cli_foreman_puppet/option_sources.rb +1 -0
- data/lib/hammer_cli_foreman_puppet/option_sources/puppet_environment_params.rb +60 -0
- data/lib/hammer_cli_foreman_puppet/organization.rb +35 -0
- data/lib/hammer_cli_foreman_puppet/puppet_references.rb +20 -0
- data/lib/hammer_cli_foreman_puppet/references.rb +22 -0
- data/lib/hammer_cli_foreman_puppet/smart_class_parameter.rb +182 -0
- data/lib/hammer_cli_foreman_puppet/smart_proxy.rb +58 -0
- data/lib/hammer_cli_foreman_puppet/version.rb +5 -0
- data/test/data/2.1/foreman_api.json +1 -0
- data/test/data/3.0/foreman_api.json +1 -0
- data/test/data/README.md +27 -0
- data/test/functional/config_group_test.rb +28 -0
- data/test/functional/host/create_test.rb +164 -0
- data/test/functional/host/update_test.rb +97 -0
- data/test/functional/hostgroup/create_test.rb +149 -0
- data/test/functional/hostgroup/update_test.rb +97 -0
- data/test/functional/proxy_test.rb +86 -0
- data/test/functional/smart_class_parameter_test.rb +97 -0
- data/test/functional/template_test.rb +38 -0
- data/test/functional/test_helper.rb +7 -0
- data/test/test_helper.rb +29 -0
- data/test/unit/apipie_resource_mock.rb +186 -0
- data/test/unit/config_group_test.rb +81 -0
- data/test/unit/helpers/command.rb +163 -0
- data/test/unit/helpers/fake_searchables.rb +19 -0
- data/test/unit/helpers/resource_disabled.rb +24 -0
- data/test/unit/puppet_class_test.rb +72 -0
- data/test/unit/puppet_environment_test.rb +116 -0
- data/test/unit/smart_class_parameter_test.rb +114 -0
- data/test/unit/test_helper.rb +18 -0
- data/test/unit/test_output_adapter.rb +22 -0
- metadata +143 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module HammerCLIForemanPuppet
|
4
|
+
describe Host do
|
5
|
+
describe UpdateCommand do
|
6
|
+
it 'allows environment id' do
|
7
|
+
api_expects(:hosts, :update) do |p|
|
8
|
+
p['host']['environment_id'] == 1 &&
|
9
|
+
p['id'] == '1'
|
10
|
+
end
|
11
|
+
run_cmd(%w(host update --id 1 --puppet-environment-id 1))
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'allows environment name' do
|
15
|
+
api_expects(:environments, :index) do |p|
|
16
|
+
p[:search] = "name = \"env1\""
|
17
|
+
end.returns(index_response([{'id' => 1}]))
|
18
|
+
# FIXME: Called twice because of environment_id being mentioned twice in the docs
|
19
|
+
api_expects(:environments, :index) do |p|
|
20
|
+
p[:search] = "name = \"env1\""
|
21
|
+
end.returns(index_response([{'id' => 1}]))
|
22
|
+
api_expects(:hosts, :update) do |p|
|
23
|
+
p['host']['environment_id'] == 1 &&
|
24
|
+
p['id'] == '1'
|
25
|
+
end
|
26
|
+
run_cmd(%w(host update --id 1 --puppet-environment env1))
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'allows puppet ca proxy id' do
|
30
|
+
api_expects(:hosts, :update).with_params({
|
31
|
+
:id => '1',
|
32
|
+
:host => { :puppet_ca_proxy_id => 1 }
|
33
|
+
})
|
34
|
+
run_cmd(%w(host update --id 1 --puppet-ca-proxy-id 1))
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'allows puppet ca proxy name' do
|
38
|
+
api_expects(:smart_proxies, :index) do |p|
|
39
|
+
p[:search] = "name = \"sp1\""
|
40
|
+
end.returns(index_response([{'id' => 1}]))
|
41
|
+
api_expects(:hosts, :update) do |p|
|
42
|
+
p['host']['puppet_ca_proxy_id'] == 1 &&
|
43
|
+
p['id'] == '1'
|
44
|
+
end
|
45
|
+
run_cmd(%w(host update --id 1 --puppet-ca-proxy sp1))
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'allows puppet class ids' do
|
49
|
+
api_expects(:hosts, :update) do |p|
|
50
|
+
p['host']['puppetclass_ids'] == ['1','2'] &&
|
51
|
+
p['id'] == '1'
|
52
|
+
end
|
53
|
+
run_cmd(%w(host update --id 1 --puppet-class-ids 1,2))
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'allows puppet class names' do
|
57
|
+
api_expects(:puppetclasses, :index) do |p|
|
58
|
+
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
59
|
+
end.returns(index_response('puppetclasses' => [
|
60
|
+
{'id' => 1, 'name' => 'pc1'},
|
61
|
+
{'id' => 2, 'name' => 'pc2'}
|
62
|
+
]))
|
63
|
+
# FIXME: Called twice because of puppetclass_ids being mentioned twice in the docs
|
64
|
+
api_expects(:puppetclasses, :index) do |p|
|
65
|
+
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
66
|
+
end.returns(index_response('puppetclasses' => [
|
67
|
+
{'id' => 1, 'name' => 'pc1'},
|
68
|
+
{'id' => 2, 'name' => 'pc2'}
|
69
|
+
]))
|
70
|
+
api_expects(:hosts, :update) do |p|
|
71
|
+
p['host']['puppetclass_ids'] == [1,2] &&
|
72
|
+
p['id'] == '1'
|
73
|
+
end
|
74
|
+
run_cmd(%w(host update --id 1 --puppet-classes pc1,pc2))
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'allows puppet proxy id' do
|
78
|
+
api_expects(:hosts, :update).with_params({
|
79
|
+
:id => '1',
|
80
|
+
:host => { :puppet_proxy_id => 1 }
|
81
|
+
})
|
82
|
+
run_cmd(%w(host update --id 1 --puppet-proxy-id 1))
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'allows puppet proxy name' do
|
86
|
+
api_expects(:smart_proxies, :index) do |p|
|
87
|
+
p[:search] = "name = \"sp1\""
|
88
|
+
end.returns(index_response([{'id' => 1}]))
|
89
|
+
api_expects(:hosts, :update) do |p|
|
90
|
+
p['host']['puppet_proxy_id'] == 1 &&
|
91
|
+
p['id'] == '1'
|
92
|
+
end
|
93
|
+
run_cmd(%w(host update --id 1 --puppet-proxy sp1))
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module HammerCLIForemanPuppet
|
4
|
+
describe Hostgroup do
|
5
|
+
describe CreateCommand do
|
6
|
+
it 'allows puppet environment id' do
|
7
|
+
api_expects(:hostgroups, :create) do |p|
|
8
|
+
p['hostgroup']['environment_id'] == 1 &&
|
9
|
+
p['hostgroup']['name'] == 'hg1'
|
10
|
+
end
|
11
|
+
run_cmd(%w[hostgroup create --name hg1 --puppet-environment-id 1])
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'allows puppet environment name' do
|
15
|
+
api_expects(:environments, :index) do |p|
|
16
|
+
p[:search] == 'name = "env1"'
|
17
|
+
end.returns(index_response([{ 'id' => 1 }]))
|
18
|
+
# FIXME: Called twice because of environment_id being mentioned twice in the docs
|
19
|
+
api_expects(:environments, :index) do |p|
|
20
|
+
p[:search] == 'name = "env1"'
|
21
|
+
end.returns(index_response([{ 'id' => 1 }]))
|
22
|
+
api_expects(:hostgroups, :create) do |p|
|
23
|
+
p['hostgroup']['environment_id'] == 1 &&
|
24
|
+
p['hostgroup']['name'] == 'hg1'
|
25
|
+
end
|
26
|
+
run_cmd(%w[hostgroup create --name hg1 --puppet-environment env1])
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'allows puppet ca proxy id' do
|
30
|
+
api_expects(:hostgroups, :create).with_params({
|
31
|
+
:hostgroup => {
|
32
|
+
:name => 'hg1',
|
33
|
+
:puppet_ca_proxy_id => 1
|
34
|
+
}
|
35
|
+
})
|
36
|
+
run_cmd(%w(hostgroup create --name hg1 --puppet-ca-proxy-id 1))
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'allows puppet ca proxy name' do
|
40
|
+
api_expects(:smart_proxies, :index) do |p|
|
41
|
+
p[:search] = "name = \"sp1\""
|
42
|
+
end.returns(index_response([{'id' => 1}]))
|
43
|
+
api_expects(:hostgroups, :create) do |p|
|
44
|
+
p['hostgroup']['puppet_ca_proxy_id'] == 1 &&
|
45
|
+
p['hostgroup']['name'] == 'hg1'
|
46
|
+
end
|
47
|
+
run_cmd(%w(hostgroup create --name hg1 --puppet-ca-proxy sp1))
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'allows puppet class ids' do
|
51
|
+
api_expects(:hostgroups, :create) do |p|
|
52
|
+
p['hostgroup']['puppetclass_ids'] == ['1','2'] &&
|
53
|
+
p['hostgroup']['name'] == 'hg1'
|
54
|
+
end
|
55
|
+
run_cmd(%w(hostgroup create --name hg1 --puppet-class-ids 1,2))
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'allows puppet class names' do
|
59
|
+
api_expects(:puppetclasses, :index) do |p|
|
60
|
+
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
61
|
+
end.returns(index_response('puppetclasses' => [
|
62
|
+
{'id' => 1, 'name' => 'pc1'},
|
63
|
+
{'id' => 2, 'name' => 'pc2'}
|
64
|
+
]))
|
65
|
+
# FIXME: Called twice because of puppetclass_ids being mentioned twice in the docs
|
66
|
+
api_expects(:puppetclasses, :index) do |p|
|
67
|
+
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
68
|
+
end.returns(index_response('puppetclasses' => [
|
69
|
+
{'id' => 1, 'name' => 'pc1'},
|
70
|
+
{'id' => 2, 'name' => 'pc2'}
|
71
|
+
]))
|
72
|
+
api_expects(:hostgroups, :create) do |p|
|
73
|
+
p['hostgroup']['puppetclass_ids'] == [1,2] &&
|
74
|
+
p['hostgroup']['name'] == 'hg1'
|
75
|
+
end
|
76
|
+
run_cmd(%w(hostgroup create --name hg1 --puppet-classes pc1,pc2))
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'allows puppet class names that exceeds entries_per_page' do
|
80
|
+
search_objects = []
|
81
|
+
response_objects = []
|
82
|
+
ids = []
|
83
|
+
names = []
|
84
|
+
1100.times.with_object('pc').each do |id, name|
|
85
|
+
next_name = "\"#{name}#{id}\""
|
86
|
+
search_objects << "name = #{next_name}"
|
87
|
+
response_objects << { 'id' => id, 'name' => next_name }
|
88
|
+
ids << id
|
89
|
+
names << next_name
|
90
|
+
end
|
91
|
+
|
92
|
+
api_expects(:puppetclasses, :index) do |p|
|
93
|
+
p[:search] == search_objects.join(' or ') &&
|
94
|
+
p[:page].to_i == 1 &&
|
95
|
+
p[:per_page].to_i == HammerCLIForeman::IdResolver::ALL_PER_PAGE
|
96
|
+
end.returns(
|
97
|
+
index_response('puppetclasses' => response_objects[0...1000]))
|
98
|
+
|
99
|
+
api_expects(:puppetclasses, :index) do |p|
|
100
|
+
p[:search] == search_objects.join(' or ') &&
|
101
|
+
p[:page].to_i == 2 &&
|
102
|
+
p[:per_page].to_i == HammerCLIForeman::IdResolver::ALL_PER_PAGE
|
103
|
+
end.returns(index_response('puppetclasses' => response_objects[1000...1100]))
|
104
|
+
|
105
|
+
# FIXME: Called twice because of puppetclass_ids being mentioned twice in the docs
|
106
|
+
api_expects(:puppetclasses, :index) do |p|
|
107
|
+
p[:search] == search_objects.join(' or ') &&
|
108
|
+
p[:page].to_i == 1 &&
|
109
|
+
p[:per_page].to_i == HammerCLIForeman::IdResolver::ALL_PER_PAGE
|
110
|
+
end.returns(
|
111
|
+
index_response('puppetclasses' => response_objects[0...1000]))
|
112
|
+
|
113
|
+
api_expects(:puppetclasses, :index) do |p|
|
114
|
+
p[:search] == search_objects.join(' or ') &&
|
115
|
+
p[:page].to_i == 2 &&
|
116
|
+
p[:per_page].to_i == HammerCLIForeman::IdResolver::ALL_PER_PAGE
|
117
|
+
end.returns(index_response('puppetclasses' => response_objects[1000...1100]))
|
118
|
+
|
119
|
+
api_expects(:hostgroups, :create) do |p|
|
120
|
+
p['hostgroup']['name'] == 'hg1' &&
|
121
|
+
p['hostgroup']['puppetclass_ids'] == ids
|
122
|
+
end
|
123
|
+
|
124
|
+
run_cmd(%w[hostgroup create --name hg1 --puppet-classes] << names.join(',').tr('"', ''))
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'allows puppet proxy id' do
|
128
|
+
api_expects(:hostgroups, :create).with_params({
|
129
|
+
:hostgroup => {
|
130
|
+
:name => 'hg1',
|
131
|
+
:puppet_proxy_id => 1
|
132
|
+
}
|
133
|
+
})
|
134
|
+
run_cmd(%w(hostgroup create --name hg1 --puppet-proxy-id 1))
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'allows puppet proxy name' do
|
138
|
+
api_expects(:smart_proxies, :index) do |p|
|
139
|
+
p[:search] = "name = \"sp1\""
|
140
|
+
end.returns(index_response([{'id' => 1}]))
|
141
|
+
api_expects(:hostgroups, :create) do |p|
|
142
|
+
p['hostgroup']['puppet_proxy_id'] == 1 &&
|
143
|
+
p['hostgroup']['name'] == 'hg1'
|
144
|
+
end
|
145
|
+
run_cmd(%w(hostgroup create --name hg1 --puppet-proxy sp1))
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module HammerCLIForemanPuppet
|
4
|
+
describe Hostgroup do
|
5
|
+
describe UpdateCommand do
|
6
|
+
it 'allows environment id' do
|
7
|
+
api_expects(:hostgroups, :update) do |p|
|
8
|
+
p['hostgroup']['environment_id'] == 1 &&
|
9
|
+
p['id'] == '1'
|
10
|
+
end
|
11
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-environment-id 1))
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'allows environment name' do
|
15
|
+
api_expects(:environments, :index) do |p|
|
16
|
+
p[:search] = "name = \"env1\""
|
17
|
+
end.returns(index_response([{'id' => 1}]))
|
18
|
+
# FIXME: Called twice because of environment_id being mentioned twice in the docs
|
19
|
+
api_expects(:environments, :index) do |p|
|
20
|
+
p[:search] = "name = \"env1\""
|
21
|
+
end.returns(index_response([{'id' => 1}]))
|
22
|
+
api_expects(:hostgroups, :update) do |p|
|
23
|
+
p['hostgroup']['environment_id'] == 1 &&
|
24
|
+
p['id'] == '1'
|
25
|
+
end
|
26
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-environment env1))
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'allows puppet ca proxy id' do
|
30
|
+
api_expects(:hostgroups, :update).with_params({
|
31
|
+
:id => '1',
|
32
|
+
:hostgroup => { :puppet_ca_proxy_id => 1 }
|
33
|
+
})
|
34
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-ca-proxy-id 1))
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'allows puppet ca proxy name' do
|
38
|
+
api_expects(:smart_proxies, :index) do |p|
|
39
|
+
p[:search] = "name = \"sp1\""
|
40
|
+
end.returns(index_response([{'id' => 1}]))
|
41
|
+
api_expects(:hostgroups, :update) do |p|
|
42
|
+
p['hostgroup']['puppet_ca_proxy_id'] == 1 &&
|
43
|
+
p['id'] == '1'
|
44
|
+
end
|
45
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-ca-proxy sp1))
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'allows puppet class ids' do
|
49
|
+
api_expects(:hostgroups, :update) do |p|
|
50
|
+
p['hostgroup']['puppetclass_ids'] == ['1','2'] &&
|
51
|
+
p['id'] == '1'
|
52
|
+
end
|
53
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-class-ids 1,2))
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'allows puppet class names' do
|
57
|
+
api_expects(:puppetclasses, :index) do |p|
|
58
|
+
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
59
|
+
end.returns(index_response('puppetclasses' => [
|
60
|
+
{'id' => 1, 'name' => 'pc1'},
|
61
|
+
{'id' => 2, 'name' => 'pc2'}
|
62
|
+
]))
|
63
|
+
# FIXME: Called twice because of puppetclass_ids being mentioned twice in the docs
|
64
|
+
api_expects(:puppetclasses, :index) do |p|
|
65
|
+
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
66
|
+
end.returns(index_response('puppetclasses' => [
|
67
|
+
{'id' => 1, 'name' => 'pc1'},
|
68
|
+
{'id' => 2, 'name' => 'pc2'}
|
69
|
+
]))
|
70
|
+
api_expects(:hostgroups, :update) do |p|
|
71
|
+
p['hostgroup']['puppetclass_ids'] == [1,2] &&
|
72
|
+
p['id'] == '1'
|
73
|
+
end
|
74
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-classes pc1,pc2))
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'allows puppet proxy id' do
|
78
|
+
api_expects(:hostgroups, :update).with_params({
|
79
|
+
:id => '1',
|
80
|
+
:hostgroup => { :puppet_proxy_id => 1 }
|
81
|
+
})
|
82
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-proxy-id 1))
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'allows puppet proxy name' do
|
86
|
+
api_expects(:smart_proxies, :index) do |p|
|
87
|
+
p[:search] = "name = \"sp1\""
|
88
|
+
end.returns(index_response([{'id' => 1}]))
|
89
|
+
api_expects(:hostgroups, :update) do |p|
|
90
|
+
p['hostgroup']['puppet_proxy_id'] == 1 &&
|
91
|
+
p['id'] == '1'
|
92
|
+
end
|
93
|
+
run_cmd(%w(hostgroup update --id 1 --puppet-proxy sp1))
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
describe 'proxy' do
|
4
|
+
describe 'import-classes' do
|
5
|
+
let(:cmd) { ['proxy', 'import-classes'] }
|
6
|
+
let(:params) { ['--id=83'] }
|
7
|
+
let(:report) do
|
8
|
+
{
|
9
|
+
'message' => 'Successfully updated environment and puppetclasses from the on-disk puppet installation',
|
10
|
+
'environments_with_new_puppetclasses' => 2,
|
11
|
+
'environments_updated_puppetclasses' => 0,
|
12
|
+
'environments_obsolete' => 0,
|
13
|
+
'environments_ignored' => 0,
|
14
|
+
'results' => [{
|
15
|
+
'name' => 'development',
|
16
|
+
'actions' => [ 'new', 'update' ],
|
17
|
+
'new_puppetclasses' => [
|
18
|
+
'motd',
|
19
|
+
'hammer'
|
20
|
+
],
|
21
|
+
'updated_puppetclasses' => [
|
22
|
+
'stdlib',
|
23
|
+
'vim'
|
24
|
+
]
|
25
|
+
},{
|
26
|
+
'name' => 'production',
|
27
|
+
'actions' => [ 'obsolete', 'ignore' ],
|
28
|
+
'obsolete_puppetclasses' => [
|
29
|
+
'apache'
|
30
|
+
],
|
31
|
+
'ignored_puppetclasses' => [
|
32
|
+
'hammer'
|
33
|
+
]
|
34
|
+
}]
|
35
|
+
}
|
36
|
+
end
|
37
|
+
let(:no_change_report) do
|
38
|
+
{
|
39
|
+
'message' => 'No changes to your environments detected'
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'prints detailed report' do
|
44
|
+
api_expects(:smart_proxies, :import_puppetclasses, 'Import classes')
|
45
|
+
.with_params('id' => '83')
|
46
|
+
.returns(report)
|
47
|
+
|
48
|
+
output = OutputMatcher.new([
|
49
|
+
'Result:',
|
50
|
+
' Successfully updated environment and puppetclasses from the on-disk puppet installation',
|
51
|
+
'Changed environments:',
|
52
|
+
' 1) development',
|
53
|
+
' New classes:',
|
54
|
+
' motd',
|
55
|
+
' hammer',
|
56
|
+
' Updated classes:',
|
57
|
+
' stdlib',
|
58
|
+
' vim',
|
59
|
+
' 2) production',
|
60
|
+
' Removed classes:',
|
61
|
+
' apache',
|
62
|
+
' Ignored classes:',
|
63
|
+
' hammer'
|
64
|
+
])
|
65
|
+
expected_result = success_result(output)
|
66
|
+
|
67
|
+
result = run_cmd(cmd + params)
|
68
|
+
assert_cmd(expected_result, result)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'prints a message when nothig has changed' do
|
72
|
+
api_expects(:smart_proxies, :import_puppetclasses, 'Import classes')
|
73
|
+
.with_params('id' => '83')
|
74
|
+
.returns(no_change_report)
|
75
|
+
|
76
|
+
output = OutputMatcher.new([
|
77
|
+
'Result:',
|
78
|
+
' No changes to your environments detected'
|
79
|
+
])
|
80
|
+
expected_result = success_result(output)
|
81
|
+
|
82
|
+
result = run_cmd(cmd + params)
|
83
|
+
assert_cmd(expected_result, result)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
describe 'sc-params update' do
|
4
|
+
let(:cmd) { %w[sc-param update] }
|
5
|
+
|
6
|
+
it 'does not allow to update parameter name' do
|
7
|
+
params = ['--id=1', '--new-name=name2']
|
8
|
+
|
9
|
+
expected_result = usage_error_result(
|
10
|
+
cmd,
|
11
|
+
"Unrecognised option '--new-name'.",
|
12
|
+
'Could not update the parameter'
|
13
|
+
)
|
14
|
+
|
15
|
+
api_expects_no_call
|
16
|
+
result = run_cmd(cmd + params)
|
17
|
+
assert_cmd(expected_result, result)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'sc-params add-matcher' do
|
22
|
+
let(:cmd) { %w[sc-param add-matcher] }
|
23
|
+
let(:override_value) { 'something' }
|
24
|
+
let(:match) { 'domain = example.com' }
|
25
|
+
let(:puppet_class) { { 'name' => 'motd', 'id' => '1' } }
|
26
|
+
let(:parameter) { { 'name' => 'content', 'id' => '2' } }
|
27
|
+
let(:base) do
|
28
|
+
[
|
29
|
+
'--puppet-class', puppet_class['name'],
|
30
|
+
'--smart-class-parameter', parameter['name'],
|
31
|
+
'--match', match
|
32
|
+
]
|
33
|
+
end
|
34
|
+
|
35
|
+
def api_expects_parameter_search(puppet_class, parameter)
|
36
|
+
api_expects(:puppetclasses, :index, 'Find puppet class') do |par|
|
37
|
+
par[:search] == %Q(name = "#{puppet_class['name']}")
|
38
|
+
end.returns(index_response('motd' => [puppet_class]))
|
39
|
+
|
40
|
+
api_expects(:smart_class_parameters, :index, 'Find smart parameter') do |par|
|
41
|
+
par[:search] == %Q(key = "#{parameter['name']}") &&
|
42
|
+
par[:puppetclass_id] == puppet_class['id']
|
43
|
+
end.returns(index_response([parameter]))
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'allows to set value' do
|
47
|
+
params = ['--value', override_value]
|
48
|
+
expected_result = success_result("Override value created.\n")
|
49
|
+
|
50
|
+
api_expects_parameter_search(puppet_class, parameter)
|
51
|
+
|
52
|
+
api_expects(:override_values, :create, 'Create override value').with_params(
|
53
|
+
smart_class_parameter_id: parameter['id'],
|
54
|
+
override_value: {
|
55
|
+
match: match,
|
56
|
+
value: override_value
|
57
|
+
}
|
58
|
+
)
|
59
|
+
|
60
|
+
result = run_cmd(cmd + base + params)
|
61
|
+
assert_cmd(expected_result, result)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'allows to set value with disabled puppet default' do
|
65
|
+
params = ['--value', override_value, '--omit', false]
|
66
|
+
expected_result = success_result("Override value created.\n")
|
67
|
+
|
68
|
+
api_expects_parameter_search(puppet_class, parameter)
|
69
|
+
|
70
|
+
api_expects(:override_values, :create, 'Create override value').with_params(
|
71
|
+
smart_class_parameter_id: parameter['id'],
|
72
|
+
override_value: {
|
73
|
+
match: match,
|
74
|
+
value: override_value,
|
75
|
+
omit: false
|
76
|
+
}
|
77
|
+
)
|
78
|
+
|
79
|
+
result = run_cmd(cmd + base + params)
|
80
|
+
assert_cmd(expected_result, result)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'does not allow to use puppet default and value at the same time' do
|
84
|
+
params = ['--value', 'something', '--omit', true]
|
85
|
+
|
86
|
+
expected_result = usage_error_result(
|
87
|
+
cmd,
|
88
|
+
'Cannot use --value when --omit is true.',
|
89
|
+
'Could not create the override value'
|
90
|
+
)
|
91
|
+
|
92
|
+
api_expects_parameter_search(puppet_class, parameter)
|
93
|
+
|
94
|
+
result = run_cmd(cmd + base + params)
|
95
|
+
assert_cmd(expected_result, result)
|
96
|
+
end
|
97
|
+
end
|