Method: Chef::Knife::DataBagCreate#run

Defined in:
lib/chef/knife/data_bag_create.rb

#runObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/chef/knife/data_bag_create.rb', line 59

def run
  @data_bag_name, @data_bag_item_name = @name_args

  if @data_bag_name.nil?
    show_usage
    ui.fatal("You must specify a data bag name")
    exit 1
  end

  # create the data bag
  begin
    rest.post_rest("data", { "name" => @data_bag_name })
    ui.info("Created data_bag[#{@data_bag_name}]")
  rescue Net::HTTPServerException => e
    raise unless e.to_s =~ /^409/
    ui.info("Data bag #{@data_bag_name} already exists")
  end

  # if an item is specified, create it, as well
  if @data_bag_item_name
    create_object({ "id" => @data_bag_item_name }, "data_bag_item[#{@data_bag_item_name}]") do |output|
      item = Chef::DataBagItem.from_hash(
               if use_encryption
                 Chef::EncryptedDataBagItem.encrypt_data_bag_item(output, read_secret)
               else
                 output
               end)
      item.data_bag(@data_bag_name)
      rest.post_rest("data/#{@data_bag_name}", item)
    end
  end
end