chef 18.5.0 → 18.6.2
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 +4 -4
- data/Gemfile +8 -3
- data/chef-universal-mingw-ucrt.gemspec +1 -1
- data/chef.gemspec +2 -2
- data/lib/chef/application/client.rb +0 -12
- data/lib/chef/client.rb +1 -10
- data/lib/chef/compliance/runner.rb +0 -10
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -2
- data/lib/chef/cookbook/synchronizer.rb +0 -5
- data/lib/chef/exceptions.rb +1 -1
- data/lib/chef/file_access_control/unix.rb +9 -9
- data/lib/chef/file_content_management/deploy.rb +1 -4
- data/lib/chef/mixin/file_class.rb +1 -3
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/mixin/{homebrew_user.rb → homebrew.rb} +13 -16
- data/lib/chef/mixin/openssl_helper.rb +1 -12
- data/lib/chef/provider/cookbook_file.rb +1 -1
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/directory.rb +15 -15
- data/lib/chef/provider/file.rb +29 -42
- data/lib/chef/provider/git.rb +8 -8
- data/lib/chef/provider/group/aix.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +1 -1
- data/lib/chef/provider/group/gpasswd.rb +2 -2
- data/lib/chef/provider/group/groupadd.rb +1 -1
- data/lib/chef/provider/group/groupmod.rb +2 -2
- data/lib/chef/provider/group/pw.rb +2 -2
- data/lib/chef/provider/group/solaris.rb +2 -2
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/group.rb +1 -1
- data/lib/chef/provider/http_request.rb +3 -2
- data/lib/chef/provider/ifconfig/aix.rb +1 -1
- data/lib/chef/provider/ifconfig/debian.rb +3 -3
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +1 -1
- data/lib/chef/provider/link.rb +10 -10
- data/lib/chef/provider/mount/aix.rb +4 -4
- data/lib/chef/provider/mount/linux.rb +4 -4
- data/lib/chef/provider/mount/mount.rb +11 -11
- data/lib/chef/provider/package/apt.rb +11 -2
- data/lib/chef/provider/package/bff.rb +3 -3
- data/lib/chef/provider/package/chocolatey.rb +2 -2
- data/lib/chef/provider/package/dpkg.rb +3 -3
- data/lib/chef/provider/package/freebsd/base.rb +1 -1
- data/lib/chef/provider/package/habitat.rb +3 -5
- data/lib/chef/provider/package/homebrew.rb +6 -9
- data/lib/chef/provider/package/ips.rb +2 -2
- data/lib/chef/provider/package/openbsd.rb +2 -3
- data/lib/chef/provider/package/pacman.rb +4 -4
- data/lib/chef/provider/package/paludis.rb +2 -2
- data/lib/chef/provider/package/portage.rb +1 -1
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +4 -0
- data/lib/chef/provider/package/smartos.rb +2 -2
- data/lib/chef/provider/package/snap.rb +1 -1
- data/lib/chef/provider/package/solaris.rb +4 -4
- data/lib/chef/provider/package/zypper.rb +4 -4
- data/lib/chef/provider/package.rb +1 -1
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/http.rb +3 -2
- data/lib/chef/provider/remote_file.rb +1 -1
- data/lib/chef/provider/route.rb +9 -9
- data/lib/chef/provider/service/aix.rb +1 -1
- data/lib/chef/provider/service/aixinit.rb +4 -4
- data/lib/chef/provider/service/arch.rb +6 -6
- data/lib/chef/provider/service/debian.rb +5 -5
- data/lib/chef/provider/service/freebsd.rb +7 -7
- data/lib/chef/provider/service/gentoo.rb +5 -5
- data/lib/chef/provider/service/init.rb +2 -2
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/invokercd.rb +1 -1
- data/lib/chef/provider/service/openbsd.rb +7 -7
- data/lib/chef/provider/service/redhat.rb +3 -3
- data/lib/chef/provider/service/solaris.rb +2 -2
- data/lib/chef/provider/service/systemd.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +2 -2
- data/lib/chef/provider/subversion.rb +8 -8
- data/lib/chef/provider/systemd_unit.rb +3 -3
- data/lib/chef/provider/template.rb +1 -1
- data/lib/chef/provider/user/aix.rb +3 -3
- data/lib/chef/provider/user/linux.rb +2 -7
- data/lib/chef/provider/user/pw.rb +3 -3
- data/lib/chef/provider/user/solaris.rb +7 -7
- data/lib/chef/provider/user/windows.rb +5 -0
- data/lib/chef/provider/user.rb +8 -7
- data/lib/chef/provider/yum_repository.rb +3 -1
- data/lib/chef/provider/zypper_repository.rb +1 -1
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/resource/alternatives.rb +2 -2
- data/lib/chef/resource/apt_preference.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +9 -7
- data/lib/chef/resource/apt_update.rb +3 -3
- data/lib/chef/resource/bff_package.rb +1 -1
- data/lib/chef/resource/chef_client_config.rb +3 -2
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +1 -1
- data/lib/chef/resource/cron/cron.rb +1 -1
- data/lib/chef/resource/cron/cron_d.rb +1 -1
- data/lib/chef/resource/cron_access.rb +1 -1
- data/lib/chef/resource/directory.rb +1 -1
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/file/verification/json.rb +1 -1
- data/lib/chef/resource/file/verification/systemd_unit.rb +1 -1
- data/lib/chef/resource/file/verification/yaml.rb +1 -1
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/freebsd_package.rb +2 -2
- data/lib/chef/resource/group.rb +1 -1
- data/lib/chef/resource/habitat/habitat_package.rb +1 -1
- data/lib/chef/resource/habitat/habitat_sup.rb +9 -9
- data/lib/chef/resource/habitat/habitat_sup_systemd.rb +2 -2
- data/lib/chef/resource/habitat_install.rb +3 -3
- data/lib/chef/resource/homebrew_cask.rb +19 -30
- data/lib/chef/resource/homebrew_tap.rb +32 -17
- data/lib/chef/resource/homebrew_update.rb +4 -4
- data/lib/chef/resource/hostname.rb +10 -11
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/ifconfig.rb +1 -1
- data/lib/chef/resource/inspec_input.rb +1 -3
- data/lib/chef/resource/inspec_waiver.rb +1 -1
- data/lib/chef/resource/inspec_waiver_file_entry.rb +1 -1
- data/lib/chef/resource/ips_package.rb +2 -2
- data/lib/chef/resource/kernel_module.rb +2 -2
- data/lib/chef/resource/link.rb +1 -1
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/notify_group.rb +1 -1
- data/lib/chef/resource/ohai.rb +1 -1
- data/lib/chef/resource/ohai_hint.rb +1 -1
- data/lib/chef/resource/openbsd_package.rb +2 -2
- data/lib/chef/resource/package.rb +1 -1
- data/lib/chef/resource/pacman_package.rb +1 -1
- data/lib/chef/resource/paludis_package.rb +1 -1
- data/lib/chef/resource/portage_package.rb +1 -1
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rhsm_errata.rb +1 -1
- data/lib/chef/resource/rhsm_errata_level.rb +1 -1
- data/lib/chef/resource/rhsm_register.rb +1 -1
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +9 -8
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +1 -1
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/scm/subversion.rb +1 -1
- data/lib/chef/resource/selinux/common_helpers.rb +1 -1
- data/lib/chef/resource/selinux_boolean.rb +1 -1
- data/lib/chef/resource/selinux_fcontext.rb +3 -3
- data/lib/chef/resource/selinux_install.rb +1 -1
- data/lib/chef/resource/selinux_login.rb +1 -1
- data/lib/chef/resource/selinux_module.rb +5 -5
- data/lib/chef/resource/selinux_permissive.rb +2 -2
- data/lib/chef/resource/selinux_port.rb +2 -2
- data/lib/chef/resource/selinux_state.rb +2 -2
- data/lib/chef/resource/selinux_user.rb +1 -1
- data/lib/chef/resource/smartos_package.rb +2 -2
- data/lib/chef/resource/snap_package.rb +1 -1
- data/lib/chef/resource/solaris_package.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sudo.rb +5 -5
- data/lib/chef/resource/support/client.erb +3 -2
- data/lib/chef/resource/swap_file.rb +6 -6
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/systemd_unit.rb +1 -1
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +5 -5
- data/lib/chef/resource/user/aix_user.rb +2 -2
- data/lib/chef/resource/user/linux_user.rb +2 -2
- data/lib/chef/resource/user/pw_user.rb +2 -2
- data/lib/chef/resource/user/solaris_user.rb +2 -2
- data/lib/chef/resource/user_ulimit.rb +1 -1
- data/lib/chef/resource/yum_repository.rb +1 -1
- data/lib/chef/resource/zypper_package.rb +2 -2
- data/lib/chef/resource/zypper_repository.rb +2 -2
- data/lib/chef/resource_inspector.rb +25 -7
- data/lib/chef/run_lock.rb +0 -3
- data/lib/chef/scan_access_control.rb +6 -6
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +1 -14
- data/lib/chef/util/file_edit.rb +4 -4
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/registry.rb +5 -0
- data/lib/chef/win32/security.rb +9 -0
- data/lib/chef.rb +0 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/integration/client/open_ssl_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/platform_helpers.rb +8 -0
- data/spec/support/shared/functional/file_resource.rb +3 -3
- data/spec/unit/mixin/homebrew_spec.rb +118 -0
- data/spec/unit/provider/apt_repository_spec.rb +1 -1
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +4 -1
- data/spec/unit/provider/route_spec.rb +4 -6
- data/spec/unit/provider/user/windows_spec.rb +1 -0
- data/spec/unit/resource/rhsm_repo_spec.rb +0 -1
- data/spec/unit/resource/rhsm_subscription_spec.rb +0 -2
- data/spec/unit/resource_inspector_spec.rb +36 -0
- metadata +20 -28
- data/lib/chef/file_content_management/deploy/target_io.rb +0 -29
- data/lib/chef/provider/.gitkeep +0 -0
- data/lib/chef/provider/package/snap_tm.rb +0 -79
- data/lib/chef/resource/.gitkeep +0 -0
- data/lib/chef/target_io/dir.rb +0 -12
- data/lib/chef/target_io/etc.rb +0 -16
- data/lib/chef/target_io/file.rb +0 -12
- data/lib/chef/target_io/fileutils.rb +0 -12
- data/lib/chef/target_io/http.rb +0 -22
- data/lib/chef/target_io/io.rb +0 -12
- data/lib/chef/target_io/shadow.rb +0 -44
- data/lib/chef/target_io/train/dir.rb +0 -69
- data/lib/chef/target_io/train/etc.rb +0 -112
- data/lib/chef/target_io/train/file.rb +0 -219
- data/lib/chef/target_io/train/fileutils.rb +0 -220
- data/lib/chef/target_io/train/http.rb +0 -117
- data/lib/chef/target_io/train/io.rb +0 -13
- data/lib/chef/target_io/train/shadow.rb +0 -52
- data/lib/chef/target_io/train_compat.rb +0 -7
- data/lib/chef/target_io.rb +0 -9
- data/spec/unit/mixin/homebrew_user_spec.rb +0 -119
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Joshua Timberman (<joshua@chef.io>)
|
|
3
|
+
#
|
|
4
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
|
|
20
|
+
describe Chef::Mixin::Homebrew do
|
|
21
|
+
let(:homebrew) { Class.new { include Chef::Mixin::Homebrew }.new }
|
|
22
|
+
let(:uid) { 1001 }
|
|
23
|
+
let(:username) { "foobar" }
|
|
24
|
+
let(:alt_brew_path) { "/foo" }
|
|
25
|
+
|
|
26
|
+
describe "#find_homebrew_uid" do
|
|
27
|
+
it "returns the provided UID when an integer is given" do
|
|
28
|
+
expect(File).to receive(:exist?).exactly(0).times
|
|
29
|
+
expect(homebrew.find_homebrew_uid(uid)).to eq(uid)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "returns the provided UID when username is given" do
|
|
33
|
+
expect(File).to receive(:exist?).exactly(0).times
|
|
34
|
+
allow(Etc).to receive(:getpwnam).with(username).and_return(OpenStruct.new(uid: uid))
|
|
35
|
+
expect(homebrew.find_homebrew_uid(username)).to eq(uid)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "raises an error when the brew executable is not found" do
|
|
39
|
+
allow(homebrew).to receive(:homebrew_bin_path).and_raise(Chef::Exceptions::CannotDetermineHomebrewPath)
|
|
40
|
+
expect { homebrew.find_homebrew_uid }.to raise_error(Chef::Exceptions::CannotDetermineHomebrewPath)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "returns the UID of the owner based on the brew executable" do
|
|
44
|
+
allow(homebrew).to receive(:homebrew_bin_path).and_return(alt_brew_path)
|
|
45
|
+
allow(File).to receive(:stat).with(alt_brew_path).and_return(OpenStruct.new(uid: uid))
|
|
46
|
+
allow(Etc).to receive(:getpwuid).with(uid).and_return(OpenStruct.new(name: username))
|
|
47
|
+
expect(homebrew.find_homebrew_uid).to eq(uid)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe "#find_homebrew_username" do
|
|
52
|
+
it "returns the username for the provided UID" do
|
|
53
|
+
allow(homebrew).to receive(:find_homebrew_uid).and_return(uid)
|
|
54
|
+
allow(Etc).to receive(:getpwuid).with(uid).and_return(OpenStruct.new(name: username))
|
|
55
|
+
expect(homebrew.find_homebrew_username(uid)).to eq(username)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe "#homebrew_bin_path" do
|
|
60
|
+
it "returns the correct path when a valid path is provided" do
|
|
61
|
+
allow(File).to receive(:exist?).with(alt_brew_path).and_return(true)
|
|
62
|
+
expect(homebrew.homebrew_bin_path(alt_brew_path)).to eq(alt_brew_path)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "raises an error when the brew executable is not found" do
|
|
66
|
+
allow(homebrew).to receive(:which).and_return(false)
|
|
67
|
+
expect { homebrew.homebrew_bin_path }.to raise_error(Chef::Exceptions::CannotDetermineHomebrewPath)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
shared_examples "successfully find executable" do
|
|
72
|
+
let(:default_brew_path) { "/usr/local/bin/brew" }
|
|
73
|
+
let(:default_brew_path_arm) { "/opt/homebrew/bin/brew" }
|
|
74
|
+
let(:default_brew_path_linux) { "/home/linuxbrew/.linuxbrew/bin/brew" }
|
|
75
|
+
|
|
76
|
+
context "debug statement prints owner name" do
|
|
77
|
+
|
|
78
|
+
before do
|
|
79
|
+
expect(Etc).to receive(:getpwuid).with(uid).and_return(OpenStruct.new(name: username))
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "returns the owner of the brew executable when it is at a default location for x86_64 machines" do
|
|
83
|
+
allow(homebrew).to receive(:homebrew_bin_path).and_return(default_brew_path)
|
|
84
|
+
allow(File).to receive(:stat).with(default_brew_path).and_return(OpenStruct.new(uid: uid))
|
|
85
|
+
expect(homebrew.find_homebrew_uid).to eq(uid)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "returns the owner of the brew executable when it is at a default location for arm machines" do
|
|
89
|
+
allow(homebrew).to receive(:homebrew_bin_path).and_return(default_brew_path_arm)
|
|
90
|
+
allow(File).to receive(:stat).with(default_brew_path_arm).and_return(OpenStruct.new(uid: uid))
|
|
91
|
+
expect(homebrew.find_homebrew_uid).to eq(uid)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "returns the owner of the brew executable when it is at a default location for linux machines" do
|
|
95
|
+
allow(homebrew).to receive(:homebrew_bin_path).and_return(default_brew_path_linux)
|
|
96
|
+
allow(File).to receive(:stat).with(default_brew_path_linux).and_return(OpenStruct.new(uid: uid))
|
|
97
|
+
expect(homebrew.find_homebrew_uid).to eq(uid)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "returns the owner of the brew executable when it is not at a default location" do
|
|
101
|
+
allow(homebrew).to receive(:homebrew_bin_path).and_return(alt_brew_path)
|
|
102
|
+
allow(File).to receive(:stat).with(alt_brew_path).and_return(OpenStruct.new(uid: uid))
|
|
103
|
+
expect(homebrew.find_homebrew_uid).to eq(uid)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe "#When the homebrew user is not provided" do
|
|
109
|
+
|
|
110
|
+
include_examples "successfully find executable"
|
|
111
|
+
|
|
112
|
+
context "the executable is owned by root" do
|
|
113
|
+
include_examples "successfully find executable" do
|
|
114
|
+
let(:uid) { 0 }
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -230,7 +230,7 @@ C5986B4F1257FFA86632CBA746181433FBB75451
|
|
|
230
230
|
it "gets a key" do
|
|
231
231
|
simples = double("HTTP")
|
|
232
232
|
allow(simples).to receive(:get).and_return("\"#{key}\"")
|
|
233
|
-
expect(Chef::HTTP::Simple).to receive(:new).with(url
|
|
233
|
+
expect(Chef::HTTP::Simple).to receive(:new).with(url).and_return(simples)
|
|
234
234
|
expect(provider).to receive(:install_key_from_keyserver).with(key, "keyserver.ubuntu.com")
|
|
235
235
|
provider.install_ppa_key("chef", "main")
|
|
236
236
|
end
|
|
@@ -92,7 +92,7 @@ describe Chef::Provider::Package::Chocolatey, :windows_only do
|
|
|
92
92
|
|
|
93
93
|
describe "choco searches change with the version" do
|
|
94
94
|
it "Choco V1 uses List" do
|
|
95
|
-
allow(provider).to receive(:powershell_exec!).with("Get-ItemProperty #{choco_exe} | select-object -expandproperty versioninfo | select-object -expandproperty productversion").and_return(double(result: "1.
|
|
95
|
+
allow(provider).to receive(:powershell_exec!).with("Get-ItemProperty #{choco_exe} | select-object -expandproperty versioninfo | select-object -expandproperty productversion").and_return(double(result: "1.3.0"))
|
|
96
96
|
expect(provider.query_command).to eql("list")
|
|
97
97
|
end
|
|
98
98
|
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
require "spec_helper"
|
|
20
20
|
|
|
21
21
|
describe Chef::Provider::Package::Homebrew do
|
|
22
|
+
let(:default_brew_path) { "/usr/local/bin/brew" }
|
|
22
23
|
let(:node) { Chef::Node.new }
|
|
23
24
|
let(:new_resource) { Chef::Resource::HomebrewPackage.new(%w{emacs vim}) }
|
|
24
25
|
let(:current_resource) { Chef::Resource::HomebrewPackage.new("emacs, vim") }
|
|
@@ -30,7 +31,6 @@ describe Chef::Provider::Package::Homebrew do
|
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
let(:homebrew_uid) { 1001 }
|
|
33
|
-
|
|
34
34
|
let(:brew_cmd_output_data) { '[{"name":"emacs","full_name":"emacs","oldname":null,"aliases":[],"versioned_formulae":[],"desc":"GNU Emacs text editor","homepage":"https://www.gnu.org/software/emacs/","versions":{"stable":"26.3","devel":null,"head":"HEAD","bottle":true},"urls":{"stable":{"url":"https://ftp.gnu.org/gnu/emacs/emacs-26.3.tar.xz","tag":null,"revision":null}},"revision":0,"version_scheme":0,"bottle":{"stable":{"rebuild":0,"cellar":"/usr/local/Cellar","prefix":"/usr/local","root_url":"https://homebrew.bintray.com/bottles","files":{"catalina":{"url":"https://homebrew.bintray.com/bottles/emacs-26.3.catalina.bottle.tar.gz","sha256":"9ab33f4386ca5f7326a8c28da1324556ec990f682a7ca88641203da0b42dbdae"},"mojave":{"url":"https://homebrew.bintray.com/bottles/emacs-26.3.mojave.bottle.tar.gz","sha256":"8162a26246de7db44c53ea0d0ef0a806140318d19c69e8e5e33aa88ce7e823a8"},"high_sierra":{"url":"https://homebrew.bintray.com/bottles/emacs-26.3.high_sierra.bottle.tar.gz","sha256":"6a2629b6deddf99f81abb1990ecd6c87f0242a0eecbb6b6c2e4c3540e421d4c4"},"sierra":{"url":"https://homebrew.bintray.com/bottles/emacs-26.3.sierra.bottle.tar.gz","sha256":"2a47477e71766d7dd6b16c29ad5ba71817ed80d06212e3261ef3c776e7e9f5a2"}}}},"keg_only":false,"bottle_disabled":false,"options":[],"build_dependencies":["pkg-config"],"dependencies":["gnutls"],"recommended_dependencies":[],"optional_dependencies":[],"uses_from_macos":["libxml2","ncurses"],"requirements":[],"conflicts_with":[],"caveats":null,"installed":[],"linked_keg":null,"pinned":false,"outdated":false},{"name":"vim","full_name":"vim","oldname":null,"aliases":[],"versioned_formulae":[],"desc":"Vi \'workalike\' with many additional features","homepage":"https://www.vim.org/","versions":{"stable":"8.2.0550","devel":null,"head":"HEAD","bottle":true},"urls":{"stable":{"url":"https://github.com/vim/vim/archive/v8.2.0550.tar.gz","tag":null,"revision":null}},"revision":0,"version_scheme":0,"bottle":{"stable":{"rebuild":0,"cellar":"/usr/local/Cellar","prefix":"/usr/local","root_url":"https://homebrew.bintray.com/bottles","files":{"catalina":{"url":"https://homebrew.bintray.com/bottles/vim-8.2.0550.catalina.bottle.tar.gz","sha256":"8f9252500775aa85d8f826af30ca9e1118a56145fc2f961c37abed48bf78cf6b"},"mojave":{"url":"https://homebrew.bintray.com/bottles/vim-8.2.0550.mojave.bottle.tar.gz","sha256":"7566c83b770f3e8c4d4b462a39e5eb26609b37a8f8db6690a2560a3e22ded6b6"},"high_sierra":{"url":"https://homebrew.bintray.com/bottles/vim-8.2.0550.high_sierra.bottle.tar.gz","sha256":"a76e517fc69bf67b6903cb82295bc085c5eb4b46b4659f034c694dd97d2ee2d9"}}}},"keg_only":false,"bottle_disabled":false,"options":[],"build_dependencies":[],"dependencies":["gettext","lua","perl","python","ruby"],"recommended_dependencies":[],"optional_dependencies":[],"uses_from_macos":["ncurses"],"requirements":[],"conflicts_with":["ex-vi","macvim"],"caveats":null,"installed":[{"version":"8.2.0550","used_options":[],"built_as_bottle":true,"poured_from_bottle":true,"runtime_dependencies":[{"full_name":"gettext","version":"0.20.1"},{"full_name":"lua","version":"5.3.5"},{"full_name":"perl","version":"5.30.2"},{"full_name":"gdbm","version":"1.18.1"},{"full_name":"openssl@1.1","version":"1.1.1f"},{"full_name":"readline","version":"8.0.4"},{"full_name":"sqlite","version":"3.31.1"},{"full_name":"xz","version":"5.2.5"},{"full_name":"python","version":"3.7.7"},{"full_name":"libyaml","version":"0.2.2"},{"full_name":"ruby","version":"2.7.1"}],"installed_as_dependency":false,"installed_on_request":true}],"linked_keg":"8.2.0550","pinned":false,"outdated":false}]' }
|
|
35
35
|
|
|
36
36
|
let(:brew_info_data) do
|
|
@@ -297,11 +297,13 @@ describe Chef::Provider::Package::Homebrew do
|
|
|
297
297
|
|
|
298
298
|
it "passes a single pkg to the brew command and return stdout" do
|
|
299
299
|
allow(provider).to receive(:shell_out!).and_return(OpenStruct.new(stdout: "zombo"))
|
|
300
|
+
allow(provider).to receive(:homebrew_bin_path).and_return(default_brew_path)
|
|
300
301
|
expect(provider.brew_cmd_output).to eql("zombo")
|
|
301
302
|
end
|
|
302
303
|
|
|
303
304
|
it "takes multiple arguments as an array" do
|
|
304
305
|
allow(provider).to receive(:shell_out!).and_return(OpenStruct.new(stdout: "homestarrunner"))
|
|
306
|
+
allow(provider).to receive(:homebrew_bin_path).and_return(default_brew_path)
|
|
305
307
|
expect(provider.brew_cmd_output("info", "opts", "bananas")).to eql("homestarrunner")
|
|
306
308
|
end
|
|
307
309
|
|
|
@@ -310,6 +312,7 @@ describe Chef::Provider::Package::Homebrew do
|
|
|
310
312
|
|
|
311
313
|
it "does not try to read homebrew_user from Package, which does not have it" do
|
|
312
314
|
allow(provider).to receive(:shell_out!).and_return(OpenStruct.new(stdout: "zombo"))
|
|
315
|
+
allow(provider).to receive(:homebrew_bin_path).and_return(default_brew_path)
|
|
313
316
|
expect(provider.brew_cmd_output).to eql("zombo")
|
|
314
317
|
end
|
|
315
318
|
end
|
|
@@ -117,7 +117,7 @@ describe Chef::Provider::Route do
|
|
|
117
117
|
@node.automatic_attrs[:platform_family] = "rhel"
|
|
118
118
|
|
|
119
119
|
route_file = StringIO.new
|
|
120
|
-
expect(File).to receive(:
|
|
120
|
+
expect(File).to receive(:new).and_return(route_file)
|
|
121
121
|
@resource_add = Chef::Resource::Route.new("192.168.1.0/24 via 192.168.0.1")
|
|
122
122
|
@run_context.resource_collection << @resource_add
|
|
123
123
|
allow(@provider).to receive(:shell_out!).and_return(true)
|
|
@@ -225,7 +225,7 @@ describe Chef::Provider::Route do
|
|
|
225
225
|
@node.automatic_attrs[:platform_family] = platform_family
|
|
226
226
|
|
|
227
227
|
route_file = StringIO.new
|
|
228
|
-
expect(File).to receive(:
|
|
228
|
+
expect(File).to receive(:new).with("/etc/sysconfig/network-scripts/route-eth0", "w").and_return(route_file)
|
|
229
229
|
@run_context.resource_collection << @new_resource
|
|
230
230
|
@provider.generate_config
|
|
231
231
|
end
|
|
@@ -234,10 +234,8 @@ describe Chef::Provider::Route do
|
|
|
234
234
|
@node.automatic_attrs[:platform_family] = platform_family
|
|
235
235
|
|
|
236
236
|
route_file = StringIO.new
|
|
237
|
-
allow(File).to receive(:exist?).and_call_original
|
|
238
|
-
allow(File).to receive(:open).and_call_original
|
|
239
237
|
allow(File).to receive(:exist?).with("/etc/sysconfig/network").and_return(false)
|
|
240
|
-
expect(File).to receive(:
|
|
238
|
+
expect(File).to receive(:new).with("/etc/sysconfig/network", "w").and_return(route_file)
|
|
241
239
|
@run_context.resource_collection << @default_resource
|
|
242
240
|
@default_provider.generate_config
|
|
243
241
|
expect(route_file.string).to match(/GATEWAY=10\.0\.0\.9/)
|
|
@@ -248,7 +246,7 @@ describe Chef::Provider::Route do
|
|
|
248
246
|
@node.automatic_attrs[:platform_family] = "rhel"
|
|
249
247
|
|
|
250
248
|
route_file = StringIO.new
|
|
251
|
-
expect(File).to receive(:
|
|
249
|
+
expect(File).to receive(:new).and_return(route_file)
|
|
252
250
|
@run_context.resource_collection << Chef::Resource::Route.new("192.168.1.0/24 via 192.168.0.1")
|
|
253
251
|
@run_context.resource_collection << Chef::Resource::Route.new("192.168.2.0/24 via 192.168.0.1")
|
|
254
252
|
@run_context.resource_collection << Chef::Resource::Route.new("192.168.3.0/24 via 192.168.0.1")
|
|
@@ -158,6 +158,7 @@ describe Chef::Provider::User::Windows do
|
|
|
158
158
|
|
|
159
159
|
describe "when removing the user" do
|
|
160
160
|
it "should call @net_user.delete" do
|
|
161
|
+
allow(Chef::ReservedNames::Win32::Security).to receive(:clear_account_rights)
|
|
161
162
|
expect(@net_user).to receive(:delete)
|
|
162
163
|
@provider.remove_user
|
|
163
164
|
end
|
|
@@ -46,7 +46,6 @@ describe Chef::Resource::RhsmRepo do
|
|
|
46
46
|
before do
|
|
47
47
|
allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
|
|
48
48
|
allow(cmd).to receive(:run_command)
|
|
49
|
-
allow(cmd).to receive(:live_stream).and_return(output)
|
|
50
49
|
allow(cmd).to receive(:stdout).and_return(output)
|
|
51
50
|
end
|
|
52
51
|
|
|
@@ -92,7 +92,6 @@ describe Chef::Resource::RhsmSubscription do
|
|
|
92
92
|
before do
|
|
93
93
|
allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
|
|
94
94
|
allow(cmd).to receive(:run_command)
|
|
95
|
-
allow(cmd).to receive(:live_stream).and_return(output)
|
|
96
95
|
allow(cmd).to receive(:stdout).and_return(output)
|
|
97
96
|
end
|
|
98
97
|
|
|
@@ -128,7 +127,6 @@ describe Chef::Resource::RhsmSubscription do
|
|
|
128
127
|
it "parses the output correctly" do
|
|
129
128
|
allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
|
|
130
129
|
allow(cmd).to receive(:run_command)
|
|
131
|
-
allow(cmd).to receive(:live_stream).and_return(output)
|
|
132
130
|
allow(cmd).to receive(:stdout).and_return(output)
|
|
133
131
|
|
|
134
132
|
expect(provider.serials_by_pool["pool1"]).to eq("serial1")
|
|
@@ -17,6 +17,20 @@
|
|
|
17
17
|
require "spec_helper"
|
|
18
18
|
require "chef/resource_inspector"
|
|
19
19
|
|
|
20
|
+
COMBINED_RESOURCE_TEXT = <<~EOF.freeze
|
|
21
|
+
class Dummy1 < Chef::Resource::LWRPBase
|
|
22
|
+
resource_name :dummy1
|
|
23
|
+
description "A dummy resource"
|
|
24
|
+
property :first, String, description: "My First Property", introduced: "14.0"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Dummy2 < Chef::Resource::LWRPBase
|
|
28
|
+
resource_name :dummy2
|
|
29
|
+
description "Another dummy resource"
|
|
30
|
+
property :second, String, description: "My Second Property", introduced: "14.0"
|
|
31
|
+
end
|
|
32
|
+
EOF
|
|
33
|
+
|
|
20
34
|
class DummyResource < Chef::Resource
|
|
21
35
|
resource_name :dummy
|
|
22
36
|
description "A dummy resource"
|
|
@@ -62,4 +76,26 @@ describe Chef::ResourceInspector do
|
|
|
62
76
|
end
|
|
63
77
|
end
|
|
64
78
|
end
|
|
79
|
+
|
|
80
|
+
describe "inspecting a multi-resource file" do
|
|
81
|
+
# Call the inspector with a fake file containing two resources, and ensure that we get
|
|
82
|
+
# both of them back!
|
|
83
|
+
subject {
|
|
84
|
+
Chef::ResourceInspector.load_from_resources([
|
|
85
|
+
{ "full_path" => "/cookbooks/fake_cookbook/resources/big_resource.rb" },
|
|
86
|
+
], false)
|
|
87
|
+
}
|
|
88
|
+
it "has elephants" do
|
|
89
|
+
allow(File).to receive(:file?).with("/cookbooks/fake_cookbook/resources/big_resource.rb").and_return(true)
|
|
90
|
+
allow(File).to receive(:readable?).with("/cookbooks/fake_cookbook/resources/big_resource.rb").and_return(true)
|
|
91
|
+
allow(IO).to receive(:read).with("/cookbooks/fake_cookbook/resources/big_resource.rb").and_return(COMBINED_RESOURCE_TEXT)
|
|
92
|
+
expect(subject.keys.count).to be 2
|
|
93
|
+
expect(subject.keys.sort).to eq(%i{dummy1 dummy2})
|
|
94
|
+
# This is correct - because they're not fully realised resources at this point, sensitive and friends are not added yet.
|
|
95
|
+
expect(subject[:dummy1][:properties].count).to be 1
|
|
96
|
+
expect(subject[:dummy2][:properties].count).to be 1
|
|
97
|
+
expect(subject[:dummy1][:properties][0][:description]).to eq "My First Property"
|
|
98
|
+
expect(subject[:dummy2][:properties][0][:description]).to eq "My Second Property"
|
|
99
|
+
end
|
|
100
|
+
end
|
|
65
101
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chef
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 18.
|
|
4
|
+
version: 18.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Jacob
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-12-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: chef-config
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 18.
|
|
19
|
+
version: 18.6.2
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - '='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 18.
|
|
26
|
+
version: 18.6.2
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: chef-utils
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - '='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 18.
|
|
33
|
+
version: 18.6.2
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - '='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 18.
|
|
40
|
+
version: 18.6.2
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: train-core
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -45,6 +45,9 @@ dependencies:
|
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '3.10'
|
|
48
|
+
- - "<="
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: 3.12.7
|
|
48
51
|
type: :runtime
|
|
49
52
|
prerelease: false
|
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +55,9 @@ dependencies:
|
|
|
52
55
|
- - "~>"
|
|
53
56
|
- !ruby/object:Gem::Version
|
|
54
57
|
version: '3.10'
|
|
58
|
+
- - "<="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 3.12.7
|
|
55
61
|
- !ruby/object:Gem::Dependency
|
|
56
62
|
name: train-winrm
|
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -241,6 +247,9 @@ dependencies:
|
|
|
241
247
|
- - ">="
|
|
242
248
|
- !ruby/object:Gem::Version
|
|
243
249
|
version: 1.15.5
|
|
250
|
+
- - "<="
|
|
251
|
+
- !ruby/object:Gem::Version
|
|
252
|
+
version: 1.16.3
|
|
244
253
|
type: :runtime
|
|
245
254
|
prerelease: false
|
|
246
255
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -248,6 +257,9 @@ dependencies:
|
|
|
248
257
|
- - ">="
|
|
249
258
|
- !ruby/object:Gem::Version
|
|
250
259
|
version: 1.15.5
|
|
260
|
+
- - "<="
|
|
261
|
+
- !ruby/object:Gem::Version
|
|
262
|
+
version: 1.16.3
|
|
251
263
|
- !ruby/object:Gem::Dependency
|
|
252
264
|
name: ffi-yajl
|
|
253
265
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -774,7 +786,6 @@ files:
|
|
|
774
786
|
- lib/chef/file_content_management/deploy/cp.rb
|
|
775
787
|
- lib/chef/file_content_management/deploy/mv_unix.rb
|
|
776
788
|
- lib/chef/file_content_management/deploy/mv_windows.rb
|
|
777
|
-
- lib/chef/file_content_management/deploy/target_io.rb
|
|
778
789
|
- lib/chef/file_content_management/tempfile.rb
|
|
779
790
|
- lib/chef/formatters/base.rb
|
|
780
791
|
- lib/chef/formatters/doc.rb
|
|
@@ -837,7 +848,7 @@ files:
|
|
|
837
848
|
- lib/chef/mixin/file_class.rb
|
|
838
849
|
- lib/chef/mixin/from_file.rb
|
|
839
850
|
- lib/chef/mixin/get_source_from_package.rb
|
|
840
|
-
- lib/chef/mixin/
|
|
851
|
+
- lib/chef/mixin/homebrew.rb
|
|
841
852
|
- lib/chef/mixin/lazy_module_include.rb
|
|
842
853
|
- lib/chef/mixin/notifying_block.rb
|
|
843
854
|
- lib/chef/mixin/openssl_helper.rb
|
|
@@ -898,7 +909,6 @@ files:
|
|
|
898
909
|
- lib/chef/policy_builder/policyfile.rb
|
|
899
910
|
- lib/chef/property.rb
|
|
900
911
|
- lib/chef/provider.rb
|
|
901
|
-
- lib/chef/provider/.gitkeep
|
|
902
912
|
- lib/chef/provider/batch.rb
|
|
903
913
|
- lib/chef/provider/cookbook_file.rb
|
|
904
914
|
- lib/chef/provider/cookbook_file/content.rb
|
|
@@ -966,7 +976,6 @@ files:
|
|
|
966
976
|
- lib/chef/provider/package/rubygems.rb
|
|
967
977
|
- lib/chef/provider/package/smartos.rb
|
|
968
978
|
- lib/chef/provider/package/snap.rb
|
|
969
|
-
- lib/chef/provider/package/snap_tm.rb
|
|
970
979
|
- lib/chef/provider/package/solaris.rb
|
|
971
980
|
- lib/chef/provider/package/windows.rb
|
|
972
981
|
- lib/chef/provider/package/windows/exe.rb
|
|
@@ -1040,7 +1049,6 @@ files:
|
|
|
1040
1049
|
- lib/chef/request_id.rb
|
|
1041
1050
|
- lib/chef/reserved_names.rb
|
|
1042
1051
|
- lib/chef/resource.rb
|
|
1043
|
-
- lib/chef/resource/.gitkeep
|
|
1044
1052
|
- lib/chef/resource/_rest_resource.rb
|
|
1045
1053
|
- lib/chef/resource/action_class.rb
|
|
1046
1054
|
- lib/chef/resource/alternatives.rb
|
|
@@ -1284,22 +1292,6 @@ files:
|
|
|
1284
1292
|
- lib/chef/shell/ext.rb
|
|
1285
1293
|
- lib/chef/shell/model_wrapper.rb
|
|
1286
1294
|
- lib/chef/shell/shell_session.rb
|
|
1287
|
-
- lib/chef/target_io.rb
|
|
1288
|
-
- lib/chef/target_io/dir.rb
|
|
1289
|
-
- lib/chef/target_io/etc.rb
|
|
1290
|
-
- lib/chef/target_io/file.rb
|
|
1291
|
-
- lib/chef/target_io/fileutils.rb
|
|
1292
|
-
- lib/chef/target_io/http.rb
|
|
1293
|
-
- lib/chef/target_io/io.rb
|
|
1294
|
-
- lib/chef/target_io/shadow.rb
|
|
1295
|
-
- lib/chef/target_io/train/dir.rb
|
|
1296
|
-
- lib/chef/target_io/train/etc.rb
|
|
1297
|
-
- lib/chef/target_io/train/file.rb
|
|
1298
|
-
- lib/chef/target_io/train/fileutils.rb
|
|
1299
|
-
- lib/chef/target_io/train/http.rb
|
|
1300
|
-
- lib/chef/target_io/train/io.rb
|
|
1301
|
-
- lib/chef/target_io/train/shadow.rb
|
|
1302
|
-
- lib/chef/target_io/train_compat.rb
|
|
1303
1295
|
- lib/chef/train_transport.rb
|
|
1304
1296
|
- lib/chef/user.rb
|
|
1305
1297
|
- lib/chef/user_v1.rb
|
|
@@ -2080,7 +2072,7 @@ files:
|
|
|
2080
2072
|
- spec/unit/mixin/default_paths_spec.rb
|
|
2081
2073
|
- spec/unit/mixin/deprecation_spec.rb
|
|
2082
2074
|
- spec/unit/mixin/enforce_ownership_and_permissions_spec.rb
|
|
2083
|
-
- spec/unit/mixin/
|
|
2075
|
+
- spec/unit/mixin/homebrew_spec.rb
|
|
2084
2076
|
- spec/unit/mixin/lazy_module_include.rb
|
|
2085
2077
|
- spec/unit/mixin/openssl_helper_spec.rb
|
|
2086
2078
|
- spec/unit/mixin/params_validate_spec.rb
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
module TargetIO
|
|
2
|
-
class Deploy
|
|
3
|
-
def create(file)
|
|
4
|
-
Chef::Log.trace("Touching #{file} to create it")
|
|
5
|
-
TargetIO::FileUtils.touch(file)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def deploy(src, dst)
|
|
9
|
-
Chef::Log.trace("Reading modes from remote file #{dst}")
|
|
10
|
-
stat = ::TargetIO::File.stat(dst)
|
|
11
|
-
mode = stat.mode & 07777
|
|
12
|
-
uid = stat.uid
|
|
13
|
-
gid = stat.gid
|
|
14
|
-
|
|
15
|
-
# TODO: Switch to TargetIO::File.open as soon as writing is implemented
|
|
16
|
-
Chef::Log.trace("Uploading local temporary file #{src} as remote file #{dst}")
|
|
17
|
-
connection = Chef.run_context&.transport_connection
|
|
18
|
-
connection.upload(src, dst)
|
|
19
|
-
|
|
20
|
-
Chef::Log.trace("Applying mode = #{mode.to_s(8)}, uid = #{uid}, gid = #{gid} to #{dst}")
|
|
21
|
-
::TargetIO::File.chown(uid, nil, dst)
|
|
22
|
-
::TargetIO::File.chown(nil, gid, dst)
|
|
23
|
-
::TargetIO::File.chmod(mode, dst)
|
|
24
|
-
|
|
25
|
-
# Local clean up
|
|
26
|
-
File.delete(src)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
data/lib/chef/provider/.gitkeep
DELETED
|
File without changes
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author:: T.Heinen (<thomas.heinen@gmail.com>)
|
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
|
4
|
-
# License:: Apache License, Version 2.0
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
#
|
|
18
|
-
|
|
19
|
-
require_relative "snap"
|
|
20
|
-
|
|
21
|
-
class Chef
|
|
22
|
-
class Provider
|
|
23
|
-
class Package
|
|
24
|
-
class SnapTM < Chef::Provider::Package::Snap
|
|
25
|
-
provides :snap_package, target_mode: true
|
|
26
|
-
|
|
27
|
-
def install_package(names, versions)
|
|
28
|
-
if new_resource.source
|
|
29
|
-
install_snap_from_source(names, new_resource.source)
|
|
30
|
-
else
|
|
31
|
-
Array(names).each do |snap|
|
|
32
|
-
snap_options = new_resource.options
|
|
33
|
-
|
|
34
|
-
snapctl([
|
|
35
|
-
"install",
|
|
36
|
-
"--channel=#{new_resource.channel}",
|
|
37
|
-
snap_options&.map { |opt| "--#{opt}" },
|
|
38
|
-
snap,
|
|
39
|
-
].flatten.compact)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def remove_package(names, versions)
|
|
45
|
-
Array(names).each do |snap|
|
|
46
|
-
snapctl([
|
|
47
|
-
"remove",
|
|
48
|
-
snap,
|
|
49
|
-
])
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def snapctl(*args)
|
|
54
|
-
# Deferred execution can result in exit code 10
|
|
55
|
-
shell_out!("snap", *args, returns: [0, 10])
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def get_latest_package_version(name, channel)
|
|
59
|
-
cmd = shell_out("snap info #{name}")
|
|
60
|
-
latest = cmd.stdout.lines.detect { |l| l.start_with? " latest/#{new_resource.channel}:" }
|
|
61
|
-
return unless latest
|
|
62
|
-
|
|
63
|
-
latest.split.at(1)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def get_installed_package_by_name(name)
|
|
67
|
-
cmd = shell_out("snap info #{name}")
|
|
68
|
-
installed = cmd.stdout.lines.detect { |l| l.start_with? "installed:" }
|
|
69
|
-
return {} unless installed
|
|
70
|
-
|
|
71
|
-
{
|
|
72
|
-
"name" => name,
|
|
73
|
-
"version" => installed.split.at(1),
|
|
74
|
-
}
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
data/lib/chef/resource/.gitkeep
DELETED
|
File without changes
|
data/lib/chef/target_io/dir.rb
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module TargetIO
|
|
2
|
-
class Dir
|
|
3
|
-
class << self
|
|
4
|
-
def method_missing(m, *args, **kwargs, &block)
|
|
5
|
-
Chef::Log.debug format("Dir::%s(%s)", m.to_s, args.join(", "))
|
|
6
|
-
|
|
7
|
-
backend = ChefConfig::Config.target_mode? ? TrainCompat::Dir : ::Dir
|
|
8
|
-
backend.send(m, *args, **kwargs, &block)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
data/lib/chef/target_io/etc.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module TargetIO
|
|
2
|
-
class Etc
|
|
3
|
-
class << self
|
|
4
|
-
def method_missing(m, *args, **kwargs, &block)
|
|
5
|
-
Chef::Log.debug format("Etc::%s(%s)", m.to_s, args.join(", "))
|
|
6
|
-
|
|
7
|
-
if ChefConfig::Config.target_mode? && !Chef.run_context.transport_connection.os.unix?
|
|
8
|
-
raise "Etc support only on Unix, this is " + Chef.run_context.transport_connection.platform.title
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
backend = ChefConfig::Config.target_mode? ? TrainCompat::Etc : ::Etc
|
|
12
|
-
backend.send(m, *args, **kwargs, &block)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
data/lib/chef/target_io/file.rb
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module TargetIO
|
|
2
|
-
class File
|
|
3
|
-
class << self
|
|
4
|
-
def method_missing(m, *args, **kwargs, &block)
|
|
5
|
-
Chef::Log.debug format("File::%s(%s)", m.to_s, args.join(", "))
|
|
6
|
-
|
|
7
|
-
backend = ChefConfig::Config.target_mode? ? TrainCompat::File : ::File
|
|
8
|
-
backend.send(m, *args, **kwargs, &block)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module TargetIO
|
|
2
|
-
class FileUtils
|
|
3
|
-
class << self
|
|
4
|
-
def method_missing(m, *args, **kwargs, &block)
|
|
5
|
-
Chef::Log.debug format("FileUtils::%s(%s)", m.to_s, args.join(", "))
|
|
6
|
-
|
|
7
|
-
backend = ChefConfig::Config.target_mode? ? TrainCompat::FileUtils : ::FileUtils
|
|
8
|
-
backend.send(m, *args, **kwargs, &block)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
data/lib/chef/target_io/http.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require "forwardable" unless defined?(Forwardable)
|
|
2
|
-
|
|
3
|
-
require_relative "../http/simple"
|
|
4
|
-
require_relative "train/http"
|
|
5
|
-
|
|
6
|
-
module TargetIO
|
|
7
|
-
class HTTP
|
|
8
|
-
extend Forwardable
|
|
9
|
-
def_delegators :@http_class, :get, :head, :patch, :post, :put, :delete
|
|
10
|
-
|
|
11
|
-
# Only for Chef::Provider::RemoteFile::HTTP
|
|
12
|
-
def_delegators :@http_class, :streaming_request, :streaming_request_with_progress, :last_response
|
|
13
|
-
|
|
14
|
-
def initialize(url, http_client_opts = {})
|
|
15
|
-
if ::ChefConfig::Config.target_mode?
|
|
16
|
-
@http_class = TargetIO::TrainCompat::HTTP.new(url, http_client_opts)
|
|
17
|
-
else
|
|
18
|
-
@http_class = Chef::HTTP::Simple.new(url, http_client_opts)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|