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) primitive = new(resource.name) %w(agent params meta op).each do |data| value = resource.send(data.to_sym) writer = (data + '=').to_sym primitive.send(writer, value) end return primitive 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 <