summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanielsdeleo <dan@getchef.com>2015-05-22 09:27:48 -0700
committerdanielsdeleo <dan@getchef.com>2015-05-22 09:27:48 -0700
commitaac41d6a5115488bbe11796a9cea8b535548cbeb (patch)
treee747c09a6075cc4a7d67ec3718923301ddc89efb
parentcecc34896de0c1aab3b0e26adc547e43649d0e6b (diff)
downloadchef-display-policy-rev-id.tar.gz
Display policy name and ID during the chef rundisplay-policy-rev-id
-rw-r--r--lib/chef/event_dispatch/base.rb5
-rw-r--r--lib/chef/formatters/doc.rb4
-rw-r--r--lib/chef/policy_builder/policyfile.rb1
-rw-r--r--spec/unit/formatters/doc_spec.rb46
4 files changed, 56 insertions, 0 deletions
diff --git a/lib/chef/event_dispatch/base.rb b/lib/chef/event_dispatch/base.rb
index 7274105802..93caa62a65 100644
--- a/lib/chef/event_dispatch/base.rb
+++ b/lib/chef/event_dispatch/base.rb
@@ -82,6 +82,11 @@ class Chef
def node_load_completed(node, expanded_run_list, config)
end
+ # Called after the Policyfile was loaded. This event only occurs when
+ # chef is in policyfile mode.
+ def policyfile_loaded(policy)
+ end
+
# Called before the cookbook collection is fetched from the server.
def cookbook_resolution_start(expanded_run_list)
end
diff --git a/lib/chef/formatters/doc.rb b/lib/chef/formatters/doc.rb
index 860cd8b2b3..945bc71f2f 100644
--- a/lib/chef/formatters/doc.rb
+++ b/lib/chef/formatters/doc.rb
@@ -93,6 +93,10 @@ class Chef
def node_load_completed(node, expanded_run_list, config)
end
+ def policyfile_loaded(policy)
+ puts_line "Using policy '#{policy["name"]}' at revision '#{policy["revision_id"]}'"
+ end
+
# Called before the cookbook collection is fetched from the server.
def cookbook_resolution_start(expanded_run_list)
puts_line "resolving cookbooks for run list: #{expanded_run_list.inspect}"
diff --git a/lib/chef/policy_builder/policyfile.rb b/lib/chef/policy_builder/policyfile.rb
index ac25b549be..5991e3ce10 100644
--- a/lib/chef/policy_builder/policyfile.rb
+++ b/lib/chef/policy_builder/policyfile.rb
@@ -119,6 +119,7 @@ class Chef
@node = Chef::Node.find_or_create(node_name)
validate_policyfile
+ events.policyfile_loaded(policy)
node
rescue Exception => e
events.node_load_failed(node_name, e, Chef::Config)
diff --git a/spec/unit/formatters/doc_spec.rb b/spec/unit/formatters/doc_spec.rb
new file mode 100644
index 0000000000..d018207f49
--- /dev/null
+++ b/spec/unit/formatters/doc_spec.rb
@@ -0,0 +1,46 @@
+#
+# Author:: Daniel DeLeo (<dan@chef.io>)
+#
+# Copyright:: Copyright (c) 2015 Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require 'spec_helper'
+
+describe Chef::Formatters::Base do
+
+ let(:out) { StringIO.new }
+ let(:err) { StringIO.new }
+
+ subject(:formatter) { Chef::Formatters::Doc.new(out, err) }
+
+ it "prints a policyfile's name and revision ID" do
+ minimal_policyfile = {
+ "revision_id"=> "613f803bdd035d574df7fa6da525b38df45a74ca82b38b79655efed8a189e073",
+ "name"=> "jenkins",
+ "run_list"=> [
+ "recipe[apt::default]",
+ "recipe[java::default]",
+ "recipe[jenkins::master]",
+ "recipe[policyfile_demo::default]"
+ ],
+ "cookbook_locks"=> { }
+ }
+
+ formatter.policyfile_loaded(minimal_policyfile)
+ expect(out.string).to include("Using policy 'jenkins' at revision '613f803bdd035d574df7fa6da525b38df45a74ca82b38b79655efed8a189e073'")
+ end
+
+end