From 35bc3a4cebd3a84dfa945d5aa86906ba10fd1964 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Fri, 14 Mar 2014 20:19:16 +0000 Subject: [PATCH] refer to TYPE via self.class to allow inheritance When referring to TYPE directly, the value is taken from the class in which the method is defined, but we want it to be taken from the class for the object being acted on, so we instead use self.class::TYPE to ensure that methods still work in inherited subclasses. For example this means that Pacemaker::Resource::MasterSlave will be able to inherit from Pacemaker::Resource::Clone. --- libraries/pacemaker/constraint/colocation.rb | 4 ++-- libraries/pacemaker/resource/clone.rb | 4 ++-- libraries/pacemaker/resource/group.rb | 4 ++-- libraries/pacemaker/resource/primitive.rb | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libraries/pacemaker/constraint/colocation.rb b/libraries/pacemaker/constraint/colocation.rb index a91090c..080df05 100644 --- a/libraries/pacemaker/constraint/colocation.rb +++ b/libraries/pacemaker/constraint/colocation.rb @@ -11,7 +11,7 @@ class Pacemaker::Constraint::Colocation < Pacemaker::Constraint end def parse_definition - unless definition =~ /^#{TYPE} (\S+) (\d+|[-+]?inf): (.+?)\s*$/ + unless definition =~ /^#{self.class::TYPE} (\S+) (\d+|[-+]?inf): (.+?)\s*$/ raise Pacemaker::CIBObject::DefinitionParseError, \ "Couldn't parse definition '#{definition}'" end @@ -21,7 +21,7 @@ class Pacemaker::Constraint::Colocation < Pacemaker::Constraint end def definition_string - "#{TYPE} #{name} #{score}: " + resources.join(' ') + "#{self.class::TYPE} #{name} #{score}: " + resources.join(' ') end def crm_configure_command diff --git a/libraries/pacemaker/resource/clone.rb b/libraries/pacemaker/resource/clone.rb index 5cd916d..c7145d9 100644 --- a/libraries/pacemaker/resource/clone.rb +++ b/libraries/pacemaker/resource/clone.rb @@ -14,7 +14,7 @@ class Pacemaker::Resource::Clone < Pacemaker::Resource end def definition_string - str = "#{TYPE} #{name} #{rsc}" + str = "#{self.class::TYPE} #{name} #{rsc}" unless meta.empty? str << continuation_line(meta_string) end @@ -22,7 +22,7 @@ class Pacemaker::Resource::Clone < Pacemaker::Resource end def parse_definition - unless definition =~ /^#{TYPE} (\S+) (\S+)/ + unless definition =~ /^#{self.class::TYPE} (\S+) (\S+)/ raise Pacemaker::CIBObject::DefinitionParseError, \ "Couldn't parse definition '#{definition}'" end diff --git a/libraries/pacemaker/resource/group.rb b/libraries/pacemaker/resource/group.rb index 6238f74..a4f579f 100644 --- a/libraries/pacemaker/resource/group.rb +++ b/libraries/pacemaker/resource/group.rb @@ -14,7 +14,7 @@ class Pacemaker::Resource::Group < Pacemaker::Resource end def parse_definition - unless definition =~ /^#{TYPE} (\S+) (.+?)(\s+\\)?$/ + unless definition =~ /^#{self.class::TYPE} (\S+) (.+?)(\s+\\)?$/ raise Pacemaker::CIBObject::DefinitionParseError, \ "Couldn't parse definition '#{definition}'" end @@ -27,7 +27,7 @@ class Pacemaker::Resource::Group < Pacemaker::Resource end def definition_string - str = "#{TYPE} #{name} " + members.join(' ') + str = "#{self.class::TYPE} #{name} " + members.join(' ') unless meta.empty? str << continuation_line(meta_string) end diff --git a/libraries/pacemaker/resource/primitive.rb b/libraries/pacemaker/resource/primitive.rb index d97f3f5..ec3c8c9 100644 --- a/libraries/pacemaker/resource/primitive.rb +++ b/libraries/pacemaker/resource/primitive.rb @@ -21,7 +21,7 @@ class Pacemaker::Resource::Primitive < Pacemaker::Resource end def parse_definition - unless definition =~ /\A#{TYPE} (\S+) (\S+)/ + unless definition =~ /\A#{self.class::TYPE} (\S+) (\S+)/ raise Pacemaker::CIBObject::DefinitionParseError, \ "Couldn't parse definition '#{definition}'" end @@ -50,7 +50,7 @@ class Pacemaker::Resource::Primitive < Pacemaker::Resource end def definition_string - str = "#{TYPE} #{name} #{agent}" + str = "#{self.class::TYPE} #{name} #{agent}" %w(params meta op).each do |data_type| unless send(data_type).empty? data_string = send("#{data_type}_string")