chef 12.15.19-universal-mingw32 → 12.16.42-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +3 -1
- data/acceptance/Gemfile.lock +14 -14
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +3 -11
- data/distro/common/html/knife_bootstrap.html +1 -1
- data/distro/common/man/man1/README.md +2 -2
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/lib/chef/application.rb +7 -15
- data/lib/chef/application/client.rb +2 -2
- data/lib/chef/application/solo.rb +1 -1
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +3 -7
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +1 -1
- data/lib/chef/data_collector.rb +83 -9
- data/lib/chef/data_collector/messages.rb +2 -1
- data/lib/chef/dsl/core.rb +1 -1
- data/lib/chef/dsl/declare_resource.rb +10 -4
- data/lib/chef/dsl/method_missing.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -1
- data/lib/chef/dsl/universal.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/http.rb +3 -4
- data/lib/chef/knife.rb +20 -2
- data/lib/chef/knife/core/generic_presenter.rb +18 -4
- data/lib/chef/knife/node_show.rb +0 -5
- data/lib/chef/knife/osc_user_show.rb +0 -1
- data/lib/chef/knife/ssl_fetch.rb +9 -5
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node.rb +1 -5
- data/lib/chef/node/attribute.rb +70 -98
- data/lib/chef/node/attribute_collections.rb +28 -19
- data/lib/chef/node/common_api.rb +0 -6
- data/lib/chef/node/immutable_collections.rb +16 -79
- data/lib/chef/node/mixin/deep_merge_cache.rb +61 -0
- data/lib/chef/node/mixin/immutablize_array.rb +67 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +54 -0
- data/lib/chef/node/mixin/state_tracking.rb +93 -0
- data/lib/chef/property.rb +4 -4
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/group/suse.rb +23 -4
- data/lib/chef/provider/package.rb +43 -5
- data/lib/chef/provider/package/apt.rb +20 -0
- data/lib/chef/provider/package/windows/exe.rb +4 -3
- data/lib/chef/provider/package/windows/msi.rb +4 -3
- data/lib/chef/provider/package/yum.rb +20 -0
- data/lib/chef/provider/package/zypper.rb +20 -0
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +25 -9
- data/lib/chef/provider/user.rb +4 -6
- data/lib/chef/provider/user/dscl.rb +8 -3
- data/lib/chef/provider/user/solaris.rb +5 -12
- data/lib/chef/resource.rb +19 -0
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/package.rb +1 -1
- data/lib/chef/resource/scm.rb +1 -7
- data/lib/chef/resource/yum_repository.rb +1 -1
- data/lib/chef/rest.rb +1 -0
- data/lib/chef/run_context.rb +12 -0
- data/lib/chef/version.rb +1 -1
- data/spec/data/trusted_certs/example_no_cn.crt +36 -0
- data/spec/functional/resource/group_spec.rb +1 -0
- data/spec/functional/resource/user/useradd_spec.rb +4 -2
- data/spec/integration/knife/data_bag_create_spec.rb +0 -3
- data/spec/integration/knife/environment_show_spec.rb +24 -4
- data/spec/integration/knife/node_environment_set_spec.rb +4 -1
- data/spec/integration/recipes/accumulator_spec.rb +232 -0
- data/spec/integration/recipes/resource_action_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/support/shared/context/client.rb +12 -3
- data/spec/support/shared/integration/app_server_support.rb +1 -1
- data/spec/support/shared/integration/knife_support.rb +4 -1
- data/spec/unit/data_collector/messages_spec.rb +2 -0
- data/spec/unit/data_collector_spec.rb +158 -21
- data/spec/unit/http_spec.rb +1 -1
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +10 -0
- data/spec/unit/knife/ssl_fetch_spec.rb +38 -0
- data/spec/unit/knife_spec.rb +31 -0
- data/spec/unit/mixin/powershell_out_spec.rb +25 -1
- data/spec/unit/node/attribute_spec.rb +46 -1
- data/spec/unit/node/vivid_mash_spec.rb +27 -89
- data/spec/unit/node_spec.rb +134 -3
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/group/suse_spec.rb +90 -0
- data/spec/unit/provider/package/apt_spec.rb +22 -0
- data/spec/unit/provider/package/windows/msi_spec.rb +13 -4
- data/spec/unit/provider/package/windows_spec.rb +3 -3
- data/spec/unit/provider/package/yum_spec.rb +18 -0
- data/spec/unit/provider/package/zypper_spec.rb +64 -0
- data/spec/unit/provider/package_spec.rb +58 -0
- data/spec/unit/provider/remote_file/content_spec.rb +1 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +13 -6
- data/spec/unit/provider/user/solaris_spec.rb +36 -9
- data/spec/unit/provider/user_spec.rb +6 -0
- data/spec/unit/resource/apt_repository_spec.rb +1 -1
- metadata +12 -5
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
3
3
|
# Author:: AJ Christensen (<aj@chef.io>)
|
4
|
-
# Copyright:: Copyright 2009-2016,
|
4
|
+
# Copyright:: Copyright 2009-2016, Chef Software, Inc.
|
5
5
|
# License:: Apache License, Version 2.0
|
6
6
|
#
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -26,6 +26,9 @@ class Chef
|
|
26
26
|
class Service
|
27
27
|
class Upstart < Chef::Provider::Service::Simple
|
28
28
|
|
29
|
+
# to maintain a local state of service across restart's internal calls
|
30
|
+
attr_accessor :upstart_service_running
|
31
|
+
|
29
32
|
provides :service, platform_family: "debian", override: true do |node|
|
30
33
|
Chef::Platform::ServiceHelpers.service_resource_providers.include?(:upstart)
|
31
34
|
end
|
@@ -110,23 +113,23 @@ class Chef
|
|
110
113
|
|
111
114
|
begin
|
112
115
|
if shell_out!(@new_resource.status_command).exitstatus == 0
|
113
|
-
@
|
116
|
+
@upstart_service_running = true
|
114
117
|
end
|
115
118
|
rescue
|
116
119
|
@command_success = false
|
117
|
-
@
|
120
|
+
@upstart_service_running = false
|
118
121
|
nil
|
119
122
|
end
|
120
123
|
else
|
121
124
|
begin
|
122
125
|
if upstart_goal_state == "start"
|
123
|
-
@
|
126
|
+
@upstart_service_running = true
|
124
127
|
else
|
125
|
-
@
|
128
|
+
@upstart_service_running = false
|
126
129
|
end
|
127
130
|
rescue Chef::Exceptions::Exec
|
128
131
|
@command_success = false
|
129
|
-
@
|
132
|
+
@upstart_service_running = false
|
130
133
|
nil
|
131
134
|
end
|
132
135
|
end
|
@@ -153,13 +156,14 @@ class Chef
|
|
153
156
|
@current_resource.enabled false
|
154
157
|
end
|
155
158
|
|
159
|
+
@current_resource.running @upstart_service_running
|
156
160
|
@current_resource
|
157
161
|
end
|
158
162
|
|
159
163
|
def start_service
|
160
164
|
# Calling start on a service that is already started will return 1
|
161
165
|
# Our 'goal' when we call start is to ensure the service is started
|
162
|
-
if @
|
166
|
+
if @upstart_service_running
|
163
167
|
Chef::Log.debug("#{@new_resource} already running, not starting")
|
164
168
|
else
|
165
169
|
if @new_resource.start_command
|
@@ -168,12 +172,14 @@ class Chef
|
|
168
172
|
shell_out_with_systems_locale!("/sbin/start #{@job}")
|
169
173
|
end
|
170
174
|
end
|
175
|
+
|
176
|
+
@upstart_service_running = true
|
171
177
|
end
|
172
178
|
|
173
179
|
def stop_service
|
174
180
|
# Calling stop on a service that is already stopped will return 1
|
175
181
|
# Our 'goal' when we call stop is to ensure the service is stopped
|
176
|
-
unless @
|
182
|
+
unless @upstart_service_running
|
177
183
|
Chef::Log.debug("#{@new_resource} not running, not stopping")
|
178
184
|
else
|
179
185
|
if @new_resource.stop_command
|
@@ -182,6 +188,8 @@ class Chef
|
|
182
188
|
shell_out_with_systems_locale!("/sbin/stop #{@job}")
|
183
189
|
end
|
184
190
|
end
|
191
|
+
|
192
|
+
@upstart_service_running = false
|
185
193
|
end
|
186
194
|
|
187
195
|
def restart_service
|
@@ -189,13 +197,19 @@ class Chef
|
|
189
197
|
super
|
190
198
|
# Upstart always provides restart functionality so we don't need to mimic it with stop/sleep/start.
|
191
199
|
# Older versions of upstart would fail on restart if the service was currently stopped, check for that. LP:430883
|
200
|
+
# But for safe working of latest upstart job config being loaded, 'restart' can't be used as per link
|
201
|
+
# http://upstart.ubuntu.com/cookbook/#restart (it doesn't uses latest jon config from disk but retains old)
|
192
202
|
else
|
193
|
-
if @
|
194
|
-
|
203
|
+
if @upstart_service_running
|
204
|
+
stop_service
|
205
|
+
sleep 1
|
206
|
+
start_service
|
195
207
|
else
|
196
208
|
start_service
|
197
209
|
end
|
198
210
|
end
|
211
|
+
|
212
|
+
@upstart_service_running = true
|
199
213
|
end
|
200
214
|
|
201
215
|
def reload_service
|
@@ -205,6 +219,8 @@ class Chef
|
|
205
219
|
# upstart >= 0.6.3-4 supports reload (HUP)
|
206
220
|
shell_out_with_systems_locale!("/sbin/reload #{@job}")
|
207
221
|
end
|
222
|
+
|
223
|
+
@upstart_service_running = true
|
208
224
|
end
|
209
225
|
|
210
226
|
# https://bugs.launchpad.net/upstart/+bug/94065
|
data/lib/chef/provider/user.rb
CHANGED
@@ -113,15 +113,13 @@ class Chef
|
|
113
113
|
# <true>:: If a change is required
|
114
114
|
# <false>:: If the users are identical
|
115
115
|
def compare_user
|
116
|
-
|
117
|
-
!@new_resource.send(user_attrib).nil? && @new_resource.send(user_attrib) != @current_resource.send(user_attrib)
|
118
|
-
end
|
116
|
+
return true if !@new_resource.home.nil? && Pathname.new(@new_resource.home).cleanpath != Pathname.new(@current_resource.home).cleanpath
|
119
117
|
|
120
|
-
|
121
|
-
!@new_resource.send(user_attrib).nil? && @new_resource.send(user_attrib).to_s != @current_resource.send(user_attrib).to_s
|
118
|
+
[ :comment, :shell, :password, :uid, :gid ].each do |user_attrib|
|
119
|
+
return true if !@new_resource.send(user_attrib).nil? && @new_resource.send(user_attrib).to_s != @current_resource.send(user_attrib).to_s
|
122
120
|
end
|
123
121
|
|
124
|
-
|
122
|
+
false
|
125
123
|
end
|
126
124
|
|
127
125
|
def action_create
|
@@ -51,6 +51,11 @@ class Chef
|
|
51
51
|
provides :dscl_user
|
52
52
|
provides :user, os: "darwin"
|
53
53
|
|
54
|
+
# Just-in-case a recipe calls the user dscl provider without specifying
|
55
|
+
# a gid property. Avoids chown issues in move_home when the manage_home
|
56
|
+
# property is in use. #5393
|
57
|
+
STAFF_GROUP_ID = 20
|
58
|
+
|
54
59
|
def define_resource_requirements
|
55
60
|
super
|
56
61
|
|
@@ -264,12 +269,12 @@ user password using shadow hash.")
|
|
264
269
|
#
|
265
270
|
# Sets the group id for the user using dscl. Fails if a group doesn't
|
266
271
|
# exist on the system with given group id. If `gid` is not specified, it
|
267
|
-
# sets a default Mac user group "staff", with id 20
|
272
|
+
# sets a default Mac user group "staff", with id 20 using the CONSTANT
|
268
273
|
#
|
269
274
|
def dscl_set_gid
|
270
275
|
if new_resource.gid.nil?
|
271
276
|
# XXX: mutates the new resource
|
272
|
-
new_resource.gid(
|
277
|
+
new_resource.gid(STAFF_GROUP_ID)
|
273
278
|
elsif !new_resource.gid.to_s.match(/^\d+$/)
|
274
279
|
begin
|
275
280
|
possible_gid = run_dscl("read /Groups/#{new_resource.gid} PrimaryGroupID").split(" ").last
|
@@ -329,7 +334,7 @@ user password using shadow hash.")
|
|
329
334
|
|
330
335
|
def move_home
|
331
336
|
Chef::Log.debug("#{new_resource} moving #{self} home from #{current_resource.home} to #{new_resource.home}")
|
332
|
-
|
337
|
+
new_resource.gid(STAFF_GROUP_ID) if new_resource.gid.nil?
|
333
338
|
src = current_resource.home
|
334
339
|
FileUtils.mkdir_p(new_resource.home)
|
335
340
|
files = ::Dir.glob("#{Chef::Util::PathHelper.escape_glob_dir(src)}/*", ::File::FNM_DOTMATCH) - ["#{src}/.", "#{src}/.."]
|
@@ -46,21 +46,14 @@ class Chef
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def check_lock
|
49
|
-
|
49
|
+
user = IO.read(@password_file).match(/^#{Regexp.escape(@new_resource.username)}:([^:]*):/)
|
50
50
|
|
51
|
-
#
|
52
|
-
|
53
|
-
return nil if shadow_line.nil?
|
51
|
+
# If we're in whyrun mode, and the user is not created, we assume it will be
|
52
|
+
return false if whyrun_mode? && user.nil?
|
54
53
|
|
55
|
-
#
|
56
|
-
fields = shadow_line.split(":")
|
54
|
+
raise Chef::Exceptions::User, "Cannot determine if #{@new_resource} is locked!" if user.nil?
|
57
55
|
|
58
|
-
|
59
|
-
# so look for LK at the beginning of the shadow entry
|
60
|
-
# optionally surrounded by '*'
|
61
|
-
@locked = !!fields[1].match(/^\*?LK\*?/)
|
62
|
-
|
63
|
-
@locked
|
56
|
+
@locked = user[1].start_with?("*LK*")
|
64
57
|
end
|
65
58
|
|
66
59
|
def lock_user
|
data/lib/chef/resource.rb
CHANGED
@@ -180,6 +180,25 @@ class Chef
|
|
180
180
|
# Alias for normal assigment syntax.
|
181
181
|
alias_method :action=, :action
|
182
182
|
|
183
|
+
#
|
184
|
+
# Force a delayed notification into this resource's run_context.
|
185
|
+
#
|
186
|
+
# This should most likely be paired with action :nothing
|
187
|
+
#
|
188
|
+
# @param arg [Array[Symbol], Symbol] A list of actions (e.g. `:create`)
|
189
|
+
#
|
190
|
+
def delayed_action(arg)
|
191
|
+
arg = Array(arg).map(&:to_sym)
|
192
|
+
arg.map do |action|
|
193
|
+
validate(
|
194
|
+
{ action: action },
|
195
|
+
{ action: { kind_of: Symbol, equal_to: allowed_actions } }
|
196
|
+
)
|
197
|
+
# the resource effectively sends a delayed notification to itself
|
198
|
+
run_context.add_delayed_action(Notification.new(self, action, self))
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
183
202
|
#
|
184
203
|
# Sets up a notification that will run a particular action on another resource
|
185
204
|
# if and when *this* resource is updated by an action.
|
data/lib/chef/resource/file.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
3
3
|
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
4
|
-
# Copyright:: Copyright 2008-2016
|
4
|
+
# Copyright:: Copyright 2008-2016 Chef Software, Inc.
|
5
5
|
# License:: Apache License, Version 2.0
|
6
6
|
#
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -25,7 +25,7 @@ class Chef
|
|
25
25
|
resource_name :package
|
26
26
|
|
27
27
|
default_action :install
|
28
|
-
allowed_actions :install, :upgrade, :remove, :purge, :reconfig
|
28
|
+
allowed_actions :install, :upgrade, :remove, :purge, :reconfig, :lock, :unlock
|
29
29
|
|
30
30
|
def initialize(name, *args)
|
31
31
|
# We capture name here, before it gets coerced to name
|
data/lib/chef/resource/scm.rb
CHANGED
@@ -89,13 +89,7 @@ class Chef
|
|
89
89
|
)
|
90
90
|
end
|
91
91
|
|
92
|
-
|
93
|
-
set_or_return(
|
94
|
-
:svn_password,
|
95
|
-
arg,
|
96
|
-
:kind_of => String
|
97
|
-
)
|
98
|
-
end
|
92
|
+
property :svn_password, String, sensitive: true, desired_state: false
|
99
93
|
|
100
94
|
def svn_arguments(arg = nil)
|
101
95
|
@svn_arguments, arg = nil, nil if arg == false
|
@@ -57,7 +57,7 @@ class Chef
|
|
57
57
|
property :password, String, regex: /.*/
|
58
58
|
property :repo_gpgcheck, [TrueClass, FalseClass]
|
59
59
|
property :report_instanceid, [TrueClass, FalseClass]
|
60
|
-
property :repositoryid, String, regex: /.*/,
|
60
|
+
property :repositoryid, String, regex: /.*/, name_property: true
|
61
61
|
property :sensitive, [TrueClass, FalseClass], default: false
|
62
62
|
property :skip_if_unavailable, [TrueClass, FalseClass]
|
63
63
|
property :source, String, regex: /.*/
|
data/lib/chef/rest.rb
CHANGED
data/lib/chef/run_context.rb
CHANGED
@@ -84,6 +84,17 @@ class Chef
|
|
84
84
|
#
|
85
85
|
attr_reader :parent_run_context
|
86
86
|
|
87
|
+
#
|
88
|
+
# The root run context.
|
89
|
+
#
|
90
|
+
# @return [Chef::RunContext] The root run context.
|
91
|
+
#
|
92
|
+
def root_run_context
|
93
|
+
rc = self
|
94
|
+
rc = rc.parent_run_context until rc.parent_run_context.nil?
|
95
|
+
rc
|
96
|
+
end
|
97
|
+
|
87
98
|
#
|
88
99
|
# The collection of resources intended to be converged (and able to be
|
89
100
|
# notified).
|
@@ -653,6 +664,7 @@ ERROR_MESSAGE
|
|
653
664
|
notifies_immediately
|
654
665
|
notifies_delayed
|
655
666
|
parent_run_context
|
667
|
+
root_run_context
|
656
668
|
resource_collection
|
657
669
|
resource_collection=
|
658
670
|
}.map { |x| x.to_sym }
|
data/lib/chef/version.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
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
|
35
|
+
oYdVLVWSjyoA2l4Xb4LdexAgCg==
|
36
|
+
-----END CERTIFICATE-----
|
@@ -425,6 +425,7 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" end
|
|
425
425
|
end
|
426
426
|
|
427
427
|
it "does not raise an error on manage" do
|
428
|
+
allow(Etc).to receive(:getpwnam).and_return(double("User"))
|
428
429
|
expect { group_resource.run_action(:manage) }.not_to raise_error
|
429
430
|
end
|
430
431
|
end
|
@@ -637,8 +637,10 @@ describe Chef::Provider::User::Useradd, metadata do
|
|
637
637
|
context "and has no password" do
|
638
638
|
|
639
639
|
# TODO: platform_family should be setup in spec_helper w/ tags
|
640
|
-
if %w{
|
641
|
-
|
640
|
+
if %w{opensuse}.include?(OHAI_SYSTEM["platform_family"]) ||
|
641
|
+
(%w{suse}.include?(OHAI_SYSTEM["platform_family"]) &&
|
642
|
+
OHAI_SYSTEM["platform_version"].to_f < 12.1)
|
643
|
+
# suse 11.x gets this right:
|
642
644
|
it "errors out trying to unlock the user" do
|
643
645
|
expect(@error).to be_a(Mixlib::ShellOut::ShellCommandFailed)
|
644
646
|
expect(@error.message).to include("Cannot unlock the password")
|
@@ -34,12 +34,10 @@ describe "knife data bag create", :workstation do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "creates a new data bag and item" do
|
37
|
-
pending "Deprecation warning must get fixed"
|
38
37
|
knife("data bag create foo bar").should_succeed stdout: out, stderr: err
|
39
38
|
end
|
40
39
|
|
41
40
|
it "adds a new item to an existing bag" do
|
42
|
-
pending "Deprecation warning must get fixed"
|
43
41
|
knife("data bag create foo").should_succeed stderr: err
|
44
42
|
knife("data bag create foo bar").should_succeed stdout: out, stderr: exists
|
45
43
|
end
|
@@ -50,7 +48,6 @@ describe "knife data bag create", :workstation do
|
|
50
48
|
end
|
51
49
|
|
52
50
|
it "fails to add an existing item" do
|
53
|
-
pending "Deprecation warning must get fixed"
|
54
51
|
knife("data bag create foo bar").should_succeed stdout: out, stderr: err
|
55
52
|
expect { knife("data bag create foo bar") }.to raise_error(Net::HTTPServerException)
|
56
53
|
end
|
@@ -26,7 +26,7 @@ describe "knife environment show", :workstation do
|
|
26
26
|
when_the_chef_server "has some environments" do
|
27
27
|
before do
|
28
28
|
environment "b", {
|
29
|
-
"default_attributes" => { "foo" => "bar" },
|
29
|
+
"default_attributes" => { "foo" => "bar", "baz" => { "raz.my" => "mataz" } },
|
30
30
|
}
|
31
31
|
end
|
32
32
|
|
@@ -36,6 +36,8 @@ describe "knife environment show", :workstation do
|
|
36
36
|
chef_type: environment
|
37
37
|
cookbook_versions:
|
38
38
|
default_attributes:
|
39
|
+
baz:
|
40
|
+
raz.my: mataz
|
39
41
|
foo: bar
|
40
42
|
description:
|
41
43
|
json_class: Chef::Environment
|
@@ -46,11 +48,29 @@ EOM
|
|
46
48
|
# rubocop:enable Style/TrailingWhitespace
|
47
49
|
|
48
50
|
it "shows the requested attribute of an environment" do
|
49
|
-
|
50
|
-
knife("environment show b -a foo").should_succeed <<EOM
|
51
|
+
knife("environment show b -a default_attributes").should_succeed <<EOM
|
51
52
|
b:
|
52
|
-
|
53
|
+
default_attributes:
|
54
|
+
baz:
|
55
|
+
raz.my: mataz
|
56
|
+
foo: bar
|
53
57
|
EOM
|
54
58
|
end
|
59
|
+
|
60
|
+
it "shows the requested nested attribute of an environment" do
|
61
|
+
knife("environment show b -a default_attributes.baz").should_succeed <<EON
|
62
|
+
b:
|
63
|
+
default_attributes.baz:
|
64
|
+
raz.my: mataz
|
65
|
+
EON
|
66
|
+
end
|
67
|
+
|
68
|
+
it "shows the requested attribute of an environment with custom field separator" do
|
69
|
+
knife("environment show b -S: -a default_attributes:baz").should_succeed <<EOT
|
70
|
+
b:
|
71
|
+
default_attributes:baz:
|
72
|
+
raz.my: mataz
|
73
|
+
EOT
|
74
|
+
end
|
55
75
|
end
|
56
76
|
end
|