module ChefSpec::ServerMethods
def self.entity(method, klass, key)
-
(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 = {})
-
data
(Hash
) -- -
name
(String
) --
def create_data_bag(name, data = {}) load_data(name, "data", data) end
def create_node(object, data = {})
-
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 = {})
-
data
(Hash
) -- -
key
(String, Symbol
) -- -
name
(String
) --
def load_data(name, key, data = {}) ChefSpec::ZeroServer.load_data(name, key, data) end
def server
-
(ChefZero::Server)
-
def server ChefSpec::ZeroServer.server end