class Chef::Knife::Core::NodePresenter
output formats for displaying node data
A customized presenter for Chef::Node objects. Supports variable-length
def format(data)
def format(data) if parse_format_option == :json summarize_json(data) else super end end
def key(key_text)
def key(key_text) ui.color(key_text, :cyan) end
def summarize(data)
the volume of output is adjusted accordingly. Uses colors if enabled
terminal. If config[:medium_output] or config[:long_output] are set
Converts a Chef::Node object to a string suitable for output to a
def summarize(data) if data.is_a?(Chef::Node) node = data # special case clouds with their split horizon thing. ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress] summarized = <<~SUMMARY #{ui.color("Node Name:", :bold)} #{ui.color(node.name, :bold)} SUMMARY show_policy = !(node.policy_name.nil? && node.policy_group.nil?) if show_policy summarized << <<~POLICY #{key("Policy Name:")} #{node.policy_name} #{key("Policy Group:")} #{node.policy_group} POLICY else summarized << <<~ENV #{key("Environment:")} #{node.chef_environment} ENV end summarized << <<~SUMMARY #{key("FQDN:")} #{node[:fqdn]} #{key("IP:")} #{ip} #{key("Run List:")} #{node.run_list} SUMMARY unless show_policy summarized << <<~ROLES #{key("Roles:")} #{Array(node[:roles]).join(", ")} ROLES end summarized << <<~SUMMARY #{key("Recipes:")} #{Array(node[:recipes]).join(", ")} #{key("Platform:")} #{node[:platform]} #{node[:platform_version]} #{key("Tags:")} #{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
def summarize_json(data)
def summarize_json(data) if data.is_a?(Chef::Node) node = data result = {} result["name"] = node.name if node.policy_name.nil? && node.policy_group.nil? result["chef_environment"] = node.chef_environment else result["policy_name"] = node.policy_name result["policy_group"] = node.policy_group end 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