kitchen-cinc 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9dbea4a2f910479545091595aef0b7883ff27b2d032fe578f2ff179c6476280
4
- data.tar.gz: '09f995bb4384586dea60dd4e42bc7652f6f17094a7a52710859450d0803c6751'
3
+ metadata.gz: 115d50991f3f3f920ad92ced7a40e4a71a978cda43d3fd2084673e930737134b
4
+ data.tar.gz: 0c216f2187fa74179d179a114eef55e45ddaa20274b54e837fc76b6729540b77
5
5
  SHA512:
6
- metadata.gz: e178911a90dd93080108beff536294011e419760e21d2e44bd2dfde46712e3af21927b37a52cc0ada4018210ad00378821694f4ea715404d0c86014e3e73254d
7
- data.tar.gz: d3b465b83a40e2477b7e17a85b24e6a0b3d50c0b6948575757c850dde4ffa485239611cd0470e17e753c36809399996f63c06222a596d50c34b3f4a81e76f4e8
6
+ metadata.gz: 1d9ff891fa13ea3faab81f13cc3ea80e603b1d61de1f368f208f99bf31d2c166593e8f839226fd9f7bcf0e1cf95d5ac6c426b7030f2af2144c648d96024819eb
7
+ data.tar.gz: e9d5c0b571cf11275c374baa0d2cb840af46bcd5c0093cd495c9b6973b5adebb194599b2afd34d9bc38970ba796a0a2638196a027f3cb4ef26e9fc4b533ee514
@@ -0,0 +1,58 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require "kitchen/util"
17
+
18
+ module Kitchen
19
+ module Provisioner
20
+ # Helpers for the chef_* alias provisioners shipped by kitchen-cinc.
21
+ #
22
+ # The chef_* names have a priority order across kitchen-* gems:
23
+ # kitchen-chef-enterprise > kitchen-cinc > kitchen-omnibus-chef. When a
24
+ # higher-priority gem is installed, our chef_* alias should yield to it
25
+ # rather than claim the constant. Users who explicitly want kitchen-cinc
26
+ # behavior should use the cinc_* names in kitchen.yml.
27
+ module ChefAliasLoader
28
+ module_function
29
+
30
+ # If kitchen-chef-enterprise is installed, attempt to load its
31
+ # implementation of the named provisioner from its absolute path
32
+ # (bypasses $LOAD_PATH ambiguity). Returns true if enterprise's
33
+ # version was loaded and now owns the constant; false otherwise,
34
+ # in which case the caller should register its own subclass.
35
+ #
36
+ # @param const_name [Symbol] the unqualified constant under
37
+ # Kitchen::Provisioner (e.g. :ChefInfra)
38
+ # @return [Boolean]
39
+ def defer_to_enterprise(const_name)
40
+ spec = enterprise_spec
41
+ return false unless spec
42
+
43
+ file_name = Kitchen::Util.snake_case(const_name.to_s)
44
+ path = File.join(spec.gem_dir, "lib", "kitchen", "provisioner", "#{file_name}.rb")
45
+ return false unless File.exist?(path)
46
+
47
+ require path
48
+ Kitchen::Provisioner.const_defined?(const_name, false)
49
+ end
50
+
51
+ def enterprise_spec
52
+ Gem::Specification.find_by_name("kitchen-chef-enterprise")
53
+ rescue Gem::LoadError
54
+ nil
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,37 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require_relative "cinc_apply"
17
+ require_relative "chef_alias_loader"
18
+
19
+ # See chef_infra.rb for the priority and remove_const rationale.
20
+ unless Kitchen::Provisioner::ChefAliasLoader.defer_to_enterprise(:ChefApply)
21
+ if Kitchen::Provisioner.const_defined?(:ChefApply, false) &&
22
+ !(Kitchen::Provisioner::ChefApply <= Kitchen::Provisioner::CincApply)
23
+ Kitchen::Provisioner.send(:remove_const, :ChefApply)
24
+ end
25
+
26
+ module Kitchen
27
+ module Provisioner
28
+ # Alias for CincApply. Lets existing kitchen.yml files using
29
+ # `provisioner: name: chef_apply` transparently use Cinc Apply.
30
+ class ChefApply < CincApply
31
+ kitchen_provisioner_api_version 2
32
+
33
+ plugin_version Kitchen::VERSION
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,44 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require_relative "cinc_infra"
17
+ require_relative "chef_alias_loader"
18
+
19
+ # Priority order for chef_* names: kitchen-chef-enterprise > kitchen-cinc >
20
+ # kitchen-omnibus-chef. If enterprise is installed, defer to it. Users who
21
+ # explicitly want kitchen-cinc should use cinc_infra in kitchen.yml.
22
+ unless Kitchen::Provisioner::ChefAliasLoader.defer_to_enterprise(:ChefInfra)
23
+ # If kitchen-omnibus-chef has already defined Kitchen::Provisioner::ChefInfra
24
+ # with a non-CincInfra parent (i.e. omnibus-chef's gem loaded first), drop
25
+ # the binding before we redefine — otherwise Ruby raises TypeError on
26
+ # superclass mismatch. The two gems coordinate via this swap; see the
27
+ # kitchen-omnibus-chef factory in chef_infra.rb#new for the other side.
28
+ if Kitchen::Provisioner.const_defined?(:ChefInfra, false) &&
29
+ !(Kitchen::Provisioner::ChefInfra <= Kitchen::Provisioner::CincInfra)
30
+ Kitchen::Provisioner.send(:remove_const, :ChefInfra)
31
+ end
32
+
33
+ module Kitchen
34
+ module Provisioner
35
+ # Alias for CincInfra. Lets existing kitchen.yml files using
36
+ # `provisioner: name: chef_infra` transparently use Cinc Client.
37
+ class ChefInfra < CincInfra
38
+ kitchen_provisioner_api_version 2
39
+
40
+ plugin_version Kitchen::VERSION
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,37 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require_relative "cinc_solo"
17
+ require_relative "chef_alias_loader"
18
+
19
+ # See chef_infra.rb for the priority and remove_const rationale.
20
+ unless Kitchen::Provisioner::ChefAliasLoader.defer_to_enterprise(:ChefSolo)
21
+ if Kitchen::Provisioner.const_defined?(:ChefSolo, false) &&
22
+ !(Kitchen::Provisioner::ChefSolo <= Kitchen::Provisioner::CincSolo)
23
+ Kitchen::Provisioner.send(:remove_const, :ChefSolo)
24
+ end
25
+
26
+ module Kitchen
27
+ module Provisioner
28
+ # Alias for CincSolo. Lets existing kitchen.yml files using
29
+ # `provisioner: name: chef_solo` transparently use Cinc Solo.
30
+ class ChefSolo < CincSolo
31
+ kitchen_provisioner_api_version 2
32
+
33
+ plugin_version Kitchen::VERSION
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require_relative "cinc_target"
17
+ require_relative "chef_alias_loader"
18
+
19
+ # See chef_infra.rb for the priority and remove_const rationale.
20
+ unless Kitchen::Provisioner::ChefAliasLoader.defer_to_enterprise(:ChefTarget)
21
+ if Kitchen::Provisioner.const_defined?(:ChefTarget, false) &&
22
+ !(Kitchen::Provisioner::ChefTarget <= Kitchen::Provisioner::CincTarget)
23
+ Kitchen::Provisioner.send(:remove_const, :ChefTarget)
24
+ end
25
+
26
+ module Kitchen
27
+ module Provisioner
28
+ # Alias for CincTarget. Lets existing kitchen.yml files using
29
+ # `provisioner: name: chef_target` transparently use Cinc Target Mode.
30
+ class ChefTarget < CincTarget
31
+ kitchen_provisioner_api_version 2
32
+
33
+ plugin_version Kitchen::VERSION
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,39 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require_relative "cinc_infra"
17
+ require_relative "chef_alias_loader"
18
+
19
+ # Deprecated alias for ChefInfra (which itself is an alias for CincInfra).
20
+ # Provided for backward compatibility with kitchen.yml files using the
21
+ # legacy chef_zero provisioner name.
22
+ #
23
+ # See chef_infra.rb for the priority and remove_const rationale.
24
+ unless Kitchen::Provisioner::ChefAliasLoader.defer_to_enterprise(:ChefZero)
25
+ if Kitchen::Provisioner.const_defined?(:ChefZero, false) &&
26
+ !(Kitchen::Provisioner::ChefZero <= Kitchen::Provisioner::CincInfra)
27
+ Kitchen::Provisioner.send(:remove_const, :ChefZero)
28
+ end
29
+
30
+ module Kitchen
31
+ module Provisioner
32
+ class ChefZero < CincInfra
33
+ kitchen_provisioner_api_version 2
34
+
35
+ plugin_version Kitchen::VERSION
36
+ end
37
+ end
38
+ end
39
+ end
@@ -132,6 +132,26 @@ module Kitchen
132
132
 
133
133
  default_config :checksum
134
134
 
135
+ # Mapping of deprecated chef_*-prefixed config keys to their cinc_*
136
+ # equivalents. Lets existing kitchen.yml files using the chef_* names
137
+ # keep working when migrating from kitchen-omnibus-chef to kitchen-cinc.
138
+ CHEF_TO_CINC_KEYS = {
139
+ require_chef_omnibus: :require_cinc_omnibus,
140
+ chef_omnibus_url: :cinc_omnibus_url,
141
+ chef_omnibus_install_options: :cinc_omnibus_install_options,
142
+ chef_omnibus_root: :cinc_omnibus_root,
143
+ chef_client_path: :cinc_client_path,
144
+ chef_solo_path: :cinc_solo_path,
145
+ chef_apply_path: :cinc_apply_path,
146
+ chef_zero_host: :cinc_zero_host,
147
+ chef_zero_port: :cinc_zero_port,
148
+ }.freeze
149
+
150
+ CHEF_TO_CINC_KEYS.each do |chef_key, cinc_key|
151
+ deprecate_config_for chef_key,
152
+ "The '#{chef_key}' attribute is deprecated; use '#{cinc_key}' instead."
153
+ end
154
+
135
155
  # Reads the local Chef::Config object (if present). We do this because
136
156
  # we want to start bringing Cinc config and Cinc Workstation config closer
137
157
  # together. For example, we want to configure proxy settings in 1
@@ -139,6 +159,17 @@ module Kitchen
139
159
  #
140
160
  # @param config [Hash] initial provided configuration
141
161
  def initialize(config = {})
162
+ # Forward any chef_*-prefixed keys to their cinc_* equivalents so that
163
+ # the cinc_* default_config blocks see them as already-set and skip
164
+ # their default values. The chef_* key is preserved so that
165
+ # deprecate_config_for can emit a warning via `kitchen doctor`.
166
+ CHEF_TO_CINC_KEYS.each do |chef_key, cinc_key|
167
+ next unless config.key?(chef_key)
168
+ next if config.key?(cinc_key)
169
+
170
+ config[cinc_key] = config[chef_key]
171
+ end
172
+
142
173
  super(config)
143
174
 
144
175
  if defined?(ChefConfig::WorkstationConfigLoader)
@@ -1,5 +1,5 @@
1
1
  module Kitchen
2
2
  module Provisioner
3
- CINC_VERSION = "1.0.0".freeze
3
+ CINC_VERSION = "1.1.0".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # See chef_infra.rb in this directory for the full rationale.
17
+ require "kitchen/provisioner/cinc_apply"
18
+
19
+ if Kitchen::Provisioner.const_defined?(:ChefApply, false) &&
20
+ !(Kitchen::Provisioner::ChefApply <= Kitchen::Provisioner::CincApply)
21
+ Kitchen::Provisioner.send(:remove_const, :ChefApply)
22
+ end
23
+
24
+ require_relative "../../kitchen/provisioner/chef_apply"
@@ -0,0 +1,32 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # Loaded by kitchen-omnibus-chef's factory pattern when it detects
17
+ # kitchen-cinc is installed. See:
18
+ # https://github.com/test-kitchen/kitchen-omnibus-chef/blob/main/lib/kitchen/provisioner/chef_infra.rb
19
+ #
20
+ # Drops the omnibus-chef ChefInfra binding (if present) so we can rebind to
21
+ # our subclass of CincInfra. The require_relative below resolves to our
22
+ # absolute file path, which is a different $LOADED_FEATURES entry from
23
+ # omnibus-chef's same-logical-named file — so it actually loads even when
24
+ # `require "kitchen/provisioner/chef_infra"` would short-circuit.
25
+ require "kitchen/provisioner/cinc_infra"
26
+
27
+ if Kitchen::Provisioner.const_defined?(:ChefInfra, false) &&
28
+ !(Kitchen::Provisioner::ChefInfra <= Kitchen::Provisioner::CincInfra)
29
+ Kitchen::Provisioner.send(:remove_const, :ChefInfra)
30
+ end
31
+
32
+ require_relative "../../kitchen/provisioner/chef_infra"
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # See chef_infra.rb in this directory for the full rationale.
17
+ require "kitchen/provisioner/cinc_solo"
18
+
19
+ if Kitchen::Provisioner.const_defined?(:ChefSolo, false) &&
20
+ !(Kitchen::Provisioner::ChefSolo <= Kitchen::Provisioner::CincSolo)
21
+ Kitchen::Provisioner.send(:remove_const, :ChefSolo)
22
+ end
23
+
24
+ require_relative "../../kitchen/provisioner/chef_solo"
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # See chef_infra.rb in this directory for the full rationale.
17
+ require "kitchen/provisioner/cinc_target"
18
+
19
+ if Kitchen::Provisioner.const_defined?(:ChefTarget, false) &&
20
+ !(Kitchen::Provisioner::ChefTarget <= Kitchen::Provisioner::CincTarget)
21
+ Kitchen::Provisioner.send(:remove_const, :ChefTarget)
22
+ end
23
+
24
+ require_relative "../../kitchen/provisioner/chef_target"
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (C) 2026, Oregon State University
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # See chef_infra.rb in this directory for the full rationale.
17
+ require "kitchen/provisioner/cinc_infra"
18
+
19
+ if Kitchen::Provisioner.const_defined?(:ChefZero, false) &&
20
+ !(Kitchen::Provisioner::ChefZero <= Kitchen::Provisioner::CincInfra)
21
+ Kitchen::Provisioner.send(:remove_const, :ChefZero)
22
+ end
23
+
24
+ require_relative "../../kitchen/provisioner/chef_zero"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-cinc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cinc Project
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-04-24 00:00:00.000000000 Z
12
+ date: 2026-05-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-kitchen
@@ -71,6 +71,17 @@ files:
71
71
  - LICENSE
72
72
  - Rakefile
73
73
  - kitchen-cinc.gemspec
74
+ - lib/kitchen-cinc/provisioner/chef_apply.rb
75
+ - lib/kitchen-cinc/provisioner/chef_infra.rb
76
+ - lib/kitchen-cinc/provisioner/chef_solo.rb
77
+ - lib/kitchen-cinc/provisioner/chef_target.rb
78
+ - lib/kitchen-cinc/provisioner/chef_zero.rb
79
+ - lib/kitchen/provisioner/chef_alias_loader.rb
80
+ - lib/kitchen/provisioner/chef_apply.rb
81
+ - lib/kitchen/provisioner/chef_infra.rb
82
+ - lib/kitchen/provisioner/chef_solo.rb
83
+ - lib/kitchen/provisioner/chef_target.rb
84
+ - lib/kitchen/provisioner/chef_zero.rb
74
85
  - lib/kitchen/provisioner/cinc/berkshelf.rb
75
86
  - lib/kitchen/provisioner/cinc/common_sandbox.rb
76
87
  - lib/kitchen/provisioner/cinc/policyfile.rb