Parent

Methods

Files

Class/Module Index [+]

Quicksearch

Chef::ChefFS::FileSystem::DataBagItem

Public Class Methods

new(name, parent, exists = nil) click to toggle source
# File lib/chef/chef_fs/file_system/data_bag_item.rb, line 25
def initialize(name, parent, exists = nil)
  super(name, parent, exists)
end

Public Instance Methods

write(file_contents) click to toggle source
# File lib/chef/chef_fs/file_system/data_bag_item.rb, line 29
def write(file_contents)
  # Write is just a little tiny bit different for data bags:
  # you set raw_data in the JSON instead of putting the items
  # in the top level.
  json = Chef::JSONCompat.from_json(file_contents).to_hash
  id = name[0,name.length-5]  # Strip off the .json from the end
  if json['id'] != id
    raise "Id in #{path_for_printing}/#{name} must be '#{id}' (is '#{json['id']}')"
  end
  begin
    data_bag = parent.name
    json = {
      "name" => "data_bag_item_#{data_bag}_#{id}",
      "json_class" => "Chef::DataBagItem",
      "chef_type" => "data_bag_item",
      "data_bag" => data_bag,
      "raw_data" => json
    }
    rest.put_rest(api_path, json)
  rescue Net::HTTPServerException
    if $!.response.code == "404"
      raise Chef::ChefFS::FileSystem::NotFoundError.new($!), "#{path_for_printing} not found"
    else
      raise
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.