diff --git a/libraries/pacemaker/mixins/resource_meta.rb b/libraries/pacemaker/mixins/resource_meta.rb new file mode 100644 index 0000000..f8c00b4 --- /dev/null +++ b/libraries/pacemaker/mixins/resource_meta.rb @@ -0,0 +1,28 @@ +# A mixin for Pacemaker::Resource subclasses which support meta attributes +# (priority, target-role, is-managed) + +module Pacemaker + class Resource + module Meta + def self.included(base) + base.extend ClassMethods + end + + attr_accessor :meta + + def meta_string + self.class.meta_string(meta) + end + + module ClassMethods + def meta_string(meta) + return "" if ! meta or meta.empty? + "meta " + + meta.sort.map do |key, value| + %'#{key}="#{value}"' + end.join(' ') + end + end + end + end +end diff --git a/libraries/pacemaker/resource/primitive.rb b/libraries/pacemaker/resource/primitive.rb index 56d710d..de16e9e 100644 --- a/libraries/pacemaker/resource/primitive.rb +++ b/libraries/pacemaker/resource/primitive.rb @@ -1,12 +1,14 @@ require 'shellwords' require File.expand_path('../resource', File.dirname(__FILE__)) +require File.expand_path('../mixins/resource_meta', File.dirname(__FILE__)) class Pacemaker::Resource::Primitive < Pacemaker::Resource TYPE = 'primitive' - register_type TYPE - attr_accessor :agent, :params, :meta, :op + include Pacemaker::Resource::Meta + + attr_accessor :agent, :params, :op def initialize(*args) super(*args) @@ -43,10 +45,6 @@ class Pacemaker::Resource::Primitive < Pacemaker::Resource self.class.params_string(params) end - def meta_string - self.class.meta_string(meta) - end - def op_string self.class.op_string(op) end @@ -78,14 +76,6 @@ class Pacemaker::Resource::Primitive < Pacemaker::Resource end.join(' ') end - def self.meta_string(meta) - return "" if ! meta or meta.empty? - "meta " + - meta.sort.map do |key, value| - %'#{key}="#{value}"' - end.join(' ') - end - def self.op_string(ops) return "" if ! ops or ops.empty? ops.sort.map do |op, attrs|