chef-zero-scheduled-task 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf269b33ca5ac6f65be285cb971360b8e38baf3e
4
- data.tar.gz: bbbb3f130e58edeac35ac4c86501b4bda5cce9a9
3
+ metadata.gz: e3a4cd8ee79e0008cbec419edba9ab0eca46e606
4
+ data.tar.gz: 2f7f988aba5c1835148fe0aa4a991b2131ed6d89
5
5
  SHA512:
6
- metadata.gz: c5b70056f8fd890306c727dd430cf6fed9096127a9a474789750db2a59ad87cbe4216a79c3059207539ec9a7a2ab3b3f4c2e89775b6394bc8e83f81e2832502a
7
- data.tar.gz: bd0de042167c6755af2d692f6d5e66d1f67f644f164868bcf9caf6cb90cccec948d2b2d33f9d0e51ec4c995356f428721df672a73fd80e8eb343e4b45f59eeb9
6
+ metadata.gz: e15314dd568e10e277df4fc2d29bcf8787f867414e96f1eaef481b0a9a4f1e2c935fb4d59aa334ce339b02d221c6a2c08009bc2dee592dd2569f389a4e7e3088
7
+ data.tar.gz: 90b9cc3af97d42cb5b6f8914c37ec5df39b42442291c4311ba02757337821387106c36c0208fd235b327d685bba2b1fe445f760a296f1acfa980104ad71916fa
data/.gitignore CHANGED
@@ -1,14 +1,14 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in chef-zero-scheduled-task.gemspec
4
- gemspec
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in chef-zero-scheduled-task.gemspec
4
+ gemspec
data/README.md CHANGED
@@ -1,36 +1,39 @@
1
- [![Gem Version](https://badge.fury.io/rb/chef-zero-scheduled-task.svg)](http://badge.fury.io/rb/chef-zero-scheduled-task)
2
- # Chef::Zero::Scheduled::Task
3
-
4
- TODO: Write a gem description
5
-
6
- ## Installation
7
-
8
- Add this line to your application's Gemfile:
9
-
10
- ```ruby
11
- gem 'chef-zero-scheduled-task'
12
- ```
13
-
14
- And then execute:
15
-
16
- $ bundle
17
-
18
- Or install it yourself as:
19
-
20
- $ gem install chef-zero-scheduled-task
21
-
22
- ## Usage
23
-
24
- In the .kitchen.yml
25
- ```
26
- provisioner:
27
- name: chef_zero_scheduled_task
28
- ```
29
-
30
- ## Contributing
31
-
32
- 1. Fork it ( https://github.com/[my-github-username]/chef-zero-scheduled-task/fork )
33
- 2. Create your feature branch (`git checkout -b my-new-feature`)
34
- 3. Commit your changes (`git commit -am 'Add some feature'`)
35
- 4. Push to the branch (`git push origin my-new-feature`)
36
- 5. Create a new Pull Request
1
+ [![Gem Version](https://badge.fury.io/rb/chef-zero-scheduled-task.svg)](http://badge.fury.io/rb/chef-zero-scheduled-task)
2
+ # Chef::Zero::Scheduled::Task
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ ```ruby
9
+ gem 'chef-zero-scheduled-task'
10
+ ```
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install chef-zero-scheduled-task
19
+
20
+ ## Usage
21
+
22
+ In the .kitchen.yml
23
+ ```
24
+ provisioner:
25
+ name: chef_zero_scheduled_task
26
+ ```
27
+
28
+ This provisioner uses all the same configuration options as the native chef-zero provisioner, as well as:
29
+
30
+ * task_username - user account the scheduled task should run under. (defaults to the username used for the transport)
31
+ * task_password - password to use to create the scheduled task. (defaults to the password used for the transport)
32
+
33
+ ## Contributing
34
+
35
+ 1. Fork it ( https://github.com/[my-github-username]/chef-zero-scheduled-task/fork )
36
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
37
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
38
+ 4. Push to the branch (`git push origin my-new-feature`)
39
+ 5. Create a new Pull Request
data/Rakefile CHANGED
@@ -1,52 +1,52 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require "bundler/gem_tasks"
4
-
5
- require "rake/testtask"
6
- Rake::TestTask.new(:unit) do |t|
7
- t.libs.push "lib"
8
- t.test_files = FileList["spec/**/*_spec.rb"]
9
- t.verbose = true
10
- end
11
-
12
- desc "Run all test suites"
13
- task :test => [:unit]
14
-
15
- desc "Display LOC stats"
16
- task :stats do
17
- puts "\n## Production Code Stats"
18
- sh "countloc -r lib"
19
- puts "\n## Test Code Stats"
20
- sh "countloc -r spec"
21
- end
22
-
23
- require "finstyle"
24
- require "rubocop/rake_task"
25
- RuboCop::RakeTask.new(:style) do |task|
26
- task.options << "--display-cop-names"
27
- task.options << "--lint"
28
- task.options << '--config' << '.rubocop.yml'
29
- task.patterns = ['lib/**/*.rb']
30
- end
31
-
32
- require "cane/rake_task"
33
- desc "Run cane to check quality metrics"
34
- Cane::RakeTask.new do |cane|
35
- cane.canefile = "./.cane"
36
- end
37
-
38
- desc "Run all quality tasks"
39
- task :quality => [:cane, :style, :stats]
40
-
41
- require "yard"
42
- YARD::Rake::YardocTask.new
43
-
44
- desc "Generate gem dependency graph"
45
- task :viz do
46
- Bundler.with_clean_env do
47
- sh "bundle viz --without test development guard " \
48
- "--requirements --version"
49
- end
50
- end
51
-
52
- task :default => [:test, :quality]
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "bundler/gem_tasks"
4
+
5
+ require "rake/testtask"
6
+ Rake::TestTask.new(:unit) do |t|
7
+ t.libs.push "lib"
8
+ t.test_files = FileList["spec/**/*_spec.rb"]
9
+ t.verbose = true
10
+ end
11
+
12
+ desc "Run all test suites"
13
+ task :test => [:unit]
14
+
15
+ desc "Display LOC stats"
16
+ task :stats do
17
+ puts "\n## Production Code Stats"
18
+ sh "countloc -r lib"
19
+ puts "\n## Test Code Stats"
20
+ sh "countloc -r spec"
21
+ end
22
+
23
+ require "finstyle"
24
+ require "rubocop/rake_task"
25
+ RuboCop::RakeTask.new(:style) do |task|
26
+ task.options << "--display-cop-names"
27
+ task.options << "--lint"
28
+ task.options << '--config' << '.rubocop.yml'
29
+ task.patterns = ['lib/**/*.rb']
30
+ end
31
+
32
+ require "cane/rake_task"
33
+ desc "Run cane to check quality metrics"
34
+ Cane::RakeTask.new do |cane|
35
+ cane.canefile = "./.cane"
36
+ end
37
+
38
+ desc "Run all quality tasks"
39
+ task :quality => [:cane, :style, :stats]
40
+
41
+ require "yard"
42
+ YARD::Rake::YardocTask.new
43
+
44
+ desc "Generate gem dependency graph"
45
+ task :viz do
46
+ Bundler.with_clean_env do
47
+ sh "bundle viz --without test development guard " \
48
+ "--requirements --version"
49
+ end
50
+ end
51
+
52
+ task :default => [:test, :quality]
@@ -1,26 +1,26 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'chef/zero/scheduled/task/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "chef-zero-scheduled-task"
8
- spec.version = Chef::Zero::Scheduled::Task::VERSION
9
- spec.authors = ["Steven Murawski"]
10
- spec.email = ["steven.murawski@gmail.com"]
11
- spec.summary = "Test-Kitchen Provisioner that runs Chef Zero in a Scheduled Task"
12
- spec.description = "Test-Kitchen Provisioner that runs Chef Zero in a Scheduled Task"
13
- spec.homepage = "https://github.com/smurawski/chef-zero-scheduled-task"
14
- spec.license = "Apache 2"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "pry", "~> 0.10"
24
-
25
- spec.add_dependency "test-kitchen", "~> 1.4"
26
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'chef/zero/scheduled/task/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "chef-zero-scheduled-task"
8
+ spec.version = Chef::Zero::Scheduled::Task::VERSION
9
+ spec.authors = ["Steven Murawski"]
10
+ spec.email = ["steven.murawski@gmail.com"]
11
+ spec.summary = "Test-Kitchen Provisioner that runs Chef Zero in a Scheduled Task"
12
+ spec.description = "Test-Kitchen Provisioner that runs Chef Zero in a Scheduled Task"
13
+ spec.homepage = "https://github.com/smurawski/chef-zero-scheduled-task"
14
+ spec.license = "Apache 2"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "pry", "~> 0.10"
24
+
25
+ spec.add_dependency "test-kitchen", "~> 1.4"
26
+ end
@@ -2,7 +2,7 @@ module Chef
2
2
  module Zero
3
3
  module Scheduled
4
4
  module Task
5
- VERSION = "0.0.2"
5
+ VERSION = "0.0.3"
6
6
  end
7
7
  end
8
8
  end
@@ -16,19 +16,20 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
 
19
- require "kitchen/provisioner/chef_zero"
19
+ require 'kitchen/provisioner/chef_zero'
20
20
 
21
21
  module Kitchen
22
-
23
22
  module Provisioner
24
-
25
23
  # Chef Zero provisioner to run in scheduled task on Windows
26
24
  class ChefZeroScheduledTask < ChefZero
27
-
28
25
  kitchen_provisioner_api_version 2
29
26
 
30
27
  plugin_version Kitchen::VERSION
31
28
 
29
+ default_config :task_username
30
+
31
+ default_config :task_password
32
+
32
33
  def create_sandbox
33
34
  super
34
35
  return unless windows_os?
@@ -37,30 +38,37 @@ module Kitchen
37
38
 
38
39
  def init_command
39
40
  resolve_username_and_password
40
- wrap_shell_code( <<-EOH
41
- $cmd_path = "#{remote_path_join(config[:root_path], "chef-client-script.ps1")}"
42
- $cmd_line = $executioncontext.invokecommand.expandstring("powershell -executionpolicy unrestricted -File $cmd_path")
43
- schtasks /create /tn "chef-tk" /ru #{@task_username} /rp #{@task_password} /sc daily /st 00:00 /f /tr "$cmd_line"
44
- EOH
45
- )
41
+ wrap_shell_code(setup_scheduled_task_command)
46
42
  end
47
43
 
48
- #assuming a version of Chef with local mode.
44
+ # assuming a version of Chef with local mode.
49
45
  def prepare_command
50
46
  return unless windows_os?
51
47
  info('Creating a script to run chef client.')
52
- cmd = <<-EOH
53
- $pre_cmd = "`$env:temp = `"$env:temp`""
54
- $cmd_path = "#{remote_path_join(config[:root_path], "chef-client-script.ps1")}"
55
- $cmd_to_eval = gc $cmd_path | out-string
56
- $cmd = $executioncontext.invokecommand.expandstring($cmd_to_eval)
57
- $pre_cmd, $cmd | out-file $cmd_path
58
- EOH
59
- wrap_shell_code(cmd)
48
+ wrap_shell_code(scheduled_task_command)
60
49
  end
61
50
 
62
51
  def run_command
63
- wrap_shell_code( <<-EOH
52
+ wrap_shell_code(run_scheduled_task_command)
53
+ end
54
+
55
+ private
56
+
57
+ def resolve_username_and_password
58
+ unless config[:task_username] && config[:task_password]
59
+ local_state_file = @instance.diagnose[:state_file]
60
+ if local_state_file.key?(:password)
61
+ config[:task_username] = local_state_file[:username]
62
+ config[:task_password] = local_state_file[:password]
63
+ else
64
+ config[:task_username] = @instance.transport[:username]
65
+ config[:task_password] = @instance.transport[:password]
66
+ end
67
+ end
68
+ end
69
+
70
+ def run_scheduled_task_command
71
+ <<-EOH
64
72
  if (test-path 'c:/chef/tk.log') {
65
73
  remove-item c:/chef/tk.log -force
66
74
  }
@@ -74,25 +82,30 @@ module Kitchen
74
82
  $host.ui.WriteLine('')
75
83
  get-content c:/chef/tk.log -readcount 0
76
84
  EOH
77
- )
78
85
  end
79
86
 
80
- private
81
-
82
- def resolve_username_and_password
83
- local_state_file = @instance.diagnose[:state_file]
84
- if local_state_file.key?(:password)
85
- @task_username = local_state_file[:username]
86
- @task_password = local_state_file[:password]
87
- else
88
- @task_username = @instance.transport[:username]
89
- @task_password = @instance.transport[:password]
90
- end
87
+ def setup_scheduled_task_command
88
+ <<-EOH
89
+ $cmd_path = "#{remote_path_join(config[:root_path], 'chef-client-script.ps1')}"
90
+ $cmd_line = $executioncontext.invokecommand.expandstring("powershell -executionpolicy unrestricted -File $cmd_path")
91
+ schtasks /create /tn "chef-tk" /ru #{config[:task_username]} /rp #{config[:task_password]} /sc daily /st 00:00 /f /tr "$cmd_line"
92
+ EOH
93
+ end
91
94
 
95
+ def scheduled_task_command
96
+ <<-EOH
97
+ $pre_cmd = '$env:temp = "' + $env:temp + '"'
98
+ $cmd_path = "#{remote_path_join(config[:root_path], 'chef-client-script.ps1')}"
99
+ $cmd_to_eval = gc $cmd_path | out-string
100
+ $cmd = $executioncontext.invokecommand.expandstring($cmd_to_eval)
101
+ $cmd_folder = split-path $cmd_path
102
+ if (-not (test-path $cmd_folder)) {$null = mkdir $cmd_folder}
103
+ $pre_cmd, $cmd | out-file $cmd_path
104
+ EOH
92
105
  end
93
106
 
94
107
  def prepare_client_zero_script
95
- cmd = [local_mode_command, *chef_client_args, '--logfile c:\chef\tk.log'].join(" ")
108
+ cmd = [local_mode_command, *chef_client_args, '--logfile c:\chef\tk.log'].join(' ')
96
109
  File.open(File.join(sandbox_path, 'chef-client-script.ps1'), 'w') do |file|
97
110
  file.write(cmd)
98
111
  end
@@ -101,10 +114,10 @@ module Kitchen
101
114
  def chef_client_args
102
115
  level = config[:log_level] == :info ? :info : config[:log_level]
103
116
  args = [
104
- "--config #{remote_path_join(config[:root_path], "client.rb")}",
117
+ "--config #{remote_path_join(config[:root_path], 'client.rb')}",
105
118
  "--log_level #{level}",
106
- "--force-formatter",
107
- "--no-color"
119
+ '--force-formatter',
120
+ '--no-color'
108
121
  ]
109
122
  add_optional_chef_client_args!(args)
110
123
 
@@ -112,4 +125,4 @@ module Kitchen
112
125
  end
113
126
  end
114
127
  end
115
- end
128
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-zero-scheduled-task
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Murawski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-17 00:00:00.000000000 Z
11
+ date: 2015-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler