class KnifeUploader::UploaderRunListCommand
Public Instance Methods
filtered_chef_nodes()
click to toggle source
# File lib/chef/knife/uploader_run_list.rb, line 22 def filtered_chef_nodes ridley.node.all.sort_by {|node| node.name }.to_enum .lazy_select {|node| node.name =~ @pattern } .lazy_map {|node| ridley.node.find(node.name) } .lazy_select {|node| node.chef_environment == @env_name } end
set_run_lists()
click to toggle source
# File lib/chef/knife/uploader_run_list.rb, line 29 def set_run_lists run_lists_file_path = File::join(get_chef_repo_path, 'run_lists', "#{@env_name}.json") target_run_lists = File.open(run_lists_file_path) {|f| JSON.load(f) } filtered_chef_nodes.each do |node| debug("Comparing run lists for node #{node.name}") old_run_list = node.run_list new_run_list = [] # Concatenate all matching patterns. This allows to specify some common parts of run lists # only once. target_run_lists.each do |pattern, run_list| if node.name =~ /\A#{pattern}\Z/ new_run_list += run_list end end debug("New run list for node #{node.name}: #{new_run_list}") next if old_run_list == new_run_list unless new_run_list ui.warn("No new run list defined for node #{node.name}, skipping") next end ui.info("\n" + (@dry_run ? 'Would modify' : 'Modifying') + " the run list for node #{node.name}:\n" + diff_color(old_run_list.join("\n") + "\n", new_run_list.join("\n") + "\n")) unless @dry_run node.run_list = new_run_list node.save end end ui.info("Finished #{@dry_run ? 'showing differences for' : 'setting'} run lists in " + "environment #{@env_name}") end
validate_arguments()
click to toggle source
# File lib/chef/knife/uploader_run_list.rb, line 70 def validate_arguments if name_args.size != 1 ui.fatal("Exactly one argument expected: environment") show_usage exit(1) end @env_name = name_args[0] end