chef 11.14.6 → 11.16.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,178 @@
1
+ #
2
+ # Author:: Bryan McLellan <btm@loftninjas.org>
3
+ # Copyright:: Copyright (c) 2014 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 'chef/util/dsc/lcm_output_parser'
20
+
21
+ describe Chef::Util::DSC::LocalConfigurationManager::Parser do
22
+ context 'empty input parameter' do
23
+ it 'returns an empty array for a 0 length string' do
24
+ Chef::Util::DSC::LocalConfigurationManager::Parser::parse('').should be_empty
25
+ end
26
+
27
+ it 'returns an empty array for a nil input' do
28
+ Chef::Util::DSC::LocalConfigurationManager::Parser::parse('').should be_empty
29
+ end
30
+ end
31
+
32
+ context 'correctly formatted output from lcm' do
33
+ it 'returns an empty array for a log with no resources' do
34
+ str = <<EOF
35
+ logtype: [machinename]: LCM: [ Start Set ]
36
+ logtype: [machinename]: LCM: [ End Set ]
37
+ EOF
38
+ Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str).should be_empty
39
+ end
40
+
41
+ it 'returns a single resource when only 1 logged with the correct name' do
42
+ str = <<EOF
43
+ logtype: [machinename]: LCM: [ Start Set ]
44
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
45
+ logtype: [machinename]: LCM: [ End Resource ] [name]
46
+ logtype: [machinename]: LCM: [ End Set ]
47
+ EOF
48
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
49
+ resources.length.should eq(1)
50
+ resources[0].name.should eq('[name]')
51
+ end
52
+
53
+ it 'identifies when a resource changes the state of the system' do
54
+ str = <<EOF
55
+ logtype: [machinename]: LCM: [ Start Set ]
56
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
57
+ logtype: [machinename]: LCM: [ Start Set ] [name]
58
+ logtype: [machinename]: LCM: [ End Set ] [name]
59
+ logtype: [machinename]: LCM: [ End Resource ] [name]
60
+ logtype: [machinename]: LCM: [ End Set ]
61
+ EOF
62
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
63
+ resources[0].changes_state?.should be_true
64
+ end
65
+
66
+ it 'preserves the log provided for how the system changed the state' do
67
+ str = <<EOF
68
+ logtype: [machinename]: LCM: [ Start Set ]
69
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
70
+ logtype: [machinename]: LCM: [ Start Set ] [name]
71
+ logtype: [machinename]: [message]
72
+ logtype: [machinename]: LCM: [ End Set ] [name]
73
+ logtype: [machinename]: LCM: [ End Resource ] [name]
74
+ logtype: [machinename]: LCM: [ End Set ]
75
+ EOF
76
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
77
+ resources[0].change_log.should match_array(["[name]","[message]","[name]"])
78
+ end
79
+
80
+ it 'should return false for changes_state?' do
81
+ str = <<EOF
82
+ logtype: [machinename]: LCM: [ Start Set ]
83
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
84
+ logtype: [machinename]: LCM: [ Skip Set ] [name]
85
+ logtype: [machinename]: LCM: [ End Resource ] [name]
86
+ logtype: [machinename]: LCM: [ End Set ]
87
+ EOF
88
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
89
+ resources[0].changes_state?.should be_false
90
+ end
91
+
92
+ it 'should return an empty array for change_log if changes_state? is false' do
93
+ str = <<EOF
94
+ logtype: [machinename]: LCM: [ Start Set ]
95
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
96
+ logtype: [machinename]: LCM: [ Skip Set ] [name]
97
+ logtype: [machinename]: LCM: [ End Resource ] [name]
98
+ logtype: [machinename]: LCM: [ End Set ]
99
+ EOF
100
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
101
+ resources[0].change_log.should be_empty
102
+ end
103
+ end
104
+
105
+ context 'Incorrectly formatted output from LCM' do
106
+ it 'should raise an exception if a set is found inside a test' do
107
+ str = <<EOF
108
+ logtype: [machinename]: LCM: [ Start Set ]
109
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
110
+ logtype: [machinename]: LCM: [ Start Test ]
111
+ logtype: [machinename]: LCM: [ Start Set ]
112
+ logtype: [machinename]: LCM: [ End Set ]
113
+ logtype: [machinename]: LCM: [ End Test ]
114
+ logtype: [machinename]: LCM: [ End Resource ] [name]
115
+ logtype: [machinename]: LCM: [ End Set ]
116
+ EOF
117
+ expect { Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str) }.to(raise_error(
118
+ Chef::Util::DSC::LocalConfigurationManager::Parser::ParseException))
119
+ end
120
+
121
+ it 'should raise an exception if a test is found inside a test' do
122
+ str = <<EOF
123
+ logtype: [machinename]: LCM: [ Start Set ]
124
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
125
+ logtype: [machinename]: LCM: [ Start Test ]
126
+ logtype: [machinename]: LCM: [ Start Test ]
127
+ logtype: [machinename]: LCM: [ End Test ]
128
+ logtype: [machinename]: LCM: [ End Test ]
129
+ logtype: [machinename]: LCM: [ End Resource ] [name]
130
+ logtype: [machinename]: LCM: [ End Set ]
131
+ EOF
132
+ expect { Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str) }.to(raise_error(
133
+ Chef::Util::DSC::LocalConfigurationManager::Parser::ParseException))
134
+ end
135
+
136
+ it 'should allow missing a [End Resource] when its the last one and still find all the resource' do
137
+ str = <<-EOF
138
+ logtype: [machinename]: LCM: [ Start Set ]
139
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
140
+ logtype: [machinename]: LCM: [ Start Test ]
141
+ logtype: [machinename]: LCM: [ End Test ]
142
+ logtype: [machinename]: LCM: [ Skip Set ]
143
+ logtype: [machinename]: LCM: [ End Resource ]
144
+ logtype: [machinename]: LCM: [ Start Resource ] [name2]
145
+ logtype: [machinename]: LCM: [ Start Test ]
146
+ logtype: [machinename]: LCM: [ End Test ]
147
+ logtype: [machinename]: LCM: [ Start Set ]
148
+ logtype: [machinename]: LCM: [ End Set ]
149
+ logtype: [machinename]: LCM: [ End Set ]
150
+ EOF
151
+
152
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
153
+ resources[0].changes_state?.should be_false
154
+ resources[1].changes_state?.should be_true
155
+ end
156
+
157
+ it 'should allow missing a [End Resource] when its the first one and still find all the resource' do
158
+ str = <<-EOF
159
+ logtype: [machinename]: LCM: [ Start Set ]
160
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
161
+ logtype: [machinename]: LCM: [ Start Test ]
162
+ logtype: [machinename]: LCM: [ End Test ]
163
+ logtype: [machinename]: LCM: [ Skip Set ]
164
+ logtype: [machinename]: LCM: [ Start Resource ] [name2]
165
+ logtype: [machinename]: LCM: [ Start Test ]
166
+ logtype: [machinename]: LCM: [ End Test ]
167
+ logtype: [machinename]: LCM: [ Start Set ]
168
+ logtype: [machinename]: LCM: [ End Set ]
169
+ logtype: [machinename]: LCM: [ End Resource ]
170
+ logtype: [machinename]: LCM: [ End Set ]
171
+ EOF
172
+
173
+ resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
174
+ resources[0].changes_state?.should be_false
175
+ resources[1].changes_state?.should be_true
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,134 @@
1
+ #
2
+ # Author:: Adam Edwards <adamed@getchef.com>
3
+ # Copyright:: Copyright (c) 2014 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 'chef'
20
+ require 'chef/util/dsc/local_configuration_manager'
21
+
22
+ describe Chef::Util::DSC::LocalConfigurationManager do
23
+
24
+ let(:lcm) { Chef::Util::DSC::LocalConfigurationManager.new(nil, 'tmp') }
25
+
26
+ let(:normal_lcm_output) { <<-EOH
27
+ logtype: [machinename]: LCM: [ Start Set ]
28
+ logtype: [machinename]: LCM: [ Start Resource ] [name]
29
+ logtype: [machinename]: LCM: [ End Resource ] [name]
30
+ logtype: [machinename]: LCM: [ End Set ]
31
+ EOH
32
+ }
33
+
34
+ let(:no_whatif_lcm_output) { <<-EOH
35
+ Start-DscConfiguration : A parameter cannot be found that matches parameter name 'whatif'.
36
+ At line:1 char:123
37
+ + run-somecommand -whatif
38
+ + ~~~~~~~~
39
+ + CategoryInfo : InvalidArgument: (:) [Start-DscConfiguration], ParameterBindingException
40
+ + FullyQualifiedErrorId : NamedParameterNotFound,SomeCompany.SomeAssembly.Commands.RunSomeCommand
41
+ EOH
42
+ }
43
+
44
+ let(:dsc_resource_import_failure_output) { <<-EOH
45
+ PowerShell provider MSFT_xWebsite failed to execute Test-TargetResource functionality with error message: Please ensure that WebAdministration module is installed. + CategoryInfo : InvalidOperation: (:) [], CimException + FullyQualifiedErrorId : ProviderOperationExecutionFailure + PSComputerName : . PowerShell provider MSFT_xWebsite failed to execute Test-TargetResource functionality with error message: Please ensure that WebAdministration module is installed. + CategoryInfo : InvalidOperation: (:) [], CimException + FullyQualifiedErrorId : ProviderOperationExecutionFailure + PSComputerName : . The SendConfigurationApply function did not succeed. + CategoryInfo : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException + FullyQualifiedErrorId : MI RESULT 1 + PSComputerName : .
46
+ EOH
47
+ }
48
+
49
+ let(:lcm_status) {
50
+ double("LCM cmdlet status", :stderr => lcm_standard_error, :return_value => lcm_standard_output, :succeeded? => lcm_cmdlet_success)
51
+ }
52
+
53
+ describe 'test_configuration method invocation' do
54
+ context 'when interacting with the LCM using a PowerShell cmdlet' do
55
+ before(:each) do
56
+ allow(lcm).to receive(:run_configuration_cmdlet).and_return(lcm_status)
57
+ end
58
+ context 'that returns successfully' do
59
+ before(:each) do
60
+ allow(lcm).to receive(:run_configuration_cmdlet).and_return(lcm_status)
61
+ end
62
+
63
+ let(:lcm_standard_output) { normal_lcm_output }
64
+ let(:lcm_standard_error) { nil }
65
+ let(:lcm_cmdlet_success) { true }
66
+
67
+ it 'should successfully return resource information for normally formatted output when cmdlet the cmdlet succeeds' do
68
+ test_configuration_result = lcm.test_configuration('config')
69
+ expect(test_configuration_result.class).to be(Array)
70
+ expect(test_configuration_result.length).to be > 0
71
+ expect(Chef::Log).not_to receive(:warn)
72
+ end
73
+ end
74
+
75
+ context 'that fails due to missing what-if switch in DSC resource cmdlet implementation' do
76
+ let(:lcm_standard_output) { '' }
77
+ let(:lcm_standard_error) { no_whatif_lcm_output }
78
+ let(:lcm_cmdlet_success) { false }
79
+
80
+ it 'should should return a (possibly empty) array of ResourceInfo instances' do
81
+ expect(Chef::Log).to receive(:warn)
82
+ test_configuration_result = nil
83
+ expect {test_configuration_result = lcm.test_configuration('config')}.not_to raise_error
84
+ expect(test_configuration_result.class).to be(Array)
85
+ end
86
+ end
87
+
88
+ context 'that fails due to a DSC resource not being imported before StartDSCConfiguration -whatif is executed' do
89
+ let(:lcm_standard_output) { '' }
90
+ let(:lcm_standard_error) { dsc_resource_import_failure_output }
91
+ let(:lcm_cmdlet_success) { false }
92
+
93
+ it 'should log a warning if the message is formatted as expected when a resource import failure occurs' do
94
+ expect(Chef::Log).to receive(:warn)
95
+ expect(lcm).to receive(:output_has_dsc_module_failure?).and_call_original
96
+ test_configuration_result = nil
97
+ expect {test_configuration_result = lcm.test_configuration('config')}.not_to raise_error
98
+ end
99
+
100
+ it 'should return a (possibly empty) array of ResourceInfo instances' do
101
+ expect(Chef::Log).to receive(:warn)
102
+ test_configuration_result = nil
103
+ expect {test_configuration_result = lcm.test_configuration('config')}.not_to raise_error
104
+ expect(test_configuration_result.class).to be(Array)
105
+ end
106
+ end
107
+
108
+ context 'that fails due to an PowerShell cmdlet error that cannot be handled' do
109
+ let(:lcm_standard_output) { 'some output' }
110
+ let(:lcm_standard_error) { 'Abort, Retry, Fail?' }
111
+ let(:lcm_cmdlet_success) { false }
112
+
113
+ it 'should raise a Chef::Exceptions::PowershellCmdletException' do
114
+ expect(Chef::Log).not_to receive(:warn)
115
+ expect(lcm).to receive(:output_has_dsc_module_failure?).and_call_original
116
+ expect {lcm.test_configuration('config')}.to raise_error(Chef::Exceptions::PowershellCmdletException)
117
+ end
118
+ end
119
+ end
120
+
121
+ it 'should identify a correctly formatted error message as a resource import failure' do
122
+ expect(lcm.send(:output_has_dsc_module_failure?, dsc_resource_import_failure_output)).to be(true)
123
+ end
124
+
125
+ it 'should not identify an incorrectly formatted error message as a resource import failure' do
126
+ expect(lcm.send(:output_has_dsc_module_failure?, dsc_resource_import_failure_output.gsub('module', 'gibberish'))).to be(false)
127
+ end
128
+
129
+ it 'should not identify a message without a CimException reference as a resource import failure' do
130
+ expect(lcm.send(:output_has_dsc_module_failure?, dsc_resource_import_failure_output.gsub('CimException', 'ArgumentException'))).to be(false)
131
+ end
132
+ end
133
+ end
134
+
@@ -0,0 +1,106 @@
1
+ #
2
+ # Author:: Jay Mundrawala <jdm@getchef.com>
3
+ # Copyright:: Copyright (c) 2014 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 'chef'
20
+ require 'chef/util/powershell/cmdlet'
21
+
22
+ describe Chef::Util::Powershell::Cmdlet do
23
+ before (:all) do
24
+ @node = Chef::Node.new
25
+ @cmdlet = Chef::Util::Powershell::Cmdlet.new(@node, 'Some-Commandlet')
26
+ end
27
+
28
+ describe '#validate_switch_name!' do
29
+ it 'should not raise an error if a name contains all upper case letters' do
30
+ @cmdlet.send(:validate_switch_name!, "HELLO")
31
+ end
32
+
33
+ it 'should not raise an error if the name contains all lower case letters' do
34
+ @cmdlet.send(:validate_switch_name!, "hello")
35
+ end
36
+
37
+ it 'should not raise an error if no special characters are used except _' do
38
+ @cmdlet.send(:validate_switch_name!, "hello_world")
39
+ end
40
+
41
+ %w{! @ # $ % ^ & * & * ( ) - = + \{ \} . ? < > \\ /}.each do |sym|
42
+ it "raises an Argument error if it configuration name contains #{sym}" do
43
+ expect {
44
+ @cmdlet.send(:validate_switch_name!, "Hello#{sym}")
45
+ }.to raise_error(ArgumentError)
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '#escape_parameter_value' do
51
+ # Is this list really complete?
52
+ %w{` " # '}.each do |c|
53
+ it "escapse #{c}" do
54
+ @cmdlet.send(:escape_parameter_value, "stuff #{c}").should eql("stuff `#{c}")
55
+ end
56
+ end
57
+
58
+ it 'does not do anything to a string without special characters' do
59
+ @cmdlet.send(:escape_parameter_value, 'stuff').should eql('stuff')
60
+ end
61
+ end
62
+
63
+ describe '#escape_string_parameter_value' do
64
+ it "surrounds a string with ''" do
65
+ @cmdlet.send(:escape_string_parameter_value, 'stuff').should eql("'stuff'")
66
+ end
67
+ end
68
+
69
+ describe '#command_switches_string' do
70
+ it 'raises an ArgumentError if the key is not a symbol' do
71
+ expect {
72
+ @cmdlet.send(:command_switches_string, {'foo' => 'bar'})
73
+ }.to raise_error(ArgumentError)
74
+ end
75
+
76
+ it 'does not allow invalid switch names' do
77
+ expect {
78
+ @cmdlet.send(:command_switches_string, {:foo! => 'bar'})
79
+ }.to raise_error(ArgumentError)
80
+ end
81
+
82
+ it 'ignores switches with a false value' do
83
+ @cmdlet.send(:command_switches_string, {:foo => false}).should eql('')
84
+ end
85
+
86
+ it 'should correctly handle a value type of string' do
87
+ @cmdlet.send(:command_switches_string, {:foo => 'bar'}).should eql("-foo 'bar'")
88
+ end
89
+
90
+ it 'should correctly handle a value type of string even when it is 0 length' do
91
+ @cmdlet.send(:command_switches_string, {:foo => ''}).should eql("-foo ''")
92
+ end
93
+
94
+ it 'should not quote integers' do
95
+ @cmdlet.send(:command_switches_string, {:foo => 1}).should eql("-foo 1")
96
+ end
97
+
98
+ it 'should not quote floats' do
99
+ @cmdlet.send(:command_switches_string, {:foo => 1.0}).should eql("-foo 1.0")
100
+ end
101
+
102
+ it 'has just the switch when the value is true' do
103
+ @cmdlet.send(:command_switches_string, {:foo => true}).should eql("-foo")
104
+ end
105
+ end
106
+ end
metadata CHANGED
@@ -1,359 +1,359 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.14.6
4
+ version: 11.16.0.rc.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-18 00:00:00.000000000 Z
11
+ date: 2014-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-config
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
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
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mixlib-cli
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.4'
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
40
  version: '1.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mixlib-log
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.3'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mixlib-authentication
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.3'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mixlib-shellout
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.4'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.4'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: ohai
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '7.2'
89
+ version: 7.4.0.rc.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: '7.2'
96
+ version: 7.4.0.rc.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rest-client
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: 1.0.4
104
- - - "<="
104
+ - - <=
105
105
  - !ruby/object:Gem::Version
106
106
  version: 1.6.7
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
111
+ - - '>='
112
112
  - !ruby/object:Gem::Version
113
113
  version: 1.0.4
114
- - - "<="
114
+ - - <=
115
115
  - !ruby/object:Gem::Version
116
116
  version: 1.6.7
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: mime-types
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
121
+ - - ~>
122
122
  - !ruby/object:Gem::Version
123
123
  version: '1.16'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - "~>"
128
+ - - ~>
129
129
  - !ruby/object:Gem::Version
130
130
  version: '1.16'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: ffi-yajl
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - "~>"
135
+ - - ~>
136
136
  - !ruby/object:Gem::Version
137
137
  version: '1.0'
138
138
  type: :runtime
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - "~>"
142
+ - - ~>
143
143
  - !ruby/object:Gem::Version
144
144
  version: '1.0'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: net-ssh
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
149
+ - - ~>
150
150
  - !ruby/object:Gem::Version
151
151
  version: '2.6'
152
152
  type: :runtime
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - "~>"
156
+ - - ~>
157
157
  - !ruby/object:Gem::Version
158
158
  version: '2.6'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: net-ssh-multi
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - "~>"
163
+ - - ~>
164
164
  - !ruby/object:Gem::Version
165
165
  version: '1.1'
166
166
  type: :runtime
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
- - - "~>"
170
+ - - ~>
171
171
  - !ruby/object:Gem::Version
172
172
  version: '1.1'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: highline
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - "~>"
177
+ - - ~>
178
178
  - !ruby/object:Gem::Version
179
179
  version: '1.6'
180
- - - ">="
180
+ - - '>='
181
181
  - !ruby/object:Gem::Version
182
182
  version: 1.6.9
183
183
  type: :runtime
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - "~>"
187
+ - - ~>
188
188
  - !ruby/object:Gem::Version
189
189
  version: '1.6'
190
- - - ">="
190
+ - - '>='
191
191
  - !ruby/object:Gem::Version
192
192
  version: 1.6.9
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: erubis
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - "~>"
197
+ - - ~>
198
198
  - !ruby/object:Gem::Version
199
199
  version: '2.7'
200
200
  type: :runtime
201
201
  prerelease: false
202
202
  version_requirements: !ruby/object:Gem::Requirement
203
203
  requirements:
204
- - - "~>"
204
+ - - ~>
205
205
  - !ruby/object:Gem::Version
206
206
  version: '2.7'
207
207
  - !ruby/object:Gem::Dependency
208
208
  name: diff-lcs
209
209
  requirement: !ruby/object:Gem::Requirement
210
210
  requirements:
211
- - - "~>"
211
+ - - ~>
212
212
  - !ruby/object:Gem::Version
213
213
  version: '1.2'
214
- - - ">="
214
+ - - '>='
215
215
  - !ruby/object:Gem::Version
216
216
  version: 1.2.4
217
217
  type: :runtime
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - "~>"
221
+ - - ~>
222
222
  - !ruby/object:Gem::Version
223
223
  version: '1.2'
224
- - - ">="
224
+ - - '>='
225
225
  - !ruby/object:Gem::Version
226
226
  version: 1.2.4
227
227
  - !ruby/object:Gem::Dependency
228
228
  name: chef-zero
229
229
  requirement: !ruby/object:Gem::Requirement
230
230
  requirements:
231
- - - "~>"
231
+ - - ~>
232
232
  - !ruby/object:Gem::Version
233
233
  version: '2.1'
234
- - - ">="
234
+ - - '>='
235
235
  - !ruby/object:Gem::Version
236
236
  version: 2.1.4
237
237
  type: :runtime
238
238
  prerelease: false
239
239
  version_requirements: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - "~>"
241
+ - - ~>
242
242
  - !ruby/object:Gem::Version
243
243
  version: '2.1'
244
- - - ">="
244
+ - - '>='
245
245
  - !ruby/object:Gem::Version
246
246
  version: 2.1.4
247
247
  - !ruby/object:Gem::Dependency
248
248
  name: pry
249
249
  requirement: !ruby/object:Gem::Requirement
250
250
  requirements:
251
- - - "~>"
251
+ - - ~>
252
252
  - !ruby/object:Gem::Version
253
253
  version: '0.9'
254
254
  type: :runtime
255
255
  prerelease: false
256
256
  version_requirements: !ruby/object:Gem::Requirement
257
257
  requirements:
258
- - - "~>"
258
+ - - ~>
259
259
  - !ruby/object:Gem::Version
260
260
  version: '0.9'
261
261
  - !ruby/object:Gem::Dependency
262
262
  name: plist
263
263
  requirement: !ruby/object:Gem::Requirement
264
264
  requirements:
265
- - - "~>"
265
+ - - ~>
266
266
  - !ruby/object:Gem::Version
267
267
  version: 3.1.0
268
268
  type: :runtime
269
269
  prerelease: false
270
270
  version_requirements: !ruby/object:Gem::Requirement
271
271
  requirements:
272
- - - "~>"
272
+ - - ~>
273
273
  - !ruby/object:Gem::Version
274
274
  version: 3.1.0
275
275
  - !ruby/object:Gem::Dependency
276
276
  name: rack
277
277
  requirement: !ruby/object:Gem::Requirement
278
278
  requirements:
279
- - - ">="
279
+ - - '>='
280
280
  - !ruby/object:Gem::Version
281
281
  version: '0'
282
282
  type: :development
283
283
  prerelease: false
284
284
  version_requirements: !ruby/object:Gem::Requirement
285
285
  requirements:
286
- - - ">="
286
+ - - '>='
287
287
  - !ruby/object:Gem::Version
288
288
  version: '0'
289
289
  - !ruby/object:Gem::Dependency
290
290
  name: rake
291
291
  requirement: !ruby/object:Gem::Requirement
292
292
  requirements:
293
- - - "~>"
293
+ - - ~>
294
294
  - !ruby/object:Gem::Version
295
295
  version: 10.1.0
296
296
  type: :development
297
297
  prerelease: false
298
298
  version_requirements: !ruby/object:Gem::Requirement
299
299
  requirements:
300
- - - "~>"
300
+ - - ~>
301
301
  - !ruby/object:Gem::Version
302
302
  version: 10.1.0
303
303
  - !ruby/object:Gem::Dependency
304
304
  name: rspec_junit_formatter
305
305
  requirement: !ruby/object:Gem::Requirement
306
306
  requirements:
307
- - - "~>"
307
+ - - ~>
308
308
  - !ruby/object:Gem::Version
309
309
  version: 0.1.0
310
310
  type: :development
311
311
  prerelease: false
312
312
  version_requirements: !ruby/object:Gem::Requirement
313
313
  requirements:
314
- - - "~>"
314
+ - - ~>
315
315
  - !ruby/object:Gem::Version
316
316
  version: 0.1.0
317
317
  - !ruby/object:Gem::Dependency
318
318
  name: rspec-core
319
319
  requirement: !ruby/object:Gem::Requirement
320
320
  requirements:
321
- - - "~>"
321
+ - - ~>
322
322
  - !ruby/object:Gem::Version
323
323
  version: 2.14.0
324
324
  type: :development
325
325
  prerelease: false
326
326
  version_requirements: !ruby/object:Gem::Requirement
327
327
  requirements:
328
- - - "~>"
328
+ - - ~>
329
329
  - !ruby/object:Gem::Version
330
330
  version: 2.14.0
331
331
  - !ruby/object:Gem::Dependency
332
332
  name: rspec-expectations
333
333
  requirement: !ruby/object:Gem::Requirement
334
334
  requirements:
335
- - - "~>"
335
+ - - ~>
336
336
  - !ruby/object:Gem::Version
337
337
  version: 2.14.0
338
338
  type: :development
339
339
  prerelease: false
340
340
  version_requirements: !ruby/object:Gem::Requirement
341
341
  requirements:
342
- - - "~>"
342
+ - - ~>
343
343
  - !ruby/object:Gem::Version
344
344
  version: 2.14.0
345
345
  - !ruby/object:Gem::Dependency
346
346
  name: rspec-mocks
347
347
  requirement: !ruby/object:Gem::Requirement
348
348
  requirements:
349
- - - "~>"
349
+ - - ~>
350
350
  - !ruby/object:Gem::Version
351
351
  version: 2.14.0
352
352
  type: :development
353
353
  prerelease: false
354
354
  version_requirements: !ruby/object:Gem::Requirement
355
355
  requirements:
356
- - - "~>"
356
+ - - ~>
357
357
  - !ruby/object:Gem::Version
358
358
  version: 2.14.0
359
359
  description: A systems integration framework, built to bring the benefits of configuration
@@ -923,6 +923,7 @@ files:
923
923
  - lib/chef/provider/deploy/revision.rb
924
924
  - lib/chef/provider/deploy/timestamped.rb
925
925
  - lib/chef/provider/directory.rb
926
+ - lib/chef/provider/dsc_script.rb
926
927
  - lib/chef/provider/env.rb
927
928
  - lib/chef/provider/env/windows.rb
928
929
  - lib/chef/provider/erl_call.rb
@@ -1039,6 +1040,7 @@ files:
1039
1040
  - lib/chef/resource/deploy_revision.rb
1040
1041
  - lib/chef/resource/directory.rb
1041
1042
  - lib/chef/resource/dpkg_package.rb
1043
+ - lib/chef/resource/dsc_script.rb
1042
1044
  - lib/chef/resource/easy_install_package.rb
1043
1045
  - lib/chef/resource/env.rb
1044
1046
  - lib/chef/resource/erl_call.rb
@@ -1119,9 +1121,15 @@ files:
1119
1121
  - lib/chef/user.rb
1120
1122
  - lib/chef/util/backup.rb
1121
1123
  - lib/chef/util/diff.rb
1124
+ - lib/chef/util/dsc/configuration_generator.rb
1125
+ - lib/chef/util/dsc/lcm_output_parser.rb
1126
+ - lib/chef/util/dsc/local_configuration_manager.rb
1127
+ - lib/chef/util/dsc/resource_info.rb
1122
1128
  - lib/chef/util/editor.rb
1123
1129
  - lib/chef/util/file_edit.rb
1124
1130
  - lib/chef/util/path_helper.rb
1131
+ - lib/chef/util/powershell/cmdlet.rb
1132
+ - lib/chef/util/powershell/cmdlet_result.rb
1125
1133
  - lib/chef/util/selinux.rb
1126
1134
  - lib/chef/util/threaded_job_queue.rb
1127
1135
  - lib/chef/util/windows.rb
@@ -1441,6 +1449,7 @@ files:
1441
1449
  - spec/functional/resource/cron_spec.rb
1442
1450
  - spec/functional/resource/deploy_revision_spec.rb
1443
1451
  - spec/functional/resource/directory_spec.rb
1452
+ - spec/functional/resource/dsc_script_spec.rb
1444
1453
  - spec/functional/resource/env_spec.rb
1445
1454
  - spec/functional/resource/file_spec.rb
1446
1455
  - spec/functional/resource/git_spec.rb
@@ -1462,6 +1471,7 @@ files:
1462
1471
  - spec/functional/run_lock_spec.rb
1463
1472
  - spec/functional/shell_spec.rb
1464
1473
  - spec/functional/tiny_server_spec.rb
1474
+ - spec/functional/util/powershell/cmdlet_spec.rb
1465
1475
  - spec/functional/version_spec.rb
1466
1476
  - spec/functional/win32/registry_helper_spec.rb
1467
1477
  - spec/functional/win32/security_spec.rb
@@ -1705,6 +1715,7 @@ files:
1705
1715
  - spec/unit/provider/deploy/timestamped_spec.rb
1706
1716
  - spec/unit/provider/deploy_spec.rb
1707
1717
  - spec/unit/provider/directory_spec.rb
1718
+ - spec/unit/provider/dsc_script_spec.rb
1708
1719
  - spec/unit/provider/env/windows_spec.rb
1709
1720
  - spec/unit/provider/env_spec.rb
1710
1721
  - spec/unit/provider/erl_call_spec.rb
@@ -1811,6 +1822,7 @@ files:
1811
1822
  - spec/unit/resource/deploy_spec.rb
1812
1823
  - spec/unit/resource/directory_spec.rb
1813
1824
  - spec/unit/resource/dpkg_package_spec.rb
1825
+ - spec/unit/resource/dsc_script_spec.rb
1814
1826
  - spec/unit/resource/easy_install_package_spec.rb
1815
1827
  - spec/unit/resource/env_spec.rb
1816
1828
  - spec/unit/resource/erl_call_spec.rb
@@ -1881,9 +1893,13 @@ files:
1881
1893
  - spec/unit/user_spec.rb
1882
1894
  - spec/unit/util/backup_spec.rb
1883
1895
  - spec/unit/util/diff_spec.rb
1896
+ - spec/unit/util/dsc/configuration_generator_spec.rb
1897
+ - spec/unit/util/dsc/lcm_output_parser_spec.rb
1898
+ - spec/unit/util/dsc/local_configuration_manager_spec.rb
1884
1899
  - spec/unit/util/editor_spec.rb
1885
1900
  - spec/unit/util/file_edit_spec.rb
1886
1901
  - spec/unit/util/path_helper_spec.rb
1902
+ - spec/unit/util/powershell/cmdlet_spec.rb
1887
1903
  - spec/unit/util/selinux_spec.rb
1888
1904
  - spec/unit/util/threaded_job_queue_spec.rb
1889
1905
  - spec/unit/version/platform_spec.rb
@@ -1901,14 +1917,14 @@ require_paths:
1901
1917
  - lib
1902
1918
  required_ruby_version: !ruby/object:Gem::Requirement
1903
1919
  requirements:
1904
- - - ">="
1920
+ - - '>='
1905
1921
  - !ruby/object:Gem::Version
1906
1922
  version: '0'
1907
1923
  required_rubygems_version: !ruby/object:Gem::Requirement
1908
1924
  requirements:
1909
- - - ">="
1925
+ - - '>'
1910
1926
  - !ruby/object:Gem::Version
1911
- version: '0'
1927
+ version: 1.3.1
1912
1928
  requirements: []
1913
1929
  rubyforge_project:
1914
1930
  rubygems_version: 2.2.2