chef-cli 3.0.1 → 3.0.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: adb138942d756bfa17638b7ba9308e77730ba9b77bb505821d68ee9b7cdc3d2c
4
- data.tar.gz: 4b9d246fe278ec0d4f230d6694e30c64dae2a6b426e4b5020639dc01d0401e98
3
+ metadata.gz: b8a428266246dc22388ebf2714824965912bf1b17fa657bc9ffab99fef6f0a88
4
+ data.tar.gz: aed196c6c1cae0d61a877e6916d5514313c0b186faae75598402fcacfee0c756
5
5
  SHA512:
6
- metadata.gz: 32d8f2e150ff38eefdb26b17fa2b5eda415c697df4324aa3e63ef9545646a346388e4c985cee379773d4311b0421228fbfcb5a8adf3750bbc40a64882a6aacd7
7
- data.tar.gz: 3a455461956da321300c610c56d78d594b789474017807d0c986dabdd45541e1260b123f838d52e179247f2e6ab4ec911dc7e09ba611c3855dd2b9b4a4cbc4fb
6
+ metadata.gz: 343ec04d69d8133e65d887f5e71ab53416ba2a09013df8f530ba70cb2d2f6dcc9b60c8b9ea4c3e445e9a223175681c5d61babc9339ef381483707219d0f5cf71
7
+ data.tar.gz: b1fe61b9c04025de73c654d0c7bd65033a34935198ba53a68a921eb1bf1f2c1d4c7c30e55ee45eb4168e304402f3412fc30e47f8230af22d9c4f802b424a280e
data/Gemfile CHANGED
@@ -15,11 +15,16 @@ group :test do
15
15
  gem "rspec-mocks", "~> 3.8"
16
16
  gem "cookstyle"
17
17
  gem "chefstyle"
18
+ gem "test-kitchen", "> 2.5"
19
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.6")
20
+ gem "chef-zero", "~> 14"
21
+ gem "chef", "~> 15"
22
+ end
18
23
  end
19
24
 
20
25
  group :development do
21
26
  gem "pry"
22
27
  gem "pry-byebug"
23
- gem "pry-stack_explorer"
28
+ gem "pry-stack_explorer", "~> 0.4.0"
24
29
  gem "rb-readline"
25
30
  end
@@ -29,7 +29,7 @@ Gem::Specification.new do |gem|
29
29
  gem.license = "Apache-2.0"
30
30
  gem.homepage = "https://www.chef.io/"
31
31
 
32
- gem.required_ruby_version = ">= 2.6"
32
+ gem.required_ruby_version = ">= 2.5"
33
33
 
34
34
  gem.files = %w{Rakefile LICENSE} +
35
35
  Dir.glob("Gemfile*") + # Includes Gemfile and locks
@@ -47,7 +47,7 @@ Gem::Specification.new do |gem|
47
47
  gem.add_dependency "solve", "< 5.0", "> 2.0"
48
48
  gem.add_dependency "addressable", ">= 2.3.5", "< 2.8"
49
49
  gem.add_dependency "cookbook-omnifetch", "~> 0.5"
50
- gem.add_dependency "diff-lcs", "~> 1.0"
50
+ gem.add_dependency "diff-lcs", ">= 1.0", "< 1.4" # 1.4 changes the output
51
51
  gem.add_dependency "paint", ">= 1", "< 3"
52
52
  gem.add_dependency "license-acceptance", "~> 1.0", ">= 1.0.11"
53
53
  end
@@ -122,7 +122,13 @@ module ChefCLI
122
122
  "Test Kitchen": "kitchen",
123
123
  "Cookstyle": "cookstyle",
124
124
  }.each do |name, cli|
125
- result = Bundler.with_clean_env { shell_out("#{cli} --version") }
125
+ # @todo when Ruby 2.5/2.6 support goes away this if statement can go away
126
+ if Gem::Version.new(Bundler::VERSION) >= Gem::Version.new("2")
127
+ result = Bundler.with_unbundled_env { shell_out("#{cli} --version") }
128
+ else
129
+ result = Bundler.with_clean_env { shell_out("#{cli} --version") }
130
+ end
131
+
126
132
  if result.exitstatus != 0
127
133
  msg("#{name} version: ERROR")
128
134
  else
@@ -28,6 +28,7 @@ module ChefCLI
28
28
  # takes to create a cookbook.
29
29
  class GeneratorDesc < Chef::Resource
30
30
  resource_name :generator_desc
31
+ provides :generator_desc
31
32
 
32
33
  property :message, String, name_property: true
33
34
 
@@ -9,10 +9,7 @@ ehthumbs.db
9
9
  Icon?
10
10
  nohup.out
11
11
  Thumbs.db
12
-
13
- # SASS #
14
- ########
15
- .sass-cache
12
+ .envrc
16
13
 
17
14
  # EDITORS #
18
15
  ###########
@@ -26,11 +23,11 @@ Thumbs.db
26
23
  *.tmproj
27
24
  *~
28
25
  \#*
29
- mkmf.log
30
26
  REVISION
31
27
  TAGS*
32
28
  tmtags
33
29
  .vscode
30
+ .editorconfig
34
31
 
35
32
  ## COMPILED ##
36
33
  ##############
@@ -43,27 +40,32 @@ tmtags
43
40
  *.so
44
41
  */rdoc/
45
42
  a.out
43
+ mkmf.log
46
44
 
47
45
  # Testing #
48
46
  ###########
49
47
  .circleci/*
50
48
  .codeclimate.yml
49
+ .delivery/*
51
50
  .foodcritic
52
51
  .kitchen*
52
+ .mdlrc
53
+ .overcommit.yml
53
54
  .rspec
54
55
  .rubocop.yml
55
56
  .travis.yml
56
57
  .watchr
58
+ .yamllint
57
59
  azure-pipelines.yml
60
+ Dangerfile
58
61
  examples/*
59
62
  features/*
60
63
  Guardfile
61
64
  kitchen.yml*
65
+ mlc_config.json
62
66
  Procfile
63
67
  Rakefile
64
68
  spec/*
65
- spec/*
66
- spec/fixtures/*
67
69
  test/*
68
70
 
69
71
  # SCM #
@@ -73,6 +75,7 @@ test/*
73
75
  .gitconfig
74
76
  .github/*
75
77
  .gitignore
78
+ .gitkeep
76
79
  .gitmodules
77
80
  .svn
78
81
  */.bzr/*
@@ -100,10 +103,11 @@ Policyfile.lock.json
100
103
 
101
104
  # Documentation #
102
105
  #############
103
- CHANGELOG*
106
+ CODE_OF_CONDUCT*
104
107
  CONTRIBUTING*
108
+ documentation/*
105
109
  TESTING*
106
- CODE_OF_CONDUCT*
110
+ UPGRADING*
107
111
 
108
112
  # Vagrant #
109
113
  ###########
@@ -4,4 +4,4 @@ maintainer_email 'dev@chef.io'
4
4
  license 'Apache-2.0'
5
5
  description 'Generates Chef code for Chef CLI'
6
6
  version '0.1.0'
7
- chef_version '>= 14.0'
7
+ chef_version '>= 15.0'
@@ -3,7 +3,7 @@ maintainer '<%= copyright_holder %>'
3
3
  maintainer_email '<%= email %>'
4
4
  license '<%= license %>'
5
5
  version '0.1.0'
6
- chef_version '>= 14.0'
6
+ chef_version '>= 15.0'
7
7
  <% if build_cookbook_parent_is_cookbook -%>
8
8
 
9
9
  depends 'delivery-truck'
@@ -4,7 +4,7 @@ maintainer_email '<%= email %>'
4
4
  license '<%= @spdx_license %>'
5
5
  description 'Installs/Configures <%= cookbook_name %>'
6
6
  version '0.1.0'
7
- chef_version '>= 14.0'
7
+ chef_version '>= 15.0'
8
8
 
9
9
  # The `issues_url` points to the location where issues for this cookbook are
10
10
  # tracked. A `View Issues` link will be displayed on this cookbook's page when
@@ -16,5 +16,5 @@
16
16
  #
17
17
 
18
18
  module ChefCLI
19
- VERSION = "3.0.1".freeze
19
+ VERSION = "3.0.11".freeze
20
20
  end
@@ -0,0 +1,90 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Marc Paradise <marc@chef.io>
4
+ #
5
+ # Copyright (C) 2020, Chef Software Inc
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require "json"
20
+ require "kitchen"
21
+ require "kitchen/provisioner/base"
22
+ require "kitchen/provisioner/chef_zero"
23
+
24
+ module Kitchen
25
+ module Provisioner
26
+ # For use in a provisioner that does not do any run list evaluation or
27
+ # policy/berks file expansion.
28
+ class ChefZeroCaptureSandbox < Chef::CommonSandbox
29
+ def populate
30
+ super
31
+ prepare(:policies)
32
+ prepare(:policy_groups)
33
+ prepare(:cookbook_artifacts)
34
+ end
35
+
36
+ # Override #prepare_cookbooks because we don't want any cookbook resolving to occur
37
+ # via kitchen through berks, policy
38
+ def prepare_cookbooks
39
+ cp_cookbooks
40
+ filter_only_cookbook_files
41
+ end
42
+ end
43
+
44
+ # chef-zero provisioner intended for use with `chef capture`.
45
+ #
46
+ # This provisioner does not do any cookbook dependency
47
+ # resolution and will not pull in external cookbooks. All cookbooks
48
+ # or cookbook artificats + policy data as captured from the live node and are
49
+ # expected to be available for chef-zero to provide to the client.
50
+ class ChefZeroCapture < ChefZero
51
+ # Declaring these ensure that they're available to the sandbox - it's initialized
52
+ # the provider's configoptions.
53
+ default_config :policies_path, "policies"
54
+ default_config :policy_groups_path, "policy_groups"
55
+ default_config :cookbook_artifacts_path, "cookbook_artifacts"
56
+
57
+ # This will load policyfile/berkshelf. We don't want either - the client resolves all
58
+ # dependencies from chef-zero, exactly as preppped in the captured repository.
59
+ def load_needed_dependencies!; end
60
+
61
+ def create_sandbox
62
+ # We have to invoke the the true Base create_sandbox because it does setup that
63
+ # we want. However, we do not want to invoke the create_sandbox inherited from
64
+ # ChefZero/ChefBase - those will create and populate a ChefCommonSandbox instead
65
+ # of a ChefZeroCaptureSandbox.
66
+ m = Base.instance_method(:create_sandbox).bind(self)
67
+ m.call
68
+
69
+ # These behaviors from super we _do_ want, so we need to copy them here.
70
+ prepare_validation_pem
71
+ prepare_config_rb
72
+ ChefZeroCaptureSandbox.new(config, sandbox_path, instance).populate
73
+ end
74
+
75
+ # Overriding the private ProviderChefZero#default_config_rb
76
+ # so that we can add additional configuratoin required for chef-zeor
77
+ # to be able to locate our policies/, policy groups, and cookbook artifacts
78
+ # at run-time.
79
+ def default_config_rb
80
+ cfg = super
81
+ # Need to tell chef-zero about our additional config.
82
+ root = config[:root_path].gsub("$env:TEMP", "\#{ENV['TEMP']\}")
83
+ cfg[:policies_path] = remote_path_join(root, config[:policies_path])
84
+ cfg[:policy_groups_path] = remote_path_join(root, config[:policy_groups_path])
85
+ cfg[:cookbook_artifacts_path] = remote_path_join(root, config[:cookbook_artifacts_path])
86
+ cfg
87
+ end
88
+ end
89
+ end
90
+ end
@@ -198,7 +198,7 @@ describe ChefCLI::Command::GeneratorCommands::BuildCookbook do
198
198
  maintainer_email 'you@example.com'
199
199
  license 'all_rights'
200
200
  version '0.1.0'
201
- chef_version '>= 14.0'
201
+ chef_version '>= 15.0'
202
202
 
203
203
  depends 'delivery-truck'
204
204
  METADATA
@@ -0,0 +1,84 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Marc Paradsie <marc.paradise@gmail.com>
4
+ #
5
+ # Copyright (C) 2020 Chef Software Inc
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require_relative "../../../spec_helper"
20
+
21
+ require "kitchen"
22
+ require "kitchen/provisioner/chef_zero_capture"
23
+
24
+ describe Kitchen::Provisioner::ChefZeroCapture do
25
+ let(:logged_output) { StringIO.new }
26
+ let(:logger) { Logger.new(logged_output) }
27
+ let(:kitchen_root) { Dir.mktmpdir }
28
+
29
+ let(:config) do
30
+ { test_base_path: "/t", base_path: "/b", kitchen_root: kitchen_root, root_path: kitchen_root }
31
+ end
32
+ let(:platform) { double("platform", os_type: nil) }
33
+ let(:suite) { double("suite", name: "fried") }
34
+
35
+ let(:instance_config) do
36
+ double("config", name: "coolbeans", logger: logger, suite: suite, platform: platform)
37
+ end
38
+
39
+ subject do
40
+ p = Kitchen::Provisioner::ChefZeroCapture.new(config)
41
+ p.finalize_config!(instance_config)
42
+ end
43
+
44
+ after do
45
+ FileUtils.remove_entry(kitchen_root)
46
+ end
47
+
48
+ describe "#create_sandbox" do
49
+ let(:sandbox_mock) do
50
+ double("sandbox", populate: nil)
51
+ end
52
+ before do
53
+ allow(Kitchen::Provisioner::ChefZeroCaptureSandbox).to receive(:new).and_return sandbox_mock
54
+ end
55
+
56
+ it "initializes files and populates a ChefZeroCaptureSandbox" do
57
+ expect(subject).to receive(:prepare_validation_pem)
58
+ expect(subject).to receive(:prepare_config_rb)
59
+ expect(sandbox_mock).to receive(:populate)
60
+ subject.create_sandbox
61
+ end
62
+
63
+ after do
64
+ begin
65
+ subject.cleanup_sandbox
66
+ rescue # rubocop:disable Lint/HandleExceptions
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "#default_config_rb" do
72
+ it "contains keys that suggest 'super' was invoked for full config_rb setup" do
73
+ cfg = subject.default_config_rb
74
+ expect(cfg[:node_path]).to eq File.join(kitchen_root, "nodes")
75
+ end
76
+
77
+ it "adds the expected correct config for captured nodes" do
78
+ cfg = subject.default_config_rb
79
+ expect(cfg[:policies_path]).to eq File.join(kitchen_root, "policies")
80
+ expect(cfg[:cookbook_artifacts_path]).to eq File.join(kitchen_root, "cookbook_artifacts")
81
+ expect(cfg[:policy_groups_path]).to eq File.join(kitchen_root, "policy_groups")
82
+ end
83
+ end
84
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-12 00:00:00.000000000 Z
11
+ date: 2020-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-cli
@@ -156,16 +156,22 @@ dependencies:
156
156
  name: diff-lcs
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - "~>"
159
+ - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '1.0'
162
+ - - "<"
163
+ - !ruby/object:Gem::Version
164
+ version: '1.4'
162
165
  type: :runtime
163
166
  prerelease: false
164
167
  version_requirements: !ruby/object:Gem::Requirement
165
168
  requirements:
166
- - - "~>"
169
+ - - ">="
167
170
  - !ruby/object:Gem::Version
168
171
  version: '1.0'
172
+ - - "<"
173
+ - !ruby/object:Gem::Version
174
+ version: '1.4'
169
175
  - !ruby/object:Gem::Dependency
170
176
  name: paint
171
177
  requirement: !ruby/object:Gem::Requirement
@@ -389,6 +395,7 @@ files:
389
395
  - lib/chef-cli/skeletons/code_generator/templates/default/template.erb
390
396
  - lib/chef-cli/ui.rb
391
397
  - lib/chef-cli/version.rb
398
+ - lib/kitchen/provisioner/chef_zero_capture.rb
392
399
  - lib/kitchen/provisioner/policyfile_zero.rb
393
400
  - spec/shared/a_file_generator.rb
394
401
  - spec/shared/a_generated_file.rb
@@ -527,6 +534,7 @@ files:
527
534
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb
528
535
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb
529
536
  - spec/unit/generator_spec.rb
537
+ - spec/unit/kitchen/provisioner/chef_zero_capture_spec.rb
530
538
  - spec/unit/pager_spec.rb
531
539
  - spec/unit/policyfile/artifactory_cookbook_source_spec.rb
532
540
  - spec/unit/policyfile/attribute_merge_checker_spec.rb
@@ -592,7 +600,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
592
600
  requirements:
593
601
  - - ">="
594
602
  - !ruby/object:Gem::Version
595
- version: '2.6'
603
+ version: '2.5'
596
604
  required_rubygems_version: !ruby/object:Gem::Requirement
597
605
  requirements:
598
606
  - - ">="
@@ -741,6 +749,7 @@ test_files:
741
749
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb
742
750
  - spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb
743
751
  - spec/unit/generator_spec.rb
752
+ - spec/unit/kitchen/provisioner/chef_zero_capture_spec.rb
744
753
  - spec/unit/pager_spec.rb
745
754
  - spec/unit/policyfile/artifactory_cookbook_source_spec.rb
746
755
  - spec/unit/policyfile/attribute_merge_checker_spec.rb