class KnifeDraw::DrawNodes

Public Instance Methods

run() click to toggle source
# File lib/knife_draw/draw_nodes.rb, line 11
def run
  filename = name_args.size > 0 ? name_args.first : "output.png"
  environment = config[:environment]

  graph = ChefGraph.new cluster_environments: environment.nil?
  source = ChefServerSource.new

  source.nodes(environment).each do |name, node|
    node_box = graph.draw_node(name, node.chef_environment)
    verbose_out "name: #{name} env: #{node.chef_environment}"
    source.roles_for_node(node).each do |role_name|
      verbose_out "\trole: #{role_name}"
      role_box = graph.draw_role(role_name)
      graph.connect(node_box, role_box)

      source.runlist_for_role(role_name).each do |run_list|
        runlist_box = graph.draw_runlist run_list.to_s
        graph.connect(role_box, runlist_box)
        verbose_out "\t\trunlist: #{run_list}"
      end
    end
  end
  graph.draw! filename
end