Class: Chef::Knife::NodeRunListRemove

Inherits:
Chef::Knife show all
Defined in:
lib/chef/knife/node_run_list_remove.rb

Constant Summary

Constants inherited from Chef::Knife

OFFICIAL_PLUGINS

Instance Attribute Summary

Attributes inherited from Chef::Knife

#name_args, #ui

Instance Method Summary collapse

Methods inherited from Chef::Knife

#api_key, #apply_computed_config, category, chef_config_dir, #cli_keys, common_name, #config_file_settings, config_loader, #configure_chef, #create_object, #delete_object, dependency_loaders, deps, #format_rest_error, guess_category, #humanize_exception, #humanize_http_exception, inherited, #initialize, list_commands, load_commands, load_config, load_deps, #maybe_setup_fips, #merge_configs, msg, #noauth_rest, #parse_options, reset_config_loader!, reset_subcommands!, #rest, run, #run_with_pretty_exceptions, #server_url, #show_usage, snake_case_name, subcommand_category, subcommand_class_from, subcommand_files, subcommand_loader, subcommands, subcommands_by_category, #test_mandatory_field, ui, unnamed?, use_separate_defaults?, #username

Methods included from Mixin::ConvertToClassName

#constantize, #convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #normalize_snake_case_name, #snake_case_basename

Methods included from Mixin::PathSanity

#enforce_path_sanity, #sanitized_path

Constructor Details

This class inherits a constructor from Chef::Knife

Instance Method Details

#runObject


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/chef/knife/node_run_list_remove.rb', line 32

def run
  node = Chef::Node.load(@name_args[0])

  if @name_args.size > 2
    # Check for nested lists and create a single plain one
    entries = @name_args[1..-1].map do |entry|
      entry.split(",").map { |e| e.strip }
    end.flatten
  else
    # Convert to array and remove the extra spaces
    entries = @name_args[1].split(",").map { |e| e.strip }
  end

  # iterate over the list of things to remove,
  # warning if one of them was not found
  entries.each do |e|
    if node.run_list.find { |rli| e == rli.to_s }
      node.run_list.remove(e)
    else
      ui.warn "#{e} is not in the run list"
      unless e =~ /^(recipe|role)\[/
        ui.warn "(did you forget recipe[] or role[] around it?)"
      end
    end
  end

  node.save

  config[:run_list] = true

  output(format_for_display(node))
end