Parent

Files

Class/Module Index [+]

Quicksearch

Chef::ChefFS::FileSystem::RestListEntry

Public Class Methods

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

Public Instance Methods

api_path() click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 33
def api_path
  if name.length < 5 || name[-5,5] != ".json"
    raise "Invalid name #{path}: must end in .json"
  end
  api_child_name = name[0,name.length-5]
  "#{parent.api_path}/#{api_child_name}"
end
chef_object() click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 72
def chef_object
  begin
    # REST will inflate the Chef object using json_class
    rest.get_rest(api_path)
  rescue Net::HTTPServerException
    if $!.response.code == "404"
      raise Chef::ChefFS::FileSystem::NotFoundError.new($!), "#{path_for_printing} not found"
    else
      raise
    end
  end
end
compare_to(other) click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 85
def compare_to(other)
  begin
    other_value = other.read
  rescue Chef::ChefFS::FileSystem::NotFoundError
    return [ nil, nil, :none ]
  end
  begin
    value = chef_object.to_hash
  rescue Chef::ChefFS::FileSystem::NotFoundError
    return [ false, :none, other_value ]
  end
  are_same = (value == Chef::JSONCompat.from_json(other_value, :create_additions => false))
  [ are_same, Chef::JSONCompat.to_json_pretty(value), other_value ]
end
delete(recurse) click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 56
def delete(recurse)
  begin
    rest.delete_rest(api_path)
  rescue Net::HTTPServerException
    if $!.response.code == "404"
      raise Chef::ChefFS::FileSystem::NotFoundError.new($!), "#{path_for_printing} not found"
    else
      raise
    end
  end
end
environment() click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 41
def environment
  parent.environment
end
exists?() click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 45
def exists?
  if @exists.nil?
    begin
      @exists = parent.children.any? { |child| child.name == name }
    rescue Chef::ChefFS::FileSystem::NotFoundError
      @exists = false
    end
  end
  @exists
end
read() click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 68
def read
  Chef::JSONCompat.to_json_pretty(chef_object.to_hash)
end
rest() click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 100
def rest
  parent.rest
end
write(file_contents) click to toggle source
# File lib/chef/chef_fs/file_system/rest_list_entry.rb, line 104
def write(file_contents)
  json = Chef::JSONCompat.from_json(file_contents).to_hash
  base_name = name[0,name.length-5]
  if json['name'] != base_name
    raise "Name in #{path_for_printing}/#{name} must be '#{base_name}' (is '#{json['name']}')"
  end
  begin
    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.