module ChefSpec::ServerMethods

def self.entity(method, klass, key)

Returns:
  • (true, false) -
  • (Array) -
  • ($2, nil) -

Parameters:
  • name (String) --
  • name (String) --
  • data (Hash) --
  • name (String) --
def self.entity(method, klass, key)
  class_eval <<-EOH, __FILE__, __LINE__ + 1
    def create_#{method}(name, data = {})
      # Automatically set the "name" if no explicit one was given
      data[:name] ||= name
      # Convert it to JSON
      data = JSON.fast_generate(data)
      load_data(name, '#{key}', data)
    end
    def get_#{method}(name)
      data = get('#{key}', name)
      json = JSON.parse(data)
      case
      when #{klass}.respond_to?(:json_create)
        #{klass}.json_create(json)
      when #{klass}.respond_to?(:from_hash)
        #{klass}.from_hash(json)
      else
        #{klass}.new(json)
      end
    rescue ChefZero::DataStore::DataNotFoundError
      nil
    end
    def get_#{key}
      get('#{key}')
    end
    def has_#{method}?(name)
      !get('#{key}', name).nil?
    rescue ChefZero::DataStore::DataNotFoundError
      false
    end
  EOH
end

def create_data_bag(name, data = {})

Parameters:
  • data (Hash) --
  • name (String) --
def create_data_bag(name, data = {})
  load_data(name, "data", data)
end

def create_node(object, data = {})

Parameters:
  • data (Hash) --
  • object (String, Chef::Node) --

Other tags:
    Example: Create a node from a +Chef::Node+ object -
    Example: Create a node from a hash -
def create_node(object, data = {})
  if object.is_a?(Chef::Node)
    name = object.name
    data = object.to_json
  else
    name = object.to_s
    data[:name] ||= name
    data = JSON.fast_generate(data)
  end
  load_data(name, "nodes", data)
end

def get(*args)


Get the path to an item in the data store.
def get(*args)
  args.unshift("organizations", "chef")
  if args.size == 3
    server.data_store.list(args)
  else
    server.data_store.get(args)
  end
end

def load_data(name, key, data = {})

Parameters:
  • data (Hash) --
  • key (String, Symbol) --
  • name (String) --
def load_data(name, key, data = {})
  ChefSpec::ZeroServer.load_data(name, key, data)
end

def server

Returns:
  • (ChefZero::Server) -
def server
  ChefSpec::ZeroServer.server
end