Class: Chef::Knife::DataBagTarDownload

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.download_data_bags(tar_file) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/chef/knife/data_bag_tar_download.rb', line 28

def self.download_data_bags(tar_file)
  dir = tar_file.data_bags_path
  Chef::DataBag.list.each do |bag_name, url|
    system("mkdir -p #{File.join(dir, bag_name)}")
    Chef::DataBag.load(bag_name).each do |item_name, itemUrl|
      Chef::Log.info("Backing up data bag #{bag_name} item #{item_name}")
      item = Chef::DataBagItem.load(bag_name, item_name)
      File.open(File.join(dir, bag_name, "#{item_name}.json"), "w") do |dbag_file|
        dbag_file.print(item.raw_data.to_json)
      end
    end
  end
end

Instance Method Details

#runObject



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/chef/knife/data_bag_tar_download.rb', line 14

def run
  #Get Arguments
  if @name_args.size != 1
    ui.info("Please specify a tar path")
    show_usage
    exit 1
  end
  
  tar_file = Chef::TarFile.new(@name_args.first, true)
  DataBagTarDownload.download_data_bags tar_file
  tar_file.save

end