class Chef::Knife::Core::NodePresenter
Chef::Knife::Core::NodePresenter¶ ↑
A customized presenter for Chef::Node objects. Supports variable-length output formats for displaying node data
Public Instance Methods
format(data)
click to toggle source
Calls superclass method
Chef::Knife::Core::GenericPresenter#format
# File lib/chef/knife/core/node_presenter.rb, line 56 def format(data) if parse_format_option == :json summarize_json(data) else super end end
key(key_text)
click to toggle source
# File lib/chef/knife/core/node_presenter.rb, line 129 def key(key_text) ui.color(key_text, :cyan) end
summarize(data)
click to toggle source
Converts a Chef::Node object to a string suitable for output to a terminal. If config or config are set the volume of output is adjusted accordingly. Uses colors if enabled in the ui object.
Calls superclass method
Chef::Knife::Core::GenericPresenter#summarize
# File lib/chef/knife/core/node_presenter.rb, line 90 def summarize(data) if data.kind_of?(Chef::Node) node = data # special case ec2 with their split horizon whatsis. ip = (node[:ec2] && node[:ec2][:public_ipv4]) || node[:ipaddress] summarized=<<-SUMMARY #{ui.color('Node Name:', :bold)} #{ui.color(node.name, :bold)} #{key('Environment:')} #{node.chef_environment} #{key('FQDN:')} #{node[:fqdn]} #{key('IP:')} #{ip} #{key('Run List:')} #{node.run_list} #{key('Roles:')} #{Array(node[:roles]).join(', ')} #{key('Recipes:')} #{Array(node[:recipes]).join(', ')} #{key('Platform:')} #{node[:platform]} #{node[:platform_version]} #{key('Tags:')} #{Array(node[:tags]).join(', ')} SUMMARY if config[:medium_output] || config[:long_output] summarized +=<<-MORE #{key('Attributes:')} #{text_format(node.normal_attrs)} MORE end if config[:long_output] summarized +=<<-MOST #{key('Default Attributes:')} #{text_format(node.default_attrs)} #{key('Override Attributes:')} #{text_format(node.override_attrs)} #{key('Automatic Attributes (Ohai Data):')} #{text_format(node.automatic_attrs)} MOST end summarized else super end end
summarize_json(data)
click to toggle source
# File lib/chef/knife/core/node_presenter.rb, line 64 def summarize_json(data) if data.kind_of?(Chef::Node) node = data result = {} result["name"] = node.name result["chef_environment"] = node.chef_environment result["run_list"] = node.run_list result["normal"] = node.normal_attrs if config[:long_output] result["default"] = node.default_attrs result["override"] = node.override_attrs result["automatic"] = node.automatic_attrs end Chef::JSONCompat.to_json_pretty(result) else Chef::JSONCompat.to_json_pretty(data) end end