require 'shellwords' require File::join(File.dirname(__FILE__), %w(.. resource)) class Pacemaker::Resource::Primitive < Pacemaker::Resource TYPE = 'primitive' register_type TYPE attr_accessor :agent, :params, :meta, :op def initialize(*args) super(*args) @agent = nil end def self.from_chef_resource(resource) new(resource.name).copy_attrs_from_chef_resource(resource, *%w(agent params meta op)) end def parse_definition unless definition =~ /\Aprimitive (\S+) (\S+)/ raise Pacemaker::CIBObject::DefinitionParseError, \ "Couldn't parse definition '#{definition}'" end self.name = $1 self.agent = $2 %w(params meta).each do |data_type| hash = self.class.extract_hash(definition, data_type) writer = (data_type + '=').to_sym send(writer, hash) end self.op = {} %w(start stop monitor).each do |op| self.op[op] = self.class.extract_hash(definition, "op #{op}") end end def params_string self.class.params_string(params) end def meta_string self.class.meta_string(meta) end def op_string self.class.op_string(op) end def definition_string return <