diff --git a/libraries/pacemaker/cib_object.rb b/libraries/pacemaker/cib_object.rb index cdd4732..f266960 100644 --- a/libraries/pacemaker/cib_object.rb +++ b/libraries/pacemaker/cib_object.rb @@ -67,6 +67,15 @@ module Pacemaker obj end end + + def from_chef_resource(resource) + new(resource.name).copy_attrs_from_chef_resource(resource, + *attrs_to_copy_from_chef) + end + + def attrs_to_copy_from_chef + raise NotImplementedError, "#{self.class} didn't implement attrs_to_copy_from_chef" + end end def initialize(name) diff --git a/libraries/pacemaker/constraint/colocation.rb b/libraries/pacemaker/constraint/colocation.rb index e522cc3..a569dfc 100644 --- a/libraries/pacemaker/constraint/colocation.rb +++ b/libraries/pacemaker/constraint/colocation.rb @@ -6,9 +6,8 @@ class Pacemaker::Constraint::Colocation < Pacemaker::Constraint attr_accessor :score, :resources - def self.from_chef_resource(resource) - attrs = %w(score resources) - new(resource.name).copy_attrs_from_chef_resource(resource, *attrs) + def self.attrs_to_copy_from_chef + %w(score resources) end def parse_definition diff --git a/libraries/pacemaker/resource.rb b/libraries/pacemaker/resource.rb index 10763b8..38c109f 100644 --- a/libraries/pacemaker/resource.rb +++ b/libraries/pacemaker/resource.rb @@ -49,6 +49,5 @@ module Pacemaker end h end - end end diff --git a/libraries/pacemaker/resource/group.rb b/libraries/pacemaker/resource/group.rb index bc9fbb6..6206ae7 100644 --- a/libraries/pacemaker/resource/group.rb +++ b/libraries/pacemaker/resource/group.rb @@ -9,9 +9,8 @@ class Pacemaker::Resource::Group < Pacemaker::Resource attr_accessor :members - def self.from_chef_resource(resource) - attrs = %w(members meta) - new(resource.name).copy_attrs_from_chef_resource(resource, *attrs) + def self.attrs_to_copy_from_chef + %w(members meta) end def parse_definition diff --git a/libraries/pacemaker/resource/primitive.rb b/libraries/pacemaker/resource/primitive.rb index f462990..8dba8a1 100644 --- a/libraries/pacemaker/resource/primitive.rb +++ b/libraries/pacemaker/resource/primitive.rb @@ -16,8 +16,8 @@ class Pacemaker::Resource::Primitive < Pacemaker::Resource @agent = nil end - def self.from_chef_resource(resource) - new(resource.name).copy_attrs_from_chef_resource(resource, *%w(agent params meta op)) + def self.attrs_to_copy_from_chef + %w(agent params meta op) end def parse_definition