require 'shellwords' require_relative File::join(%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 # FIXME: deal with op 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 <