diff options
87 files changed, 726 insertions, 449 deletions
diff --git a/ci/jenkins_run_tests.bat b/ci/jenkins_run_tests.bat index 9c8fbbf377..b5076949f3 100644 --- a/ci/jenkins_run_tests.bat +++ b/ci/jenkins_run_tests.bat @@ -2,4 +2,8 @@ set PATH=C:\Ruby192\bin;%PATH% ruby -v call bundle install --binstubs --path vendor/bundle || ( call rm Gemfile.lock && call bundle install --binstubs --path vendor/bundle ) -ruby bin\rspec -r rspec_junit_formatter -f RspecJunitFormatter -o test.xml -f documentation spec/functional spec/unit +ruby bin\rspec -r rspec_junit_formatter -f RspecJunitFormatter -o test.xml -f documentation spec/functional spec/unit spec/stress +set RSPEC_ERRORLVL=%ERRORLEVEL% + +REM Return the error level from rspec +exit /B %RSPEC_ERRORLVL% diff --git a/ci/jenkins_run_tests.sh b/ci/jenkins_run_tests.sh index 5dab6ebd92..90a1fec0c8 100755 --- a/ci/jenkins_run_tests.sh +++ b/ci/jenkins_run_tests.sh @@ -7,3 +7,7 @@ ruby -v; # This should take care of Gemfile changes that result in "bad" bundles without forcing us to rebundle every time bundle install --path vendor/bundle || ( rm Gemfile.lock && bundle install --path vendor/bundle ) bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o test.xml -f documentation spec; +RSPEC_RETURNCODE=$? + +# exit with the result of running rspec +exit $RSPEC_RETURNCODE diff --git a/distro/common/html/chef-client.8.html b/distro/common/html/chef-client.8.html index cdcee9c7fd..93eded7851 100644 --- a/distro/common/html/chef-client.8.html +++ b/distro/common/html/chef-client.8.html @@ -124,9 +124,9 @@ wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with +manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with help2man. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -136,7 +136,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-client(8)</li> </ol> diff --git a/distro/common/html/chef-expander.8.html b/distro/common/html/chef-expander.8.html index ba17920e1e..ce0dbef2cf 100644 --- a/distro/common/html/chef-expander.8.html +++ b/distro/common/html/chef-expander.8.html @@ -143,9 +143,9 @@ wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was created by Nuo Yan <a href="mailto:nuo@opscode.com" data-bare-link="true">nuo@opscode.com</a>. Permission is +manual page was created by Nuo Yan <a href="mailto:nuo@opscode.com" data-bare-link="true">nuo@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -155,7 +155,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-expander(8)</li> </ol> diff --git a/distro/common/html/chef-expanderctl.8.html b/distro/common/html/chef-expanderctl.8.html index 2ce15e019a..27d94c640b 100644 --- a/distro/common/html/chef-expanderctl.8.html +++ b/distro/common/html/chef-expanderctl.8.html @@ -125,9 +125,9 @@ wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was created by Nuo Yan <a href="mailto:nuo@opscode.com" data-bare-link="true">nuo@opscode.com</a>. Permission is +manual page was created by Nuo Yan <a href="mailto:nuo@opscode.com" data-bare-link="true">nuo@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -137,7 +137,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-expanderctl(8)</li> </ol> diff --git a/distro/common/html/chef-server-webui.8.html b/distro/common/html/chef-server-webui.8.html index d28b732448..5467ad4c77 100644 --- a/distro/common/html/chef-server-webui.8.html +++ b/distro/common/html/chef-server-webui.8.html @@ -163,9 +163,9 @@ is located on the Chef wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with +manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with help2man for the Debian project (but may be used by others). Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -176,7 +176,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-server-webui(8)</li> </ol> diff --git a/distro/common/html/chef-server.8.html b/distro/common/html/chef-server.8.html index 6613b6c90f..5c4d287d32 100644 --- a/distro/common/html/chef-server.8.html +++ b/distro/common/html/chef-server.8.html @@ -161,9 +161,9 @@ wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with +manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with help2man. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -173,7 +173,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-server(8)</li> </ol> diff --git a/distro/common/html/chef-shell.1.html b/distro/common/html/chef-shell.1.html index 195870cc53..fd0dd016fd 100644 --- a/distro/common/html/chef-shell.1.html +++ b/distro/common/html/chef-shell.1.html @@ -260,13 +260,13 @@ libraries.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community. chef-shell was written by Daniel DeLeo.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Daniel DeLeo <a href="mailto:dan@opscode.com" data-bare-link="true">dan@opscode.com</a>. +<p> This manual page was written by Daniel DeLeo <a href="mailto:dan@opscode.com" data-bare-link="true">dan@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -277,7 +277,7 @@ libraries.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-shell(1)</li> </ol> diff --git a/distro/common/html/chef-solo.8.html b/distro/common/html/chef-solo.8.html index 727df99c9f..f6e20abb9f 100644 --- a/distro/common/html/chef-solo.8.html +++ b/distro/common/html/chef-solo.8.html @@ -170,9 +170,9 @@ http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with +manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with help2man. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -182,7 +182,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-solo(8)</li> </ol> diff --git a/distro/common/html/chef-solr.8.html b/distro/common/html/chef-solr.8.html index 0e13c25d90..9a91565265 100644 --- a/distro/common/html/chef-solr.8.html +++ b/distro/common/html/chef-solr.8.html @@ -144,9 +144,9 @@ wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode +<p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This -manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with +manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with help2man. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> @@ -156,7 +156,7 @@ found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>chef-solr(8)</li> </ol> diff --git a/distro/common/html/knife-bootstrap.1.html b/distro/common/html/knife-bootstrap.1.html index 6bc60652ca..f96e45c270 100644 --- a/distro/common/html/knife-bootstrap.1.html +++ b/distro/common/html/knife-bootstrap.1.html @@ -218,11 +218,11 @@ to other users via the process list using tools such as <span class="man-ref">ps <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -232,7 +232,7 @@ to other users via the process list using tools such as <span class="man-ref">ps <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-bootstrap(1)</li> </ol> diff --git a/distro/common/html/knife-client.1.html b/distro/common/html/knife-client.1.html index bdad3299df..93738a3b1a 100644 --- a/distro/common/html/knife-client.1.html +++ b/distro/common/html/knife-client.1.html @@ -196,11 +196,11 @@ setting up a host for management with Chef.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -210,7 +210,7 @@ setting up a host for management with Chef.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-client(1)</li> </ol> diff --git a/distro/common/html/knife-configure.1.html b/distro/common/html/knife-configure.1.html index 9394f08f0e..3d3217de47 100644 --- a/distro/common/html/knife-configure.1.html +++ b/distro/common/html/knife-configure.1.html @@ -147,11 +147,11 @@ may need to modify that setting after copying to a remote host.</p></li> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -161,7 +161,7 @@ may need to modify that setting after copying to a remote host.</p></li> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-configure(1)</li> </ol> diff --git a/distro/common/html/knife-cookbook-site.1.html b/distro/common/html/knife-cookbook-site.1.html index ad40a5c1d1..449bd55f79 100644 --- a/distro/common/html/knife-cookbook-site.1.html +++ b/distro/common/html/knife-cookbook-site.1.html @@ -218,11 +218,11 @@ configuration file.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -232,7 +232,7 @@ configuration file.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-cookbook-site(1)</li> </ol> diff --git a/distro/common/html/knife-cookbook.1.html b/distro/common/html/knife-cookbook.1.html index b98d9a9382..3b12470c1e 100644 --- a/distro/common/html/knife-cookbook.1.html +++ b/distro/common/html/knife-cookbook.1.html @@ -361,11 +361,11 @@ cookbook.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -375,7 +375,7 @@ cookbook.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-cookbook(1)</li> </ol> diff --git a/distro/common/html/knife-data-bag.1.html b/distro/common/html/knife-data-bag.1.html index fb7f9b5646..f85a2b6460 100644 --- a/distro/common/html/knife-data-bag.1.html +++ b/distro/common/html/knife-data-bag.1.html @@ -215,11 +215,11 @@ encryption keys.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -229,7 +229,7 @@ encryption keys.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-data-bag(1)</li> </ol> diff --git a/distro/common/html/knife-environment.1.html b/distro/common/html/knife-environment.1.html index cb4ebced96..274d64f15e 100644 --- a/distro/common/html/knife-environment.1.html +++ b/distro/common/html/knife-environment.1.html @@ -244,11 +244,11 @@ override_attributes "aws_s3_bucket" => "production" <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Daniel DeLeo <a href="mailto:dan@opscode.com" data-bare-link="true">dan@opscode.com</a>. +<p> This manual page was written by Daniel DeLeo <a href="mailto:dan@opscode.com" data-bare-link="true">dan@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -258,7 +258,7 @@ override_attributes "aws_s3_bucket" => "production" <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-environment(1)</li> </ol> diff --git a/distro/common/html/knife-exec.1.html b/distro/common/html/knife-exec.1.html index abd81449df..5f6fc2e377 100644 --- a/distro/common/html/knife-exec.1.html +++ b/distro/common/html/knife-exec.1.html @@ -111,11 +111,11 @@ description of the commands available.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -125,7 +125,7 @@ description of the commands available.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-exec(1)</li> </ol> diff --git a/distro/common/html/knife-index.1.html b/distro/common/html/knife-index.1.html index d5c6b6b943..e510fe2523 100644 --- a/distro/common/html/knife-index.1.html +++ b/distro/common/html/knife-index.1.html @@ -102,11 +102,11 @@ time for all objects to be indexed and available for search.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -116,7 +116,7 @@ time for all objects to be indexed and available for search.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-index(1)</li> </ol> diff --git a/distro/common/html/knife-node.1.html b/distro/common/html/knife-node.1.html index 48b104d458..87124b706e 100644 --- a/distro/common/html/knife-node.1.html +++ b/distro/common/html/knife-node.1.html @@ -227,11 +227,11 @@ run list, the correct syntax is "role[ROLE_NAME]"</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -241,7 +241,7 @@ run list, the correct syntax is "role[ROLE_NAME]"</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-node(1)</li> </ol> diff --git a/distro/common/html/knife-recipe.1.html b/distro/common/html/knife-recipe.1.html deleted file mode 100644 index 3f98e026a6..0000000000 --- a/distro/common/html/knife-recipe.1.html +++ /dev/null @@ -1,92 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta http-equiv='content-type' value='text/html;charset=utf8'> - <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'> - <title>knife-recipe(1) - List the recipes available on a Chef Server</title> - <style type='text/css' media='all'> - /* style: man */ - body#manpage {margin:0} - .mp {max-width:100ex;padding:0 9ex 1ex 4ex} - .mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0} - .mp h2 {margin:10px 0 0 0} - .mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex} - .mp h3 {margin:0 0 0 4ex} - .mp dt {margin:0;clear:left} - .mp dt.flush {float:left;width:8ex} - .mp dd {margin:0 0 0 9ex} - .mp h1,.mp h2,.mp h3,.mp h4 {clear:left} - .mp pre {margin-bottom:20px} - .mp pre+h2,.mp pre+h3 {margin-top:22px} - .mp h2+pre,.mp h3+pre {margin-top:5px} - .mp img {display:block;margin:auto} - .mp h1.man-title {display:none} - .mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143} - .mp h2 {font-size:16px;line-height:1.25} - .mp h1 {font-size:20px;line-height:2} - .mp {text-align:justify;background:#fff} - .mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211} - .mp h1,.mp h2,.mp h3,.mp h4 {color:#030201} - .mp u {text-decoration:underline} - .mp code,.mp strong,.mp b {font-weight:bold;color:#131211} - .mp em,.mp var {font-style:italic;color:#232221;text-decoration:none} - .mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff} - .mp b.man-ref {font-weight:normal;color:#434241} - .mp pre {padding:0 4ex} - .mp pre code {font-weight:normal;color:#434241} - .mp h2+pre,h3+pre {padding-left:0} - ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px} - ol.man-decor {width:100%} - ol.man-decor li.tl {text-align:left} - ol.man-decor li.tc {text-align:center;letter-spacing:4px} - ol.man-decor li.tr {text-align:right;float:right} - </style> - <style type='text/css' media='all'> - /* style: toc */ - .man-navigation {display:block !important;position:fixed;top:0;left:113ex;height:100%;width:100%;padding:48px 0 0 0;border-left:1px solid #dbdbdb;background:#eee} - .man-navigation a,.man-navigation a:hover,.man-navigation a:link,.man-navigation a:visited {display:block;margin:0;padding:5px 2px 5px 30px;color:#999;text-decoration:none} - .man-navigation a:hover {color:#111;text-decoration:underline} - </style> -</head> -<!-- - The following styles are deprecated and will be removed at some point: - div#man, div#man ol.man, div#man ol.head, div#man ol.man. - - The .man-page, .man-decor, .man-head, .man-foot, .man-title, and - .man-navigation should be used instead. ---> -<body id='manpage'> - <div class='mp' id='man'> - - <div class='man-navigation' style='display:none'> - <a href="#NAME">NAME</a> - <a href="#SYNOPSIS">SYNOPSIS</a> - </div> - - <ol class='man-decor man-head man head'> - <li class='tl'>knife-recipe(1)</li> - <li class='tc'>Chef Manual</li> - <li class='tr'>knife-recipe(1)</li> - </ol> - - <h2 id="NAME">NAME</h2> -<p class="man-name"> - <code>knife-recipe</code> - <span class="man-whatis">List the recipes available on a Chef Server</span> -</p> - -<h2 id="SYNOPSIS">SYNOPSIS</h2> - -<p><strong>knife</strong> <strong>recipe list [PATTERN]</strong></p> - -<p>List the recipes available on the server. The results shown can be limited with the optional PATTERN, which is a regular expression. PATTERN should be given in quotes, without slashes.</p> - - - <ol class='man-decor man-foot man foot'> - <li class='tl'>Chef 0.10.0</li> - <li class='tc'>April 2011</li> - <li class='tr'>knife-recipe(1)</li> - </ol> - - </div> -</body> -</html> diff --git a/distro/common/html/knife-role.1.html b/distro/common/html/knife-role.1.html index 18449b6269..4a14fffa30 100644 --- a/distro/common/html/knife-role.1.html +++ b/distro/common/html/knife-role.1.html @@ -177,11 +177,11 @@ run_list.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -191,7 +191,7 @@ run_list.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-role(1)</li> </ol> diff --git a/distro/common/html/knife-search.1.html b/distro/common/html/knife-search.1.html index 5cb47d344e..71ac2b4876 100644 --- a/distro/common/html/knife-search.1.html +++ b/distro/common/html/knife-search.1.html @@ -265,11 +265,11 @@ www.example.com:</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -279,7 +279,7 @@ www.example.com:</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-search(1)</li> </ol> diff --git a/distro/common/html/knife-ssh.1.html b/distro/common/html/knife-ssh.1.html index 693406c43d..dbf7fd26c9 100644 --- a/distro/common/html/knife-ssh.1.html +++ b/distro/common/html/knife-ssh.1.html @@ -133,11 +133,11 @@ option.</dd> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -147,7 +147,7 @@ option.</dd> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-ssh(1)</li> </ol> diff --git a/distro/common/html/knife-status.1.html b/distro/common/html/knife-status.1.html index 33aaafe5c1..9f79a18a70 100644 --- a/distro/common/html/knife-status.1.html +++ b/distro/common/html/knife-status.1.html @@ -105,11 +105,11 @@ may not be publicly reachable.</p> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -119,7 +119,7 @@ may not be publicly reachable.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-status(1)</li> </ol> diff --git a/distro/common/html/knife-tag.1.html b/distro/common/html/knife-tag.1.html index 013a296d84..d1fe67105f 100644 --- a/distro/common/html/knife-tag.1.html +++ b/distro/common/html/knife-tag.1.html @@ -114,11 +114,11 @@ <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> with many contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Daniel DeLeo <a href="mailto:dan@opscode.com" data-bare-link="true">dan@opscode.com</a>. +<p> This manual page was written by Daniel DeLeo <a href="mailto:dan@opscode.com" data-bare-link="true">dan@opscode.com</a>. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <h2 id="CHEF">CHEF</h2> @@ -128,7 +128,7 @@ <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife-tag(1)</li> </ol> diff --git a/distro/common/html/knife.1.html b/distro/common/html/knife.1.html index bebaf89a87..4a47a8ccbf 100644 --- a/distro/common/html/knife.1.html +++ b/distro/common/html/knife.1.html @@ -181,14 +181,9 @@ Private key file to authenticate to the Chef server. Corresponds to the <li><code>chef_server_url</code>: URL of the Chef server. Corresponds to the <code>-s</code> or <code>--server-url</code> option. This is requested from the user when running this sub-command.</li> -<li><code>cache_type</code>: -The type of cache to use. Default is BasicFile. This can be any type of -Cache that moneta supports: BasicFile, Berkeley, Couch, DataMapper, -File, LMC, Memcache, Memory, MongoDB, Redis, Rufus, S3, SDBM, Tyrant, -Xattr, YAML.</li> -<li><code>cache_options</code>: -Specifies various options to use for caching. These options are -dependent on the <code>cache_type</code>.</li> +<li><code>syntax_check_cache_path</code>: +Specifies the path to a directory where knife caches information +about files that it has syntax checked.</li> <li><code>validation_client_name</code>: Specifies the name of the client used to validate new clients.</li> <li><code>validation_key</code>: @@ -291,12 +286,12 @@ data editing entirely.</dd> <h2 id="AUTHOR">AUTHOR</h2> -<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> of Opscode +<p> Chef was written by Adam Jacob <a href="mailto:adam@opscode.com" data-bare-link="true">adam@opscode.com</a> of Opscode (<a href="http://www.opscode.com" data-bare-link="true">http://www.opscode.com</a>), with contributions from the community.</p> <h2 id="DOCUMENTATION">DOCUMENTATION</h2> -<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>.</p> +<p> This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a>.</p> <h2 id="LICENSE">LICENSE</h2> @@ -311,7 +306,7 @@ data editing entirely.</dd> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 11.0.0.alpha</li> - <li class='tc'>September 2012</li> + <li class='tc'>January 2013</li> <li class='tr'>knife(1)</li> </ol> diff --git a/distro/common/man/man1/chef-shell.1 b/distro/common/man/man1/chef-shell.1 index 05cb735470..3978c0c9b5 100644 --- a/distro/common/man/man1/chef-shell.1 +++ b/distro/common/man/man1/chef-shell.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-SHELL" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-SHELL" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-shell\fR \- Interactive Chef Console diff --git a/distro/common/man/man1/knife-bootstrap.1 b/distro/common/man/man1/knife-bootstrap.1 index da5283c63d..d371906534 100644 --- a/distro/common/man/man1/knife-bootstrap.1 +++ b/distro/common/man/man1/knife-bootstrap.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-BOOTSTRAP" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-BOOTSTRAP" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-bootstrap\fR \- Install Chef Client on a remote host diff --git a/distro/common/man/man1/knife-client.1 b/distro/common/man/man1/knife-client.1 index 977688871b..d36e5d0c68 100644 --- a/distro/common/man/man1/knife-client.1 +++ b/distro/common/man/man1/knife-client.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-CLIENT" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-CLIENT" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-client\fR \- Manage Chef API Clients diff --git a/distro/common/man/man1/knife-configure.1 b/distro/common/man/man1/knife-configure.1 index fd828ca966..fb25fc5114 100644 --- a/distro/common/man/man1/knife-configure.1 +++ b/distro/common/man/man1/knife-configure.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-CONFIGURE" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-CONFIGURE" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-configure\fR \- Generate configuration files for knife or Chef Client diff --git a/distro/common/man/man1/knife-cookbook-site.1 b/distro/common/man/man1/knife-cookbook-site.1 index 7f17119787..d834b10ec8 100644 --- a/distro/common/man/man1/knife-cookbook-site.1 +++ b/distro/common/man/man1/knife-cookbook-site.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-COOKBOOK\-SITE" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-COOKBOOK\-SITE" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-cookbook\-site\fR \- Install and update open source cookbooks diff --git a/distro/common/man/man1/knife-cookbook.1 b/distro/common/man/man1/knife-cookbook.1 index 270e23db77..e0c9536cc6 100644 --- a/distro/common/man/man1/knife-cookbook.1 +++ b/distro/common/man/man1/knife-cookbook.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-COOKBOOK" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-COOKBOOK" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-cookbook\fR \- upload and manage chef cookbooks diff --git a/distro/common/man/man1/knife-data-bag.1 b/distro/common/man/man1/knife-data-bag.1 index 1a7bc0c398..4878f5d2b9 100644 --- a/distro/common/man/man1/knife-data-bag.1 +++ b/distro/common/man/man1/knife-data-bag.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-DATA\-BAG" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-DATA\-BAG" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-data\-bag\fR \- Store arbitrary data on a Chef Server diff --git a/distro/common/man/man1/knife-environment.1 b/distro/common/man/man1/knife-environment.1 index 07050a87fe..90b73443f2 100644 --- a/distro/common/man/man1/knife-environment.1 +++ b/distro/common/man/man1/knife-environment.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-ENVIRONMENT" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-ENVIRONMENT" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-environment\fR \- Define cookbook policies for the environments in your infrastructure diff --git a/distro/common/man/man1/knife-exec.1 b/distro/common/man/man1/knife-exec.1 index 829d58ff09..365fd252cf 100644 --- a/distro/common/man/man1/knife-exec.1 +++ b/distro/common/man/man1/knife-exec.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-EXEC" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-EXEC" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-exec\fR \- Run user scripts using the Chef API DSL diff --git a/distro/common/man/man1/knife-index.1 b/distro/common/man/man1/knife-index.1 index 268d4acf95..e5e3574e37 100644 --- a/distro/common/man/man1/knife-index.1 +++ b/distro/common/man/man1/knife-index.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-INDEX" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-INDEX" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-index\fR \- Rebuild the search index on a Chef Server diff --git a/distro/common/man/man1/knife-node.1 b/distro/common/man/man1/knife-node.1 index 4796822f6d..03fae4bc8d 100644 --- a/distro/common/man/man1/knife-node.1 +++ b/distro/common/man/man1/knife-node.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-NODE" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-NODE" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-node\fR \- Manage the hosts in your infrastructure diff --git a/distro/common/man/man1/knife-role.1 b/distro/common/man/man1/knife-role.1 index c9fee15c19..9bed938917 100644 --- a/distro/common/man/man1/knife-role.1 +++ b/distro/common/man/man1/knife-role.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-ROLE" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-ROLE" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-role\fR \- Group common configuration settings diff --git a/distro/common/man/man1/knife-search.1 b/distro/common/man/man1/knife-search.1 index 6e16e3b7d1..5dedce0961 100644 --- a/distro/common/man/man1/knife-search.1 +++ b/distro/common/man/man1/knife-search.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-SEARCH" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-SEARCH" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-search\fR \- Find objects on a Chef Server by query diff --git a/distro/common/man/man1/knife-ssh.1 b/distro/common/man/man1/knife-ssh.1 index bb2abeb8c2..be228624dc 100644 --- a/distro/common/man/man1/knife-ssh.1 +++ b/distro/common/man/man1/knife-ssh.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-SSH" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-SSH" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-ssh\fR \- Run a command or interactive session on multiple remote hosts diff --git a/distro/common/man/man1/knife-status.1 b/distro/common/man/man1/knife-status.1 index 69bf949259..347adaaf96 100644 --- a/distro/common/man/man1/knife-status.1 +++ b/distro/common/man/man1/knife-status.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-STATUS" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-STATUS" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-status\fR \- Display status information for the nodes in your infrastructure diff --git a/distro/common/man/man1/knife-tag.1 b/distro/common/man/man1/knife-tag.1 index 1846ee0794..1c38a14e35 100644 --- a/distro/common/man/man1/knife-tag.1 +++ b/distro/common/man/man1/knife-tag.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE\-TAG" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE\-TAG" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\-tag\fR \- Apply tags to nodes on a Chef Server diff --git a/distro/common/man/man1/knife.1 b/distro/common/man/man1/knife.1 index 2c33bd6c2d..e33113f1c6 100644 --- a/distro/common/man/man1/knife.1 +++ b/distro/common/man/man1/knife.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "KNIFE" "1" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "KNIFE" "1" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBknife\fR \- Chef Server API client utility @@ -163,10 +163,7 @@ If the config file exists, knife uses these settings for \fBGENERAL OPTIONS\fR d \fBchef_server_url\fR: URL of the Chef server\. Corresponds to the \fB\-s\fR or \fB\-\-server\-url\fR option\. This is requested from the user when running this sub\-command\. . .IP "\(bu" 4 -\fBcache_type\fR: The type of cache to use\. Default is BasicFile\. This can be any type of Cache that moneta supports: BasicFile, Berkeley, Couch, DataMapper, File, LMC, Memcache, Memory, MongoDB, Redis, Rufus, S3, SDBM, Tyrant, Xattr, YAML\. -. -.IP "\(bu" 4 -\fBcache_options\fR: Specifies various options to use for caching\. These options are dependent on the \fBcache_type\fR\. +\fBsyntax_check_cache_path\fR: Specifies the path to a directory where knife caches information about files that it has syntax checked\. . .IP "\(bu" 4 \fBvalidation_client_name\fR: Specifies the name of the client used to validate new clients\. diff --git a/distro/common/man/man8/chef-client.8 b/distro/common/man/man8/chef-client.8 index c8ecd58284..1ed91de287 100644 --- a/distro/common/man/man8/chef-client.8 +++ b/distro/common/man/man8/chef-client.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-CLIENT" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-CLIENT" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-client\fR \- Runs a client node connecting to a chef\-server\. diff --git a/distro/common/man/man8/chef-expander.8 b/distro/common/man/man8/chef-expander.8 index 31d8f36b51..8a8ea072ec 100644 --- a/distro/common/man/man8/chef-expander.8 +++ b/distro/common/man/man8/chef-expander.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-EXPANDER" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-EXPANDER" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-expander\fR \- fetches messages from RabbitMQ, processes, and loads into chef\-solr diff --git a/distro/common/man/man8/chef-expanderctl.8 b/distro/common/man/man8/chef-expanderctl.8 index d210ddaa9f..732d849306 100644 --- a/distro/common/man/man8/chef-expanderctl.8 +++ b/distro/common/man/man8/chef-expanderctl.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-EXPANDERCTL" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-EXPANDERCTL" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-expanderctl\fR \- management program for chef\-expander diff --git a/distro/common/man/man8/chef-server-webui.8 b/distro/common/man/man8/chef-server-webui.8 index c5c22c3110..77615e0ab6 100644 --- a/distro/common/man/man8/chef-server-webui.8 +++ b/distro/common/man/man8/chef-server-webui.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-SERVER\-WEBUI" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-SERVER\-WEBUI" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-server\-webui\fR \- Start the Chef Server merb application slice providing Web User Interface (Management Console)\. diff --git a/distro/common/man/man8/chef-server.8 b/distro/common/man/man8/chef-server.8 index 5928f7b7a1..548116c542 100644 --- a/distro/common/man/man8/chef-server.8 +++ b/distro/common/man/man8/chef-server.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-SERVER" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-SERVER" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-server\fR \- Start the Chef Server merb application slice\. diff --git a/distro/common/man/man8/chef-solo.8 b/distro/common/man/man8/chef-solo.8 index 332fb1a4f0..457989e052 100644 --- a/distro/common/man/man8/chef-solo.8 +++ b/distro/common/man/man8/chef-solo.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-SOLO" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-SOLO" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-solo\fR \- Runs chef in solo mode against a specified cookbook location\. diff --git a/distro/common/man/man8/chef-solr.8 b/distro/common/man/man8/chef-solr.8 index 7f3a68f138..8552945f31 100644 --- a/distro/common/man/man8/chef-solr.8 +++ b/distro/common/man/man8/chef-solr.8 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "CHEF\-SOLR" "8" "September 2012" "Chef 11.0.0.alpha" "Chef Manual" +.TH "CHEF\-SOLR" "8" "January 2013" "Chef 11.0.0.alpha" "Chef Manual" . .SH "NAME" \fBchef\-solr\fR \- Runs as Chef\'s search server diff --git a/lib/chef/config.rb b/lib/chef/config.rb index d05692ddc8..83b8a86819 100644 --- a/lib/chef/config.rb +++ b/lib/chef/config.rb @@ -72,7 +72,7 @@ class Chef # url<String>:: String to be set for all of the chef-server-api URL's # config_attr_writer :chef_server_url do |url| - url.strip! + url = url.strip configure do |c| [ :registration_url, :template_url, diff --git a/lib/chef/cookbook/chefignore.rb b/lib/chef/cookbook/chefignore.rb index e9d54639e4..af145f3a3c 100644 --- a/lib/chef/cookbook/chefignore.rb +++ b/lib/chef/cookbook/chefignore.rb @@ -20,7 +20,7 @@ class Chef class Cookbook class Chefignore - COMMENTS_AND_WHITESPACE = /^\w*(?:#.*)?$/ + COMMENTS_AND_WHITESPACE = /^\s*(?:#.*)?$/ attr_reader :ignores diff --git a/lib/chef/cookbook/cookbook_version_loader.rb b/lib/chef/cookbook/cookbook_version_loader.rb index 48de17cc5a..e98da77d7f 100644 --- a/lib/chef/cookbook/cookbook_version_loader.rb +++ b/lib/chef/cookbook/cookbook_version_loader.rb @@ -104,9 +104,7 @@ class Chef end def empty? - cookbook_settings.inject(true) do |all_empty, files| - all_empty && files.last.empty? - end + @cookbook_settings.values.all? { |files_hash| files_hash.empty? } end def merge!(other_cookbook_loader) diff --git a/lib/chef/dsl/recipe.rb b/lib/chef/dsl/recipe.rb index 1bfe8da0e0..88006aced3 100644 --- a/lib/chef/dsl/recipe.rb +++ b/lib/chef/dsl/recipe.rb @@ -61,11 +61,11 @@ class Chef # If we have a resource like this one, we want to steal its state args << run_context resource = resource_class.new(*args) + resource.source_line = caller[0] resource.load_prior_resource resource.cookbook_name = cookbook_name resource.recipe_name = @recipe_name resource.params = @params - resource.source_line = caller[0] # Determine whether this resource is being created in the context of an enclosing Provider resource.enclosing_provider = self.is_a?(Chef::Provider) ? self : nil # Evaluate resource attribute DSL diff --git a/lib/chef/formatters/doc.rb b/lib/chef/formatters/doc.rb index e5b2ab17d7..6a969404c1 100644 --- a/lib/chef/formatters/doc.rb +++ b/lib/chef/formatters/doc.rb @@ -21,7 +21,7 @@ class Chef end def run_completed(node) - if Chef::Config[:whyrun] + if Chef::Config[:why_run] puts "Chef Client finished, #{@updated_resources} resources would have been updated" else puts "Chef Client finished, #{@updated_resources} resources updated" @@ -29,7 +29,7 @@ class Chef end def run_failed(exception) - if Chef::Config[:whyrun] + if Chef::Config[:why_run] puts "Chef Client failed. #{@updated_resources} resources would have been updated" else puts "Chef Client failed. #{@updated_resources} resources updated" diff --git a/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb b/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb index 57d8de0ef9..813f755560 100644 --- a/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +++ b/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb @@ -56,6 +56,7 @@ class Chef return nil if dynamic_resource? @snippet ||= begin if file = resource.source_line[/^(([\w]:)?[^:]+):([\d]+)/,1] and line = resource.source_line[/^#{file}:([\d]+)/,1].to_i + return nil unless ::File.exists?(file) lines = IO.readlines(file) relevant_lines = ["# In #{file}\n\n"] diff --git a/lib/chef/knife/bootstrap.rb b/lib/chef/knife/bootstrap.rb index a4c117e28f..53b31ad676 100644 --- a/lib/chef/knife/bootstrap.rb +++ b/lib/chef/knife/bootstrap.rb @@ -200,13 +200,13 @@ class Chef ssh = Chef::Knife::Ssh.new ssh.ui = ui ssh.name_args = [ server_name, ssh_command ] - ssh.config[:ssh_user] = config[:ssh_user] + ssh.config[:ssh_user] = Chef::Config[:knife][:ssh_user] || config[:ssh_user] ssh.config[:ssh_password] = config[:ssh_password] ssh.config[:ssh_port] = Chef::Config[:knife][:ssh_port] || config[:ssh_port] ssh.config[:ssh_gateway] = Chef::Config[:knife][:ssh_gateway] || config[:ssh_gateway] - ssh.config[:identity_file] = config[:identity_file] + ssh.config[:identity_file] = Chef::Config[:knife][:identity_file] || config[:identity_file] ssh.config[:manual] = true - ssh.config[:host_key_verify] = config[:host_key_verify] + ssh.config[:host_key_verify] = Chef::Config[:knife][:host_key_verify] || config[:host_key_verify] ssh.config[:on_error] = :raise ssh end diff --git a/lib/chef/knife/bootstrap/archlinux-gems.erb b/lib/chef/knife/bootstrap/archlinux-gems.erb index 85d6236197..4b9cd07c8f 100644 --- a/lib/chef/knife/bootstrap/archlinux-gems.erb +++ b/lib/chef/knife/bootstrap/archlinux-gems.erb @@ -10,23 +10,16 @@ if [ ! -f /usr/bin/chef-client ]; then fi mkdir -p /etc/chef -( -cat <<'EOP' + +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -35,16 +28,13 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> -( -cat <<'EOP' +cat > /etc/chef/client.rb <<'EOP' log_level :info log_location STDOUT chef_server_url "<%= @chef_config[:chef_server_url] %>" @@ -64,12 +54,9 @@ http_proxy "<%= knife_config[:bootstrap_proxy] %>" https_proxy "<%= knife_config[:bootstrap_proxy] %>" <% end -%> EOP -) > /etc/chef/client.rb -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/bootstrap/centos5-gems.erb b/lib/chef/knife/bootstrap/centos5-gems.erb index f9626c3c2b..5db3c1a0e8 100644 --- a/lib/chef/knife/bootstrap/centos5-gems.erb +++ b/lib/chef/knife/bootstrap/centos5-gems.erb @@ -2,6 +2,11 @@ bash -c ' <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%> if [ ! -f /usr/bin/chef-client ]; then + tmp_dir=$(mktemp -d) || exit 1 + pushd "$tmp_dir" + + yum install -y wget + wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm rpm -Uvh epel-release-5-4.noarch.rpm wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://rpm.aegisco.com/aegisco/rhel/aegisco-rhel.rpm @@ -9,11 +14,11 @@ if [ ! -f /usr/bin/chef-client ]; then yum install -y ruby ruby-devel gcc gcc-c++ automake autoconf make - cd /tmp - wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz - tar zxf rubygems-1.6.2.tgz - cd rubygems-1.6.2 - ruby setup.rb --no-format-executable + wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz -O - | tar zxf - + (cd rubygems-1.6.2 && ruby setup.rb --no-format-executable) + + popd + rm -r "$tmp_dir" fi gem update --system @@ -23,23 +28,15 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %> mkdir -p /etc/chef -( -cat <<'EOP' +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -48,24 +45,18 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> -( -cat <<'EOP' +cat > /etc/chef/client.rb <<'EOP' <%= config_content %> EOP -) > /etc/chef/client.rb -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/bootstrap/chef-full.erb b/lib/chef/knife/bootstrap/chef-full.erb index 771ef85884..b7d73b3442 100644 --- a/lib/chef/knife/bootstrap/chef-full.erb +++ b/lib/chef/knife/bootstrap/chef-full.erb @@ -16,32 +16,25 @@ version_string="-v <%= chef_version %>" if ! exists /usr/bin/chef-client; then if exists wget; then bash <(wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %> ${install_sh} -O -) ${version_string} + elif exists curl; then + bash <(curl -L <%= "--proxy \"#{knife_config[:bootstrap_proxy]}\" " if knife_config[:bootstrap_proxy] %> ${install_sh}) ${version_string} else - if exists curl; then - bash <(curl -L <%= "--proxy=on " if knife_config[:bootstrap_proxy] %> ${install_sh}) ${version_string} - fi + echo "Neither wget nor curl found. Please install one and try again." >&2 + exit 1 fi fi mkdir -p /etc/chef -( -cat <<'EOP' +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -50,24 +43,18 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> -( -cat <<'EOP' +cat > /etc/chef/client.rb <<'EOP' <%= config_content %> EOP -) > /etc/chef/client.rb -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/bootstrap/fedora13-gems.erb b/lib/chef/knife/bootstrap/fedora13-gems.erb index a8448342df..e555c0652a 100644 --- a/lib/chef/knife/bootstrap/fedora13-gems.erb +++ b/lib/chef/knife/bootstrap/fedora13-gems.erb @@ -10,23 +10,15 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %> mkdir -p /etc/chef -( -cat <<'EOP' +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -35,24 +27,18 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> -( -cat <<'EOP' +cat > /etc/chef/client.rb <<'EOP' <%= config_content %> EOP -) > /etc/chef/client.rb -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb b/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb index 0e44361d82..93ec208ac3 100644 --- a/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +++ b/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb @@ -10,23 +10,15 @@ fi apt-get update apt-get install -y chef -( -cat <<'EOP' +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -35,11 +27,9 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> @@ -56,10 +46,8 @@ echo 'http_proxy "knife_config[:bootstrap_proxy]"' >> /etc/chef/client.rb echo 'https_proxy "knife_config[:bootstrap_proxy]"' >> /etc/chef/client.rb <% end -%> -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb b/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb index 63448fc4d3..f5ecc5f7b9 100644 --- a/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +++ b/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb @@ -4,11 +4,8 @@ bash -c ' if [ ! -f /usr/bin/chef-client ]; then apt-get update apt-get install -y ruby ruby1.8-dev build-essential wget libruby-extras libruby1.8-extras - cd /tmp - wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz - tar zxf rubygems-1.6.2.tgz - cd rubygems-1.6.2 - ruby setup.rb --no-format-executable + wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz -O - | tar zxf - + (cd rubygems-1.6.2 && ruby setup.rb --no-format-executable) fi gem update --no-rdoc --no-ri @@ -17,23 +14,15 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %> mkdir -p /etc/chef -( -cat <<'EOP' +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -42,24 +31,18 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> -( -cat <<'EOP' +cat > /etc/chef/client.rb <<'EOP' <%= config_content %> EOP -) > /etc/chef/client.rb -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb b/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb index e7da7db39b..7d9549a125 100644 --- a/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +++ b/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb @@ -12,23 +12,15 @@ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %> mkdir -p /etc/chef -( -cat <<'EOP' +awk NF > /etc/chef/validation.pem <<'EOP' <%= validation_key %> EOP -) > /tmp/validation.pem -awk NF /tmp/validation.pem > /etc/chef/validation.pem -rm /tmp/validation.pem chmod 0600 /etc/chef/validation.pem <% if @chef_config[:encrypted_data_bag_secret] -%> -( -cat <<'EOP' +awk NF > /etc/chef/encrypted_data_bag_secret <<'EOP' <%= encrypted_data_bag_secret %> EOP -) > /tmp/encrypted_data_bag_secret -awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret -rm /tmp/encrypted_data_bag_secret chmod 0600 /etc/chef/encrypted_data_bag_secret <% end -%> @@ -37,24 +29,18 @@ chmod 0600 /etc/chef/encrypted_data_bag_secret mkdir -p /etc/chef/ohai/hints <% @chef_config[:knife][:hints].each do |name, hash| -%> -( -cat <<'EOP' +cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP' <%= hash.to_json %> EOP -) > /etc/chef/ohai/hints/<%= name %>.json <% end -%> <% end -%> -( -cat <<'EOP' +cat > /etc/chef/client.rb <<'EOP' <%= config_content %> EOP -) > /etc/chef/client.rb -( -cat <<'EOP' +cat > /etc/chef/first-boot.json <<'EOP' <%= first_boot.to_json %> EOP -) > /etc/chef/first-boot.json <%= start_chef %>' diff --git a/lib/chef/knife/cookbook_create.rb b/lib/chef/knife/cookbook_create.rb index c2e92e6b42..1e6797e4e3 100644 --- a/lib/chef/knife/cookbook_create.rb +++ b/lib/chef/knife/cookbook_create.rb @@ -73,10 +73,10 @@ class Chef email = config[:cookbook_email] || "YOUR_EMAIL" license = ((config[:cookbook_license] != "false") && config[:cookbook_license]) || "none" readme_format = ((config[:readme_format] != "false") && config[:readme_format]) || "md" - create_cookbook(cookbook_path,cookbook_name, copyright, license) - create_readme(cookbook_path,cookbook_name,readme_format) - create_changelog(cookbook_path,cookbook_name) - create_metadata(cookbook_path,cookbook_name, copyright, email, license,readme_format) + create_cookbook(cookbook_path, cookbook_name, copyright, license) + create_readme(cookbook_path, cookbook_name, readme_format) + create_changelog(cookbook_path, cookbook_name) + create_metadata(cookbook_path, cookbook_name, copyright, email, license, readme_format) end def create_cookbook(dir, cookbook_name, copyright, license) @@ -193,7 +193,7 @@ This file is used to list changes made in each version of #{cookbook_name}. * Initial release of #{cookbook_name} -- - - +- - - Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown. The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown. @@ -202,54 +202,203 @@ EOH end end - def create_readme(dir, cookbook_name,readme_format) + def create_readme(dir, cookbook_name, readme_format) msg("** Creating README for cookbook: #{cookbook_name}") unless File.exists?(File.join(dir, cookbook_name, "README.#{readme_format}")) open(File.join(dir, cookbook_name, "README.#{readme_format}"), "w") do |file| case readme_format when "rdoc" file.puts <<-EOH -= DESCRIPTION: - -= REQUIREMENTS: - -= ATTRIBUTES: - -= USAGE: - += #{cookbook_name} Cookbook +TODO: Enter the cookbook description here. + +e.g. +This cookbook makes your favorite breakfast sandwhich. + +== Requirements +TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc. + +e.g. +==== packages +- +toaster+ - #{cookbook_name} needs toaster to brown your bagel. + +== Attributes +TODO: List you cookbook attributes here. + +e.g. +==== #{cookbook_name}::default +<table> + <tr> + <th>Key</th> + <th>Type</th> + <th>Description</th> + <th>Default</th> + </tr> + <tr> + <td><tt>['#{cookbook_name}']['bacon']</tt></td> + <td>Boolean</td> + <td>whether to include bacon</td> + <td><tt>true</tt></td> + </tr> +</table> + +== Usage +==== #{cookbook_name}::default +TODO: Write usage instructions for each cookbook. + +e.g. +Just include +#{cookbook_name}+ in your node's +run_list+: + + { + "name":"my_node", + "run_list": [ + "recipe[#{cookbook_name}]" + ] + } + +== Contributing +TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section. + +e.g. +1. Fork the repository on Github +2. Create a named feature branch (like `add_component_x`) +3. Write you change +4. Write tests for your change (if applicable) +5. Run the tests, ensuring they all pass +6. Submit a Pull Request using Github + +== License and Authors +Authors: TODO: List authors EOH when "md","mkd","txt" file.puts <<-EOH -Description -=========== +#{cookbook_name} Cookbook +#{'='*"#{cookbook_name} Cookbook".length} +TODO: Enter the cookbook description here. + +e.g. +This cookbook makes your favorite breakfast sandwhich. Requirements -============ +------------ +TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc. + +e.g. +#### packages +- `toaster` - #{cookbook_name} needs toaster to brown your bagel. Attributes -========== +---------- +TODO: List you cookbook attributes here. + +e.g. +#### #{cookbook_name}::default +<table> + <tr> + <th>Key</th> + <th>Type</th> + <th>Description</th> + <th>Default</th> + </tr> + <tr> + <td><tt>['#{cookbook_name}']['bacon']</tt></td> + <td>Boolean</td> + <td>whether to include bacon</td> + <td><tt>true</tt></td> + </tr> +</table> Usage -===== - +----- +#### #{cookbook_name}::default +TODO: Write usage instructions for each cookbook. + +e.g. +Just include `#{cookbook_name}` in your node's `run_list`: + +```json +{ + "name":"my_node", + "run_list": [ + "recipe[#{cookbook_name}]" + ] +} +``` + +Contributing +------------ +TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section. + +e.g. +1. Fork the repository on Github +2. Create a named feature branch (like `add_component_x`) +3. Write you change +4. Write tests for your change (if applicable) +5. Run the tests, ensuring they all pass +6. Submit a Pull Request using Github + +License and Authors +------------------- +Authors: TODO: List authors EOH else file.puts <<-EOH -Description +#{cookbook_name} Cookbook +#{'='*"#{cookbook_name} Cookbook".length} + TODO: Enter the cookbook description here. + + e.g. + This cookbook makes your favorite breakfast sandwhich. Requirements + TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc. + + e.g. + toaster #{cookbook_name} needs toaster to brown your bagel. Attributes + TODO: List you cookbook attributes here. -Usage + #{cookbook_name} + Key Type Description Default + ['#{cookbook_name}']['bacon'] Boolean whether to include bacon true +Usage + #{cookbook_name} + TODO: Write usage instructions for each cookbook. + + e.g. + Just include `#{cookbook_name}` in your node's `run_list`: + + [code] + { + "name":"my_node", + "run_list": [ + "recipe[#{cookbook_name}]" + ] + } + [/code] + +Contributing + TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section. + + e.g. + 1. Fork the repository on Github + 2. Create a named feature branch (like `add_component_x`) + 3. Write you change + 4. Write tests for your change (if applicable) + 5. Run the tests, ensuring they all pass + 6. Submit a Pull Request using Github + +License and Authors + Authors: TODO: List authors EOH end end end end - def create_metadata(dir, cookbook_name, copyright, email, license,readme_format) + def create_metadata(dir, cookbook_name, copyright, email, license, readme_format) msg("** Creating metadata for cookbook: #{cookbook_name}") license_name = case license @@ -271,12 +420,13 @@ EOH long_description = "long_description IO.read(File.join(File.dirname(__FILE__), 'README.#{readme_format}'))" end file.puts <<-EOH -maintainer "#{copyright}" -maintainer_email "#{email}" -license "#{license_name}" -description "Installs/Configures #{cookbook_name}" +name '#{cookbook_name}' +maintainer '#{copyright}' +maintainer_email '#{email}' +license '#{license_name}' +description 'Installs/Configures #{cookbook_name}' #{long_description} -version "0.1.0" +version '0.1.0' EOH end end diff --git a/lib/chef/knife/core/bootstrap_context.rb b/lib/chef/knife/core/bootstrap_context.rb index 46ea8e683e..0d3ff36867 100644 --- a/lib/chef/knife/core/bootstrap_context.rb +++ b/lib/chef/knife/core/bootstrap_context.rb @@ -47,11 +47,11 @@ class Chef end def validation_key - IO.read(@chef_config[:validation_key]) + IO.read(File.expand_path(@chef_config[:validation_key])) end def encrypted_data_bag_secret - IO.read(@chef_config[:encrypted_data_bag_secret]) + IO.read(File.expand_path(@chef_config[:encrypted_data_bag_secret])) end def config_content diff --git a/lib/chef/knife/ssh.rb b/lib/chef/knife/ssh.rb index 481d97c1e7..100fee9fef 100644 --- a/lib/chef/knife/ssh.rb +++ b/lib/chef/knife/ssh.rb @@ -72,13 +72,13 @@ class Chef :short => "-p PORT", :long => "--ssh-port PORT", :description => "The ssh port", - :proc => Proc.new { |key| Chef::Config[:knife][:ssh_port] = key } + :proc => Proc.new { |key| Chef::Config[:knife][:ssh_port] = key.strip } option :ssh_gateway, :short => "-G GATEWAY", :long => "--ssh-gateway GATEWAY", :description => "The ssh gateway", - :proc => Proc.new { |key| Chef::Config[:knife][:ssh_gateway] = key } + :proc => Proc.new { |key| Chef::Config[:knife][:ssh_gateway] = key.strip } option :identity_file, :short => "-i IDENTITY_FILE", @@ -114,6 +114,22 @@ class Chef @session ||= Net::SSH::Multi.start(:concurrent_connections => config[:concurrency], :on_error => ssh_error_handler) end + def configure_gateway + config[:ssh_gateway] ||= Chef::Config[:knife][:ssh_gateway] + if config[:ssh_gateway] + gw_host, gw_user = config[:ssh_gateway].split('@').reverse + gw_host, gw_port = gw_host.split(':') + gw_opts = gw_port ? { :port => gw_port } : {} + + session.via(gw_host, gw_user || config[:ssh_user], gw_opts) + end + rescue Net::SSH::AuthenticationFailed + user = gw_user || config[:ssh_user] + prompt = "Enter the password for #{user}@#{gw_host}: " + gw_opts.merge!(:password => prompt_for_password(prompt)) + session.via(gw_host, user, gw_opts) + end + def configure_session list = case config[:manual] when true @@ -154,15 +170,6 @@ class Chef end def session_from_list(list) - config[:ssh_gateway] ||= Chef::Config[:knife][:ssh_gateway] - if config[:ssh_gateway] - gw_host, gw_user = config[:ssh_gateway].split('@').reverse - gw_host, gw_port = gw_host.split(':') - gw_opts = gw_port ? { :port => gw_port } : {} - - session.via(gw_host, gw_user || config[:ssh_user], gw_opts) - end - list.each do |item| Chef::Log.debug("Adding #{item}") session_opts = {} @@ -230,7 +237,11 @@ class Chef end def get_password - @password ||= ui.ask("Enter your password: ") { |q| q.echo = false } + @password ||= prompt_for_password + end + + def prompt_for_password(prompt = "Enter your password: ") + ui.ask(prompt) { |q| q.echo = false } end # Present the prompt and read a single line from the console. It also @@ -416,6 +427,7 @@ class Chef configure_attribute configure_user configure_identity_file + configure_gateway configure_session exit_status = diff --git a/lib/chef/provider/log.rb b/lib/chef/provider/log.rb index 5d0417ebda..927ee72fcc 100644 --- a/lib/chef/provider/log.rb +++ b/lib/chef/provider/log.rb @@ -38,7 +38,7 @@ class Chef # === Return # true:: Always return true def action_write - Chef::Log.send(@new_resource.level, @new_resource.name) + Chef::Log.send(@new_resource.level, @new_resource.message) @new_resource.updated_by_last_action(true) end diff --git a/lib/chef/provider/package/yum-dump.py b/lib/chef/provider/package/yum-dump.py index 99136eceec..407eb8f408 100644 --- a/lib/chef/provider/package/yum-dump.py +++ b/lib/chef/provider/package/yum-dump.py @@ -107,6 +107,14 @@ def setup(yb, options): elif YUM_MAJOR == 2: yb.conf.setConfigOption('cache', options.cache) + # Handle repo toggle via id or glob exactly like yum + for opt, repos in options.repo_control: + for repo in repos: + if opt == '--enablerepo': + yb.repos.enableRepo(repo) + elif opt == '--disablerepo': + yb.repos.disableRepo(repo) + return 0 def dump_packages(yb, list, output_provides): @@ -239,6 +247,12 @@ def yum_dump(options): print >> sys.stderr, "yum-dump Unlock Error: %s" % e return 200 +# Preserve order of enable/disable repo args like yum does +def gather_repo_opts(option, opt, value, parser): + if getattr(parser.values, option.dest, None) is None: + setattr(parser.values, option.dest, []) + getattr(parser.values, option.dest).append((opt, value.split(','))) + def main(): usage = "Usage: %prog [options]\n" + \ "Output a list of installed, available and re-installable packages via yum" @@ -261,6 +275,12 @@ def main(): parser.add_option("-a", "--available", action="store_const", const="available", dest="package_list", default="all", help="output only available and re-installable packages") + parser.add_option("--enablerepo", + action="callback", callback=gather_repo_opts, type="string", dest="repo_control", default=[], + help="enable disabled repositories by id or glob") + parser.add_option("--disablerepo", + action="callback", callback=gather_repo_opts, type="string", dest="repo_control", default=[], + help="disable repositories by id or glob") (options, args) = parser.parse_args() diff --git a/lib/chef/provider/package/yum.rb b/lib/chef/provider/package/yum.rb index 9048048b83..f67262ef6f 100644 --- a/lib/chef/provider/package/yum.rb +++ b/lib/chef/provider/package/yum.rb @@ -664,12 +664,16 @@ class Chef @allow_multi_install = [] + @extra_repo_control = nil + # these are for subsequent runs if we are on an interval Chef::Client.when_run_starts do YumCache.instance.reload end end + attr_reader :extra_repo_control + # Cache management # @@ -693,6 +697,10 @@ class Chef raise ArgumentError, "Unexpected value in next_refresh: #{@next_refresh}" end + if @extra_repo_control + opts << " #{@extra_repo_control}" + end + one_line = false error = nil @@ -848,6 +856,22 @@ class Chef @allow_multi_install end + def enable_extra_repo_control(arg) + # Don't touch cache if it's the same repos as the last load + unless @extra_repo_control == arg + @extra_repo_control = arg + reload + end + end + + def disable_extra_repo_control + # Only force reload when set + if @extra_repo_control + @extra_repo_control = nil + reload + end + end + private def version(package_name, arch=nil, is_available=false, is_installed=false) @@ -995,6 +1019,23 @@ class Chef @yum.reload end + if @new_resource.options + repo_control = [] + @new_resource.options.split.each do |opt| + if opt =~ %r{--(enable|disable)repo=.+} + repo_control << opt + end + end + + if repo_control.size > 0 + @yum.enable_extra_repo_control(repo_control.join(" ")) + else + @yum.disable_extra_repo_control + end + else + @yum.disable_extra_repo_control + end + # At this point package_name could be: # # 1) a package name, eg: "foo" diff --git a/lib/chef/provider/template.rb b/lib/chef/provider/template.rb index fbd5c600b9..6df671c8e5 100644 --- a/lib/chef/provider/template.rb +++ b/lib/chef/provider/template.rb @@ -66,7 +66,7 @@ class Chef description << diff_current(rendered_template.path) converge_by(description) do backup - FileUtils.mv(rendered_template.path, @new_resource.path) + FileUtils.cp(rendered_template.path, @new_resource.path) Chef::Log.info("#{@new_resource} updated content") access_controls.set_all! update_new_file_state(@new_resource.path) diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb index 095a07c2e0..f3dabc5b28 100644 --- a/lib/chef/resource.rb +++ b/lib/chef/resource.rb @@ -266,9 +266,13 @@ F def load_prior_resource begin prior_resource = run_context.resource_collection.lookup(self.to_s) - Chef::Log.debug("Setting #{self.to_s} to the state of the prior #{self.to_s}") + # if we get here, there is a prior resource (otherwise we'd have jumped + # to the rescue clause). + Chef::Log.warn("Cloning resource attributes for #{self.to_s} from prior resource (CHEF-3694)") + Chef::Log.warn("Previous #{prior_resource}: #{prior_resource.source_line}") if prior_resource.source_line + Chef::Log.warn("Current #{self}: #{self.source_line}") if self.source_line prior_resource.instance_variables.each do |iv| - unless iv.to_sym == :@source_line || iv.to_sym == :@action + unless iv.to_sym == :@source_line || iv.to_sym == :@action || iv.to_sym == :@not_if || iv.to_sym == :@only_if self.instance_variable_set(iv, prior_resource.instance_variable_get(iv)) end end diff --git a/lib/chef/resource/log.rb b/lib/chef/resource/log.rb index d1b6b5af0b..30a5bb93c6 100644 --- a/lib/chef/resource/log.rb +++ b/lib/chef/resource/log.rb @@ -20,7 +20,7 @@ class Chef class Resource class Log < Chef::Resource - identity_attr :name + identity_attr :message # Sends a string from a recipe to a log provider # @@ -47,6 +47,15 @@ class Chef @resource_name = :log @level = :info @action = :write + @message = name + end + + def message(arg=nil) + set_or_return( + :message, + arg, + :kind_of => String + ) end # <Symbol> Log level, one of :debug, :info, :warn, :error or :fatal diff --git a/lib/chef/rest.rb b/lib/chef/rest.rb index b1f9063f25..21be437e24 100644 --- a/lib/chef/rest.rb +++ b/lib/chef/rest.rb @@ -369,7 +369,6 @@ class Chef Chef::Log.debug("Streaming download from #{url.to_s} to tempfile #{tf.path}") # Stolen from http://www.ruby-forum.com/topic/166423 # Kudos to _why! - size = 0 inflater = if gzip_disabled? NoopInflater.new @@ -388,7 +387,6 @@ class Chef response.read_body do |chunk| tf.write(inflater.inflate(chunk)) - size += chunk.size end tf.close tf diff --git a/spec/data/cookbooks/chefignore b/spec/data/cookbooks/chefignore index cfd4e65832..84b4f1e99f 100644 --- a/spec/data/cookbooks/chefignore +++ b/spec/data/cookbooks/chefignore @@ -4,3 +4,5 @@ # recipes/ignoreme.rb + # comments can be indented +ignored diff --git a/spec/functional/knife/ssh_spec.rb b/spec/functional/knife/ssh_spec.rb index 53012ce56d..a853e8de19 100644 --- a/spec/functional/knife/ssh_spec.rb +++ b/spec/functional/knife/ssh_spec.rb @@ -23,6 +23,7 @@ describe Chef::Knife::Ssh do before(:all) do @original_config = Chef::Config.hash_dup + @original_knife_config = Chef::Config[:knife].dup Chef::Knife::Ssh.load_deps @server = TinyServer::Manager.new @server.start @@ -30,6 +31,7 @@ describe Chef::Knife::Ssh do after(:all) do Chef::Config.configuration = @original_config + Chef::Config[:knife] = @original_knife_config @server.stop end @@ -89,6 +91,19 @@ describe Chef::Knife::Ssh do end end + describe "port" do + context "when -p 31337 is provided" do + before do + setup_knife(['-p 31337', '*:*', 'uptime']) + end + + it "uses the ssh_port" do + @knife.run + @knife.config[:ssh_port].should == "31337" + end + end + end + describe "user" do context "when knife[:ssh_user] is set" do before do @@ -192,6 +207,49 @@ describe Chef::Knife::Ssh do end end + describe "gateway" do + context "when knife[:ssh_gateway] is set" do + before do + setup_knife(['*:*', 'uptime']) + Chef::Config[:knife][:ssh_gateway] = "user@ec2.public_hostname" + end + + it "uses the ssh_gateway" do + @knife.session.should_receive(:via).with("ec2.public_hostname", "user", {}) + @knife.run + @knife.config[:ssh_gateway].should == "user@ec2.public_hostname" + end + end + + context "when -G user@ec2.public_hostname is provided" do + before do + setup_knife(['-G user@ec2.public_hostname', '*:*', 'uptime']) + Chef::Config[:knife][:ssh_gateway] = nil + end + + it "uses the ssh_gateway" do + @knife.session.should_receive(:via).with("ec2.public_hostname", "user", {}) + @knife.run + @knife.config[:ssh_gateway].should == "user@ec2.public_hostname" + end + end + + context "when the gateway requires a password" do + before do + setup_knife(['-G user@ec2.public_hostname', '*:*', 'uptime']) + Chef::Config[:knife][:ssh_gateway] = nil + @knife.session.stub(:via) do |host, user, options| + raise Net::SSH::AuthenticationFailed unless options[:password] + end + end + + it "should prompt the user for a password" do + @knife.ui.should_receive(:ask).with("Enter the password for user@ec2.public_hostname: ").and_return("password") + @knife.run + end + end + end + def setup_knife(params=[]) @knife = Chef::Knife::Ssh.new(params) # We explicitly avoid running #configure_chef, which would read a knife.rb diff --git a/spec/functional/resource/template_spec.rb b/spec/functional/resource/template_spec.rb index 87a8a3db66..0987aabf05 100644 --- a/spec/functional/resource/template_spec.rb +++ b/spec/functional/resource/template_spec.rb @@ -49,7 +49,22 @@ describe Chef::Resource::Template do create_resource end - let(:default_mode) { "600" } + let(:default_mode) do + # TODO: Lots of ugly here :( + # RemoteFile uses FileUtils.cp. FileUtils does a copy by opening the + # destination file and writing to it. Before 1.9.3, it does not preserve + # the mode of the copied file. In 1.9.3 and after, it does. So we have to + # figure out what the default mode ought to be via heuristic. + + t = Tempfile.new("get-the-mode") + path = t.path + path_2 = t.path + "fileutils-mode-test" + FileUtils.cp(path, path_2) + t.close + m = File.stat(path_2).mode + (07777 & m).to_s(8) + end + it_behaves_like "a file resource" diff --git a/spec/stress/win32/security_spec.rb b/spec/stress/win32/security_spec.rb index 515a49911f..e506b71be1 100644 --- a/spec/stress/win32/security_spec.rb +++ b/spec/stress/win32/security_spec.rb @@ -58,9 +58,9 @@ describe 'Chef::ReservedNames::Win32::Security', :windows_only do it "should not leak when creating a new ACL and setting it on a file", :volatile do securable_object = Security::SecurableObject.new(@monkeyfoo) lambda { - securable_object.dacl = Security::ACL.create([ - Chef::ReservedNames::Win32::Security::ACE.access_allowed(Security::SID.Everyone, Chef::ReservedNames::Win32::API::Security::GENERIC_READ), - Chef::ReservedNames::Win32::Security::ACE.access_denied(Security::SID.from_account("Users"), Chef::ReservedNames::Win32::API::Security::GENERIC_ALL) + securable_object.dacl = Chef::ReservedNames::Win32::Security::ACL.create([ + Chef::ReservedNames::Win32::Security::ACE.access_allowed(Chef::ReservedNames::Win32::Security::SID.Everyone, Chef::ReservedNames::Win32::API::Security::GENERIC_READ), + Chef::ReservedNames::Win32::Security::ACE.access_denied(Chef::ReservedNames::Win32::Security::SID.from_account("Users"), Chef::ReservedNames::Win32::API::Security::GENERIC_ALL) ]) GC.start }.should_not leak_memory(:warmup => 50, :iterations => 100) diff --git a/spec/support/matchers/leak.rb b/spec/support/matchers/leak.rb index eb80fcd492..908770f042 100644 --- a/spec/support/matchers/leak.rb +++ b/spec/support/matchers/leak.rb @@ -60,7 +60,7 @@ module Matchers def profiler @profiler ||= begin if Chef::Platform.windows? - require File.join(File.dirname(__FILE__), '..', 'prof', 'win32') + require File.join(File.dirname(__FILE__), '..', 'platforms', 'prof', 'win32') RSpec::Prof::Win32::Profiler.new else require File.join(File.dirname(__FILE__), '..', 'prof', 'gc') diff --git a/spec/unit/config_spec.rb b/spec/unit/config_spec.rb index 927e7059b1..7b5d383ba3 100644 --- a/spec/unit/config_spec.rb +++ b/spec/unit/config_spec.rb @@ -104,7 +104,14 @@ describe Chef::Config do @config_class.formatters.should == [[:doc, "/var/log/formatter.log"]] end + end + context "when the url is a frozen string" do + before do + Chef::Config.chef_server_url = " https://junglist.gen.nz".freeze + end + + it_behaves_like "server URL" end describe "class method: manage_secret_key" do diff --git a/spec/unit/cookbook/chefignore_spec.rb b/spec/unit/cookbook/chefignore_spec.rb index 30b97e865d..aacb60c012 100644 --- a/spec/unit/cookbook/chefignore_spec.rb +++ b/spec/unit/cookbook/chefignore_spec.rb @@ -23,7 +23,7 @@ describe Chef::Cookbook::Chefignore do end it "loads the globs in the chefignore file" do - @chefignore.ignores.should =~ %w[recipes/ignoreme.rb] + @chefignore.ignores.should =~ %w[recipes/ignoreme.rb ignored] end it "removes items from an array that match the ignores" do @@ -32,6 +32,7 @@ describe Chef::Cookbook::Chefignore do end it "determines if a file is ignored" do + @chefignore.ignored?('ignored').should be_true @chefignore.ignored?('recipes/ignoreme.rb').should be_true @chefignore.ignored?('recipes/dontignoreme.rb').should be_false end diff --git a/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb b/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb index 52c719d2fb..fa96845aca 100644 --- a/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +++ b/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb @@ -112,6 +112,7 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do # fake code to run through #recipe_snippet source_file = [ "if true", "var = non_existant", "end" ] IO.stub!(:readlines).and_return(source_file) + File.stub!(:exists?).and_return(true) end it "parses a Windows path" do @@ -127,6 +128,25 @@ describe Chef::Formatters::ErrorInspectors::ResourceFailureInspector do @inspector = Chef::Formatters::ErrorInspectors::ResourceFailureInspector.new(@resource, :create, @exception) @inspector.recipe_snippet.should match(/^# In \/home\/btm/) end + + context "when the recipe file does not exist" do + before do + File.stub!(:exists?).and_return(false) + IO.stub!(:readlines).and_raise(Errno::ENOENT) + end + + it "does not try to parse a recipe in chef-shell/irb (CHEF-3411)" do + @resource.source_line = "(irb#1):1:in `irb_binding'" + @inspector = Chef::Formatters::ErrorInspectors::ResourceFailureInspector.new(@resource, :create, @exception) + @inspector.recipe_snippet.should be_nil + end + + it "does not raise an exception trying to load a non-existant file (CHEF-3411)" do + @resource.source_line = "/somewhere/in/space" + @inspector = Chef::Formatters::ErrorInspectors::ResourceFailureInspector.new(@resource, :create, @exception) + lambda { @inspector.recipe_snippet }.should_not raise_error + end + end end describe "when examining a resource that confuses the parser" do diff --git a/spec/unit/knife/bootstrap_spec.rb b/spec/unit/knife/bootstrap_spec.rb index 98955d4f73..bbb63f8c01 100644 --- a/spec/unit/knife/bootstrap_spec.rb +++ b/spec/unit/knife/bootstrap_spec.rb @@ -134,36 +134,77 @@ describe Chef::Knife::Bootstrap do @knife.name_args.first.should == "barf" end - describe "when configuring the underlying knife ssh command" do - before do - @knife.name_args = ["foo.example.com"] - @knife.config[:ssh_user] = "rooty" - @knife.config[:ssh_password] = "open_sesame" - Chef::Config[:knife][:ssh_port] = "4001" - @knife.config[:identity_file] = "~/.ssh/me.rsa" - @knife.stub!(:read_template).and_return("") - @knife_ssh = @knife.knife_ssh - end - - it "configures the hostname" do - @knife_ssh.name_args.first.should == "foo.example.com" + describe "when configuring the underlying knife ssh command" + context "from the command line" do + before do + @knife.name_args = ["foo.example.com"] + @knife.config[:ssh_user] = "rooty" + @knife.config[:ssh_port] = "4001" + @knife.config[:ssh_password] = "open_sesame" + Chef::Config[:knife][:ssh_user] = nil + Chef::Config[:knife][:ssh_port] = nil + @knife.config[:identity_file] = "~/.ssh/me.rsa" + @knife.stub!(:read_template).and_return("") + @knife_ssh = @knife.knife_ssh + end + + it "configures the hostname" do + @knife_ssh.name_args.first.should == "foo.example.com" + end + + it "configures the ssh user" do + @knife_ssh.config[:ssh_user].should == 'rooty' + end + + it "configures the ssh password" do + @knife_ssh.config[:ssh_password].should == 'open_sesame' + end + + it "configures the ssh port" do + @knife_ssh.config[:ssh_port].should == '4001' + end + + it "configures the ssh identity file" do + @knife_ssh.config[:identity_file].should == '~/.ssh/me.rsa' + end end - it "configures the ssh user" do - @knife_ssh.config[:ssh_user].should == 'rooty' - end - - it "configures the ssh password" do - @knife_ssh.config[:ssh_password].should == 'open_sesame' - end - - it "configures the ssh port" do - @knife_ssh.config[:ssh_port].should == '4001' - end - - it "configures the ssh identity file" do - @knife_ssh.config[:identity_file].should == '~/.ssh/me.rsa' - end + context "from the knife config file" do + before do + @knife.name_args = ["config.example.com"] + @knife.config[:ssh_user] = nil + @knife.config[:ssh_port] = nil + @knife.config[:ssh_gateway] = nil + @knife.config[:identity_file] = nil + @knife.config[:host_key_verify] = nil + Chef::Config[:knife][:ssh_user] = "curiosity" + Chef::Config[:knife][:ssh_port] = "2430" + Chef::Config[:knife][:identity_file] = "~/.ssh/you.rsa" + Chef::Config[:knife][:ssh_gateway] = "towel.blinkenlights.nl" + Chef::Config[:knife][:host_key_verify] = true + @knife.stub!(:read_template).and_return("") + @knife_ssh = @knife.knife_ssh + end + + it "configures the ssh user" do + @knife_ssh.config[:ssh_user].should == 'curiosity' + end + + it "configures the ssh port" do + @knife_ssh.config[:ssh_port].should == '2430' + end + + it "configures the ssh identity file" do + @knife_ssh.config[:identity_file].should == '~/.ssh/you.rsa' + end + + it "configures the ssh gateway" do + @knife_ssh.config[:ssh_gateway].should == 'towel.blinkenlights.nl' + end + + it "configures the host key verify mode" do + @knife_ssh.config[:host_key_verify].should == true + end end describe "when falling back to password auth when host key auth fails" do diff --git a/spec/unit/knife/core/bootstrap_context_spec.rb b/spec/unit/knife/core/bootstrap_context_spec.rb index 6e1ce97f40..65c02beff0 100644 --- a/spec/unit/knife/core/bootstrap_context_spec.rb +++ b/spec/unit/knife/core/bootstrap_context_spec.rb @@ -56,6 +56,13 @@ describe Chef::Knife::Core::BootstrapContext do @context.validation_key.should == IO.read(File.join(CHEF_SPEC_DATA, 'ssl', 'private_key.pem')) end + it "reads the validation key when it contains a ~" do + IO.should_receive(:read).with(File.expand_path("my.key", ENV['HOME'])) + @chef_config = {:validation_key => '~/my.key'} + @context = Chef::Knife::Core::BootstrapContext.new(@config, @run_list, @chef_config) + @context.validation_key + end + it "generates the config file data" do expected=<<-EXPECTED log_level :auto diff --git a/spec/unit/provider/package/yum_spec.rb b/spec/unit/provider/package/yum_spec.rb index 4b890b1549..375ae0966b 100644 --- a/spec/unit/provider/package/yum_spec.rb +++ b/spec/unit/provider/package/yum_spec.rb @@ -34,7 +34,8 @@ describe Chef::Provider::Package::Yum do :package_available? => true, :version_available? => true, :allow_multi_install => [ "kernel" ], - :package_repository => "base" + :package_repository => "base", + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -92,6 +93,7 @@ describe Chef::Provider::Package::Yum do end end @yum_cache.stub!(:package_available?).and_return(true) + @yum_cache.stub!(:disable_extra_repo_control).and_return(true) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource @@ -125,6 +127,7 @@ describe Chef::Provider::Package::Yum do nil end @yum_cache.stub!(:package_available?).and_return(true) + @yum_cache.stub!(:disable_extra_repo_control).and_return(true) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) # annoying side effect of the fun stub'ing above @@ -155,6 +158,7 @@ describe Chef::Provider::Package::Yum do nil end @yum_cache.stub!(:package_available?).and_return(true) + @yum_cache.stub!(:disable_extra_repo_control).and_return(true) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource @@ -189,6 +193,7 @@ describe Chef::Provider::Package::Yum do end end.and_return("something") @yum_cache.stub!(:package_available?).and_return(true) + @yum_cache.stub!(:disable_extra_repo_control).and_return(true) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource @@ -209,6 +214,24 @@ describe Chef::Provider::Package::Yum do @provider.load_current_resource end + it "should detect --enablerepo or --disablerepo when passed among options, collect them preserving order and notify the yum cache" do + @new_resource.stub!(:options).and_return("--stuff --enablerepo=foo --otherthings --disablerepo=a,b,c --enablerepo=bar") + @yum_cache.should_receive(:enable_extra_repo_control).with("--enablerepo=foo --disablerepo=a,b,c --enablerepo=bar") + @provider.load_current_resource + end + + it "should let the yum cache know extra repos are disabled if --enablerepo or --disablerepo aren't among options" do + @new_resource.stub!(:options).and_return("--stuff --otherthings") + @yum_cache.should_receive(:disable_extra_repo_control) + @provider.load_current_resource + end + + it "should let the yum cache know extra repos are disabled if options aren't set" do + @new_resource.stub!(:options).and_return(nil) + @yum_cache.should_receive(:disable_extra_repo_control) + @provider.load_current_resource + end + it "should search provides if package name can't be found then set package_name to match" do @yum_cache = mock( 'Chef::Provider::Yum::YumCache', @@ -217,7 +240,8 @@ describe Chef::Provider::Package::Yum do :installed_version => "1.2.4-11.18.el5", :candidate_version => "1.2.4-11.18.el5", :package_available? => false, - :version_available? => true + :version_available? => true, + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "1.2.4-11.18.el5", "x86_64", []) @@ -235,7 +259,8 @@ describe Chef::Provider::Package::Yum do :installed_version => "1.2.4-11.18.el5", :candidate_version => "1.2.4-11.18.el5", :package_available? => false, - :version_available? => true + :version_available? => true, + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) pkg_x = Chef::Provider::Package::Yum::RPMPackage.new("test-package-x", "1.2.4-11.18.el5", "x86_64", []) @@ -255,7 +280,8 @@ describe Chef::Provider::Package::Yum do :installed_version => "1.2.4-11.18.el5", :candidate_version => "1.2.4-11.18.el5", :package_available? => false, - :version_available? => true + :version_available? => true, + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @yum_cache.should_receive(:packages_from_require).twice.and_return([]) @@ -272,7 +298,8 @@ describe Chef::Provider::Package::Yum do :installed_version => "1.2.4-11.18.el5", :candidate_version => "1.2.4-11.18.el5", :package_available? => false, - :version_available? => true + :version_available? => true, + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -295,7 +322,8 @@ describe Chef::Provider::Package::Yum do :installed_version => "1.2.4-11.18.el5", :candidate_version => "1.2.4-11.18.el5", :package_available? => false, - :version_available? => true + :version_available? => true, + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @yum_cache.should_receive(:packages_from_require).twice.and_return([]) @@ -363,7 +391,8 @@ describe Chef::Provider::Package::Yum do :installed_version => "1.2.4-11.18.el5", :candidate_version => "1.2.4-11.18.el5_2.3", :package_available? => true, - :version_available? => nil + :version_available? => nil, + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -380,7 +409,8 @@ describe Chef::Provider::Package::Yum do :candidate_version => "1.2.4-11.15.el5", :package_available? => true, :version_available? => true, - :allow_multi_install => [ "kernel" ] + :allow_multi_install => [ "kernel" ], + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -398,7 +428,8 @@ describe Chef::Provider::Package::Yum do :package_available? => true, :version_available? => true, :allow_multi_install => [ "cups" ], - :package_repository => "base" + :package_repository => "base", + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -420,7 +451,8 @@ describe Chef::Provider::Package::Yum do :package_available? => true, :version_available? => true, :allow_multi_install => [], - :package_repository => "base" + :package_repository => "base", + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -485,7 +517,8 @@ describe Chef::Provider::Package::Yum do :candidate_version => "1.2.4-11.15.el5", :package_available? => true, :version_available? => true, - :allow_multi_install => [ "kernel" ] + :allow_multi_install => [ "kernel" ], + :disable_extra_repo_control => true ) Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @@ -1609,6 +1642,12 @@ EOF @yc.refresh end + it "should pass extra_repo_control args to yum-dump.py" do + @yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar") + @yc.should_receive(:popen4).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar$}, :waitlast=>true) + @yc.refresh + end + it "should warn about invalid data with too many separators" do @yc.stub!(:popen4).and_yield(@pid, @stdin, @stdout_bad_separators, @stderr).and_return(@status) Chef::Log.should_receive(:warn).exactly(3).times.with(%r{Problem parsing}) @@ -1788,4 +1827,33 @@ EOF end end + describe "enable_extra_repo_control" do + it "should set @extra_repo_control to arg" do + @yc.enable_extra_repo_control("--enablerepo=test") + @yc.extra_repo_control.should be == "--enablerepo=test" + end + + it "should call reload once when set to flag cache for update" do + @yc.should_receive(:reload).once + @yc.enable_extra_repo_control("--enablerepo=test") + @yc.enable_extra_repo_control("--enablerepo=test") + end + end + + describe "disable_extra_repo_control" do + it "should set @extra_repo_control to nil" do + @yc.enable_extra_repo_control("--enablerepo=test") + @yc.disable_extra_repo_control + @yc.extra_repo_control.should be == nil + end + + it "should call reload once when cleared to flag cache for update" do + @yc.should_receive(:reload).once + @yc.enable_extra_repo_control("--enablerepo=test") + @yc.should_receive(:reload).once + @yc.disable_extra_repo_control + @yc.disable_extra_repo_control + end + end + end diff --git a/spec/unit/resource/log_spec.rb b/spec/unit/resource/log_spec.rb index bc5ac13078..4c6b2c122d 100644 --- a/spec/unit/resource/log_spec.rb +++ b/spec/unit/resource/log_spec.rb @@ -38,6 +38,15 @@ describe Chef::Resource::Log do it "should allow you to set a log string" do @resource.name.should == @log_str end + + it "should set the message to the first argument to new" do + @resource.message.should == @log_str + end + + it "should accept a string for the log message" do + @resource.message "this is different" + @resource.message.should == "this is different" + end it "should accept a vaild level option" do @resource.level :debug |