chef 12.11.18 → 12.12.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/acceptance/Gemfile.lock +22 -23
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +2 -41
- data/lib/chef/application/solo.rb +7 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/data_collector.rb +79 -43
- data/lib/chef/data_collector/messages.rb +4 -33
- data/lib/chef/data_collector/messages/helpers.rb +2 -2
- data/lib/chef/data_collector/resource_report.rb +21 -11
- data/lib/chef/decorator/unchain.rb +43 -0
- data/lib/chef/exceptions.rb +5 -0
- data/lib/chef/http.rb +5 -5
- data/lib/chef/knife/cookbook_create.rb +4 -0
- data/lib/chef/knife/cookbook_site_download.rb +8 -1
- data/lib/chef/knife/cookbook_site_install.rb +8 -0
- data/lib/chef/knife/cookbook_site_list.rb +8 -1
- data/lib/chef/knife/cookbook_site_search.rb +8 -1
- data/lib/chef/knife/cookbook_site_share.rb +8 -1
- data/lib/chef/knife/cookbook_site_show.rb +14 -3
- data/lib/chef/knife/cookbook_site_unshare.rb +8 -1
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/supermarket_download.rb +33 -0
- data/lib/chef/knife/supermarket_install.rb +33 -0
- data/lib/chef/knife/supermarket_list.rb +33 -0
- data/lib/chef/knife/supermarket_search.rb +33 -0
- data/lib/chef/knife/supermarket_share.rb +33 -0
- data/lib/chef/knife/supermarket_show.rb +33 -0
- data/lib/chef/knife/supermarket_unshare.rb +33 -0
- data/lib/chef/node.rb +13 -32
- data/lib/chef/node/attribute.rb +123 -70
- data/lib/chef/node/attribute_collections.rb +9 -130
- data/lib/chef/node/common_api.rb +124 -0
- data/lib/chef/node/immutable_collections.rb +27 -2
- data/lib/chef/property.rb +6 -2
- data/lib/chef/provider.rb +4 -5
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/directory.rb +3 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +9 -3
- data/lib/chef/provider/package/windows/exe.rb +2 -5
- data/lib/chef/provider/powershell_script.rb +1 -1
- data/lib/chef/provider/remote_directory.rb +2 -0
- data/lib/chef/resource.rb +22 -17
- data/lib/chef/resource_builder.rb +9 -4
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -4
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -3
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -3
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -3
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -3
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -3
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -3
- data/spec/functional/assets/chocolatey_feed/test-A.1.0.nupkg +0 -0
- data/spec/functional/assets/chocolatey_feed/test-A.1.5.nupkg +0 -0
- data/spec/functional/assets/chocolatey_feed/test-A.2.0.nupkg +0 -0
- data/spec/functional/assets/chocolatey_feed/test-B.1.0.nupkg +0 -0
- data/spec/functional/resource/dsc_script_spec.rb +1 -0
- data/spec/functional/resource/package_spec.rb +1 -1
- data/spec/functional/resource/template_spec.rb +3 -3
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/integration/knife/client_bulk_delete_spec.rb +130 -0
- data/spec/integration/knife/client_create_spec.rb +69 -0
- data/spec/integration/knife/client_delete_spec.rb +63 -0
- data/spec/integration/knife/client_key_create_spec.rb +65 -0
- data/spec/integration/knife/client_key_delete_spec.rb +42 -0
- data/spec/integration/knife/client_key_list_spec.rb +60 -0
- data/spec/integration/knife/client_key_show_spec.rb +44 -0
- data/spec/integration/knife/client_list_spec.rb +48 -0
- data/spec/integration/knife/client_show_spec.rb +36 -0
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -0
- data/spec/integration/knife/cookbook_download_spec.rb +95 -0
- data/spec/integration/knife/cookbook_list_spec.rb +54 -0
- data/spec/integration/knife/cookbook_show_spec.rb +159 -0
- data/spec/integration/knife/cookbook_upload_spec.rb +90 -0
- data/spec/integration/knife/data_bag_create_spec.rb +58 -0
- data/spec/integration/knife/data_bag_delete_spec.rb +58 -0
- data/spec/integration/knife/data_bag_from_file_spec.rb +115 -0
- data/spec/integration/knife/data_bag_list_spec.rb +43 -0
- data/spec/integration/knife/data_bag_show_spec.rb +53 -0
- data/spec/integration/knife/environment_compare_spec.rb +74 -0
- data/spec/integration/knife/environment_create_spec.rb +40 -0
- data/spec/integration/knife/environment_delete_spec.rb +36 -0
- data/spec/integration/knife/environment_from_file_spec.rb +115 -0
- data/spec/integration/knife/environment_list_spec.rb +41 -0
- data/spec/integration/knife/environment_show_spec.rb +56 -0
- data/spec/integration/knife/node_bulk_delete_spec.rb +51 -0
- data/spec/integration/knife/node_create_spec.rb +46 -0
- data/spec/integration/knife/node_delete_spec.rb +47 -0
- data/spec/integration/knife/node_environment_set_spec.rb +42 -0
- data/spec/integration/knife/node_from_file_spec.rb +58 -0
- data/spec/integration/knife/node_list_spec.rb +44 -0
- data/spec/integration/knife/node_run_list_add_spec.rb +53 -0
- data/spec/integration/knife/node_run_list_remove_spec.rb +35 -0
- data/spec/integration/knife/node_run_list_set_spec.rb +40 -0
- data/spec/integration/knife/node_show_spec.rb +35 -0
- data/spec/integration/knife/role_bulk_delete_spec.rb +51 -0
- data/spec/integration/knife/role_create_spec.rb +40 -0
- data/spec/integration/knife/role_delete_spec.rb +47 -0
- data/spec/integration/knife/role_from_file_spec.rb +95 -0
- data/spec/integration/knife/role_list_spec.rb +44 -0
- data/spec/integration/knife/role_show_spec.rb +50 -0
- data/spec/support/shared/integration/knife_support.rb +10 -3
- data/spec/unit/application/solo_spec.rb +7 -0
- data/spec/unit/cookbook_version_spec.rb +4 -4
- data/spec/unit/data_collector/messages/helpers_spec.rb +3 -7
- data/spec/unit/data_collector/messages_spec.rb +28 -45
- data/spec/unit/data_collector_spec.rb +40 -47
- data/spec/unit/knife/cookbook_create_spec.rb +1 -0
- data/spec/unit/knife/cookbook_site_download_spec.rb +1 -0
- data/spec/unit/knife/node_environment_set_spec.rb +0 -24
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -25
- data/spec/unit/node/attribute_spec.rb +7 -9
- data/spec/unit/node/immutable_collections_spec.rb +4 -0
- data/spec/unit/node/vivid_mash_spec.rb +344 -0
- data/spec/unit/node_spec.rb +115 -26
- data/spec/unit/provider/directory_spec.rb +11 -1
- data/spec/unit/provider/package/windows/exe_spec.rb +14 -9
- data/spec/unit/provider/powershell_script_spec.rb +4 -4
- data/spec/unit/provider/remote_directory_spec.rb +15 -0
- data/spec/unit/recipe_spec.rb +31 -6
- data/spec/unit/run_context_spec.rb +2 -2
- data/spec/unit/shell/shell_session_spec.rb +1 -1
- data/tasks/dependencies.rb +0 -2
- metadata +55 -786
- data/acceptance/.bundle/config +0 -2
- data/acceptance/basics/.kitchen/logs/chef-current-install-ubuntu-1404.log +0 -2
- data/acceptance/basics/.kitchen/logs/kitchen.log +0 -3
- data/acceptance/fips/.kitchen/logs/fips-integration-centos-6.log +0 -3
- data/acceptance/fips/.kitchen/logs/fips-integration-windows-2012r2.log +0 -3
- data/acceptance/fips/.kitchen/logs/fips-unit-functional-centos-6.log +0 -3
- data/acceptance/fips/.kitchen/logs/fips-unit-functional-windows-2012r2.log +0 -3
- data/acceptance/fips/.kitchen/logs/kitchen.log +0 -6
- data/acceptance/trivial/.kitchen/logs/chef-current-install-windows-2012r2.log +0 -2
- data/acceptance/trivial/.kitchen/logs/kitchen.log +0 -3
- data/acceptance/windows-service/.kitchen/logs/chef-windows-service-windows-2012r2.log +0 -2
- data/acceptance/windows-service/.kitchen/logs/kitchen.log +0 -3
@@ -0,0 +1,54 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2013-2016, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "support/shared/integration/integration_helper"
|
18
|
+
require "support/shared/context/config"
|
19
|
+
require "chef/knife/cookbook_list"
|
20
|
+
|
21
|
+
describe "knife cookbook list", :workstation do
|
22
|
+
include IntegrationSupport
|
23
|
+
include KnifeSupport
|
24
|
+
|
25
|
+
include_context "default config options"
|
26
|
+
|
27
|
+
when_the_chef_server "has a cookbook" do
|
28
|
+
before do
|
29
|
+
cookbook "x", "1.0.0"
|
30
|
+
cookbook "x", "0.6.5"
|
31
|
+
cookbook "x", "0.6.0"
|
32
|
+
cookbook "y", "0.6.5"
|
33
|
+
cookbook "y", "0.6.0"
|
34
|
+
cookbook "z", "0.6.5"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "knife cookbook list shows all the cookbooks" do
|
38
|
+
knife("cookbook list").should_succeed <<EOM
|
39
|
+
x 1.0.0
|
40
|
+
y 0.6.5
|
41
|
+
z 0.6.5
|
42
|
+
EOM
|
43
|
+
end
|
44
|
+
|
45
|
+
it "knife cookbook list -a shows all the versions of all the cookbooks" do
|
46
|
+
knife("cookbook list -a").should_succeed <<EOM
|
47
|
+
x 1.0.0 0.6.5 0.6.0
|
48
|
+
y 0.6.5 0.6.0
|
49
|
+
z 0.6.5
|
50
|
+
EOM
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2013-2016, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "support/shared/integration/integration_helper"
|
18
|
+
require "support/shared/context/config"
|
19
|
+
require "chef/knife/cookbook_show"
|
20
|
+
|
21
|
+
describe "knife cookbook show", :workstation do
|
22
|
+
include IntegrationSupport
|
23
|
+
include KnifeSupport
|
24
|
+
|
25
|
+
include_context "default config options"
|
26
|
+
|
27
|
+
when_the_chef_server "has a cookbook" do
|
28
|
+
before do
|
29
|
+
cookbook "x", "1.0.0", { "recipes" => { "default.rb" => "file 'n'", "x.rb" => "" } }
|
30
|
+
cookbook "x", "0.6.5"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "knife cookbook show x shows all the versions" do
|
34
|
+
knife("cookbook show x").should_succeed "x 1.0.0 0.6.5\n"
|
35
|
+
end
|
36
|
+
|
37
|
+
# rubocop:disable Style/TrailingWhitespace
|
38
|
+
it "knife cookbook show x 1.0.0 shows the correct version" do
|
39
|
+
knife("cookbook show x 1.0.0").should_succeed <<EOM
|
40
|
+
attributes:
|
41
|
+
chef_type: cookbook_version
|
42
|
+
cookbook_name: x
|
43
|
+
definitions:
|
44
|
+
files:
|
45
|
+
frozen?: false
|
46
|
+
json_class: Chef::CookbookVersion
|
47
|
+
libraries:
|
48
|
+
metadata:
|
49
|
+
attributes:
|
50
|
+
chef_versions:
|
51
|
+
conflicting:
|
52
|
+
dependencies:
|
53
|
+
description:
|
54
|
+
gems:
|
55
|
+
groupings:
|
56
|
+
issues_url:
|
57
|
+
license: All rights reserved
|
58
|
+
long_description:
|
59
|
+
maintainer:
|
60
|
+
maintainer_email:
|
61
|
+
name: x
|
62
|
+
ohai_versions:
|
63
|
+
platforms:
|
64
|
+
privacy: false
|
65
|
+
providing:
|
66
|
+
recipes:
|
67
|
+
recommendations:
|
68
|
+
replacing:
|
69
|
+
source_url:
|
70
|
+
suggestions:
|
71
|
+
version: 1.0.0
|
72
|
+
name: x-1.0.0
|
73
|
+
providers:
|
74
|
+
recipes:
|
75
|
+
checksum: 4631b34cf58de10c5ef1304889941b2e
|
76
|
+
name: default.rb
|
77
|
+
path: recipes/default.rb
|
78
|
+
specificity: default
|
79
|
+
url: http://127.0.0.1:8900/file_store/checksums/4631b34cf58de10c5ef1304889941b2e
|
80
|
+
|
81
|
+
checksum: d41d8cd98f00b204e9800998ecf8427e
|
82
|
+
name: x.rb
|
83
|
+
path: recipes/x.rb
|
84
|
+
specificity: default
|
85
|
+
url: http://127.0.0.1:8900/file_store/checksums/d41d8cd98f00b204e9800998ecf8427e
|
86
|
+
resources:
|
87
|
+
root_files:
|
88
|
+
checksum: 8226671f751ba102dea6a6b6bd32fa8d
|
89
|
+
name: metadata.rb
|
90
|
+
path: metadata.rb
|
91
|
+
specificity: default
|
92
|
+
url: http://127.0.0.1:8900/file_store/checksums/8226671f751ba102dea6a6b6bd32fa8d
|
93
|
+
templates:
|
94
|
+
version: 1.0.0
|
95
|
+
EOM
|
96
|
+
end
|
97
|
+
|
98
|
+
it "knife cookbook show x 1.0.0 metadata shows the metadata" do
|
99
|
+
knife("cookbook show x 1.0.0 metadata").should_succeed <<EOM
|
100
|
+
attributes:
|
101
|
+
chef_versions:
|
102
|
+
conflicting:
|
103
|
+
dependencies:
|
104
|
+
description:
|
105
|
+
gems:
|
106
|
+
groupings:
|
107
|
+
issues_url:
|
108
|
+
license: All rights reserved
|
109
|
+
long_description:
|
110
|
+
maintainer:
|
111
|
+
maintainer_email:
|
112
|
+
name: x
|
113
|
+
ohai_versions:
|
114
|
+
platforms:
|
115
|
+
privacy: false
|
116
|
+
providing:
|
117
|
+
recipes:
|
118
|
+
recommendations:
|
119
|
+
replacing:
|
120
|
+
source_url:
|
121
|
+
suggestions:
|
122
|
+
version: 1.0.0
|
123
|
+
EOM
|
124
|
+
end
|
125
|
+
|
126
|
+
it "knife cookbook show x 1.0.0 recipes shows all the recipes" do
|
127
|
+
knife("cookbook show x 1.0.0 recipes").should_succeed <<EOM
|
128
|
+
checksum: 4631b34cf58de10c5ef1304889941b2e
|
129
|
+
name: default.rb
|
130
|
+
path: recipes/default.rb
|
131
|
+
specificity: default
|
132
|
+
url: http://127.0.0.1:8900/file_store/checksums/4631b34cf58de10c5ef1304889941b2e
|
133
|
+
|
134
|
+
checksum: d41d8cd98f00b204e9800998ecf8427e
|
135
|
+
name: x.rb
|
136
|
+
path: recipes/x.rb
|
137
|
+
specificity: default
|
138
|
+
url: http://127.0.0.1:8900/file_store/checksums/d41d8cd98f00b204e9800998ecf8427e
|
139
|
+
EOM
|
140
|
+
end
|
141
|
+
# rubocop:enable Style/TrailingWhitespace
|
142
|
+
|
143
|
+
it "knife cookbook show x 1.0.0 recipes default.rb shows the default recipe" do
|
144
|
+
knife("cookbook show x 1.0.0 recipes default.rb").should_succeed "file 'n'\n"
|
145
|
+
end
|
146
|
+
|
147
|
+
it "knife cookbook show with a non-existent file displays an error" do
|
148
|
+
expect { knife("cookbook show x 1.0.0 recipes moose.rb") }.to raise_error(Chef::Exceptions::FileNotFound)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "knife cookbook show with a non-existent version displays an error" do
|
152
|
+
expect { knife("cookbook show x 1.0.1") }.to raise_error(Net::HTTPServerException)
|
153
|
+
end
|
154
|
+
|
155
|
+
it "knife cookbook show with a non-existent cookbook displays an error" do
|
156
|
+
expect { knife("cookbook show y") }.to raise_error(Net::HTTPServerException)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2013-2016, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "support/shared/integration/integration_helper"
|
18
|
+
require "support/shared/context/config"
|
19
|
+
require "chef/knife/cookbook_upload"
|
20
|
+
|
21
|
+
describe "knife cookbook upload", :workstation do
|
22
|
+
include IntegrationSupport
|
23
|
+
include KnifeSupport
|
24
|
+
|
25
|
+
include_context "default config options"
|
26
|
+
|
27
|
+
let (:cb_dir) { "#{@repository_dir}/cookbooks" }
|
28
|
+
|
29
|
+
when_the_chef_server "is empty" do
|
30
|
+
when_the_repository "has a cookbook" do
|
31
|
+
before do
|
32
|
+
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "knife cookbook upload uploads the cookbook" do
|
36
|
+
knife("cookbook upload x -o #{cb_dir}").should_succeed stderr: <<EOM
|
37
|
+
Uploading x [1.0.0]
|
38
|
+
Uploaded 1 cookbook.
|
39
|
+
EOM
|
40
|
+
end
|
41
|
+
|
42
|
+
it "knife cookbook upload --freeze uploads and freezes the cookbook" do
|
43
|
+
knife("cookbook upload x -o #{cb_dir} --freeze").should_succeed stderr: <<EOM
|
44
|
+
Uploading x [1.0.0]
|
45
|
+
Uploaded 1 cookbook.
|
46
|
+
EOM
|
47
|
+
# Modify the file, attempt to reupload
|
48
|
+
file "cookbooks/x/metadata.rb", 'name "x"; version "1.0.0"#different'
|
49
|
+
knife("cookbook upload x -o #{cb_dir} --freeze").should_fail stderr: <<EOM
|
50
|
+
Uploading x [1.0.0]
|
51
|
+
ERROR: Version 1.0.0 of cookbook x is frozen. Use --force to override.
|
52
|
+
WARNING: Not updating version constraints for x in the environment as the cookbook is frozen.
|
53
|
+
ERROR: Failed to upload 1 cookbook.
|
54
|
+
EOM
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
when_the_repository "has a cookbook that depends on another cookbook" do
|
59
|
+
before do
|
60
|
+
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0", "\ndepends 'y'")
|
61
|
+
file "cookbooks/y/metadata.rb", cb_metadata("y", "1.0.0")
|
62
|
+
end
|
63
|
+
|
64
|
+
it "knife cookbook upload --include-dependencies uploads both cookbooks" do
|
65
|
+
knife("cookbook upload --include-dependencies x -o #{cb_dir}").should_succeed stderr: <<EOM
|
66
|
+
Uploading x [1.0.0]
|
67
|
+
Uploading y [1.0.0]
|
68
|
+
Uploaded 2 cookbooks.
|
69
|
+
EOM
|
70
|
+
end
|
71
|
+
|
72
|
+
it "knife cookbook upload fails due to missing dependencies" do
|
73
|
+
knife("cookbook upload x -o #{cb_dir}").should_fail stderr: <<EOM
|
74
|
+
Uploading x [1.0.0]
|
75
|
+
ERROR: Cookbook x depends on cookbooks which are not currently
|
76
|
+
ERROR: being uploaded and cannot be found on the server.
|
77
|
+
ERROR: The missing cookbook(s) are: 'y' version '>= 0.0.0'
|
78
|
+
EOM
|
79
|
+
end
|
80
|
+
|
81
|
+
it "knife cookbook upload -a uploads both cookbooks" do
|
82
|
+
knife("cookbook upload -a -o #{cb_dir}").should_succeed stderr: <<EOM
|
83
|
+
Uploading x [1.0.0]
|
84
|
+
Uploading y [1.0.0]
|
85
|
+
Uploaded all cookbooks.
|
86
|
+
EOM
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2013-2016, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "support/shared/integration/integration_helper"
|
18
|
+
require "support/shared/context/config"
|
19
|
+
require "chef/knife/data_bag_create"
|
20
|
+
|
21
|
+
describe "knife data bag create", :workstation do
|
22
|
+
include IntegrationSupport
|
23
|
+
include KnifeSupport
|
24
|
+
|
25
|
+
include_context "default config options"
|
26
|
+
|
27
|
+
let(:err) { "Created data_bag[foo]\n" }
|
28
|
+
let(:out) { "Created data_bag_item[bar]\n" }
|
29
|
+
let(:exists) { "Data bag foo already exists\n" }
|
30
|
+
|
31
|
+
when_the_chef_server "is empty" do
|
32
|
+
it "creates a new data bag" do
|
33
|
+
knife("data bag create foo").should_succeed stderr: err
|
34
|
+
end
|
35
|
+
|
36
|
+
it "creates a new data bag and item" do
|
37
|
+
pending "Deprecation warning must get fixed"
|
38
|
+
knife("data bag create foo bar").should_succeed stdout: out, stderr: err
|
39
|
+
end
|
40
|
+
|
41
|
+
it "adds a new item to an existing bag" do
|
42
|
+
pending "Deprecation warning must get fixed"
|
43
|
+
knife("data bag create foo").should_succeed stderr: err
|
44
|
+
knife("data bag create foo bar").should_succeed stdout: out, stderr: exists
|
45
|
+
end
|
46
|
+
|
47
|
+
it "refuses to add an existing data bag" do
|
48
|
+
knife("data bag create foo").should_succeed stderr: err
|
49
|
+
knife("data bag create foo").should_succeed stderr: exists
|
50
|
+
end
|
51
|
+
|
52
|
+
it "fails to add an existing item" do
|
53
|
+
pending "Deprecation warning must get fixed"
|
54
|
+
knife("data bag create foo bar").should_succeed stdout: out, stderr: err
|
55
|
+
expect { knife("data bag create foo bar") }.to raise_error(Net::HTTPServerException)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2013-2016, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "support/shared/integration/integration_helper"
|
18
|
+
require "support/shared/context/config"
|
19
|
+
require "chef/knife/data_bag_delete"
|
20
|
+
|
21
|
+
describe "knife data bag delete", :workstation do
|
22
|
+
include IntegrationSupport
|
23
|
+
include KnifeSupport
|
24
|
+
|
25
|
+
include_context "default config options"
|
26
|
+
|
27
|
+
when_the_chef_server "has some data bags" do
|
28
|
+
before do
|
29
|
+
data_bag "x", {}
|
30
|
+
data_bag "canteloupe", {}
|
31
|
+
data_bag "rocket", { "falcon9" => { heavy: "true" }, "atlas" => {}, "ariane" => {} }
|
32
|
+
end
|
33
|
+
|
34
|
+
it "with an empty data bag" do
|
35
|
+
knife("data bag delete canteloupe", input: "y").should_succeed <<EOM
|
36
|
+
Do you really want to delete canteloupe? (Y/N) Deleted data_bag[canteloupe]
|
37
|
+
EOM
|
38
|
+
end
|
39
|
+
|
40
|
+
it "with a bag with some items" do
|
41
|
+
knife("data bag delete rocket", input: "y").should_succeed <<EOM
|
42
|
+
Do you really want to delete rocket? (Y/N) Deleted data_bag[rocket]
|
43
|
+
EOM
|
44
|
+
end
|
45
|
+
|
46
|
+
it "with a single item" do
|
47
|
+
knife("data bag delete rocket falcon9", input: "y").should_succeed <<EOM
|
48
|
+
Do you really want to delete falcon9? (Y/N) Deleted data_bag_item[falcon9]
|
49
|
+
EOM
|
50
|
+
end
|
51
|
+
|
52
|
+
it "choosing not to delete" do
|
53
|
+
knife("data bag delete rocket falcon9", input: "n").should_succeed <<EOM, exit_code: 3
|
54
|
+
Do you really want to delete falcon9? (Y/N) You said no, so I'm done here.
|
55
|
+
EOM
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2013-2016, Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "support/shared/integration/integration_helper"
|
18
|
+
require "support/shared/context/config"
|
19
|
+
|
20
|
+
describe "knife data bag from file", :workstation do
|
21
|
+
include IntegrationSupport
|
22
|
+
include KnifeSupport
|
23
|
+
|
24
|
+
include_context "default config options"
|
25
|
+
|
26
|
+
let (:db_dir) { "#{@repository_dir}/data_bags" }
|
27
|
+
|
28
|
+
when_the_chef_server "has an empty data bag" do
|
29
|
+
before do
|
30
|
+
data_bag "foo", {}
|
31
|
+
data_bag "bar", {}
|
32
|
+
end
|
33
|
+
|
34
|
+
when_the_repository "has some data bag items" do
|
35
|
+
before do
|
36
|
+
file "data_bags/foo/bar.json", { "id" => "bar", "foo" => "bar " }
|
37
|
+
file "data_bags/foo/bzr.json", { "id" => "bzr", "foo" => "bar " }
|
38
|
+
file "data_bags/foo/cat.json", { "id" => "cat", "foo" => "bar " }
|
39
|
+
file "data_bags/foo/dog.json", { "id" => "dog", "foo" => "bar " }
|
40
|
+
file "data_bags/foo/encrypted.json", <<EOM
|
41
|
+
{
|
42
|
+
"id": "encrypted",
|
43
|
+
"password": {
|
44
|
+
"encrypted_data": "H6ab5RY9a9JAkS8A0RCMspXtOJh0ai8cNeA4Q3gLO8s=\\n",
|
45
|
+
"iv": "uWKKKxrJgtELlGMCOLJdkA==\\n",
|
46
|
+
"version": 1,
|
47
|
+
"cipher": "aes-256-cbc"
|
48
|
+
}
|
49
|
+
}
|
50
|
+
EOM
|
51
|
+
file "data_bags/bar/round_trip.json", <<EOM
|
52
|
+
{
|
53
|
+
"name": "data_bag_item_bar_round_trip",
|
54
|
+
"json_class": "Chef::DataBagItem",
|
55
|
+
"chef_type": "data_bag_item",
|
56
|
+
"data_bag": "bar",
|
57
|
+
"raw_data": {
|
58
|
+
"id": "round_trip",
|
59
|
+
"root_password": {
|
60
|
+
"encrypted_data": "noDOsTpsTAZlTU5sprhmYZzUDfr8du7hH/zRDOjRAmoTJHTZyfYoR221EOOW\\nXJ1D\\n",
|
61
|
+
"iv": "Bnqhfy6n0Hx1wCe9pxHLoA==\\n",
|
62
|
+
"version": 1,
|
63
|
+
"cipher": "aes-256-cbc"
|
64
|
+
},
|
65
|
+
"admin_password": {
|
66
|
+
"encrypted_data": "TcC7dU1gx6OnE5Ab4i/k42UEf0Nnr7cAyuTHId/LNjNOwpNf7XZc27DQSjuy\\nHPlt\\n",
|
67
|
+
"iv": "+TAWJuPWCI2+WB8lGJAyvw==\\n",
|
68
|
+
"version": 1,
|
69
|
+
"cipher": "aes-256-cbc"
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
EOM
|
74
|
+
end
|
75
|
+
|
76
|
+
it "uploads a single file" do
|
77
|
+
knife("data bag from file foo #{db_dir}/foo/bar.json").should_succeed stderr: <<EOM
|
78
|
+
Updated data_bag_item[foo::bar]
|
79
|
+
EOM
|
80
|
+
end
|
81
|
+
|
82
|
+
it "uploads a single encrypted file" do
|
83
|
+
knife("data bag from file foo #{db_dir}/foo/encrypted.json").should_succeed stderr: <<EOM
|
84
|
+
Updated data_bag_item[foo::encrypted]
|
85
|
+
EOM
|
86
|
+
end
|
87
|
+
|
88
|
+
it "uploads a file in chef's internal format" do
|
89
|
+
pending "chef/chef#4815"
|
90
|
+
knife("data bag from file bar #{db_dir}/bar/round_trip.json").should_succeed stderr: <<EOM
|
91
|
+
Updated data_bag_item[bar::round_trip]
|
92
|
+
EOM
|
93
|
+
end
|
94
|
+
|
95
|
+
it "uploads many files" do
|
96
|
+
knife("data bag from file foo #{db_dir}/foo/bar.json #{db_dir}/foo/bzr.json").should_succeed stderr: <<EOM
|
97
|
+
Updated data_bag_item[foo::bar]
|
98
|
+
Updated data_bag_item[foo::bzr]
|
99
|
+
EOM
|
100
|
+
end
|
101
|
+
|
102
|
+
it "uploads a whole directory" do
|
103
|
+
knife("data bag from file foo #{db_dir}/foo")
|
104
|
+
knife("data bag show foo").should_succeed <<EOM
|
105
|
+
bar
|
106
|
+
bzr
|
107
|
+
cat
|
108
|
+
dog
|
109
|
+
encrypted
|
110
|
+
EOM
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|