diff --git a/libraries/pacemaker/cib_object.rb b/libraries/pacemaker/cib_object.rb index aa66f8f..a218c5d 100644 --- a/libraries/pacemaker/cib_object.rb +++ b/libraries/pacemaker/cib_object.rb @@ -35,13 +35,14 @@ module Pacemaker def from_name(name) definition = get_definition(name) - return nil unless definition + return nil unless definition and ! definition.empty? obj_type = type(definition) subclass = @@subclasses[obj_type] unless subclass raise "No subclass of #{self.name} was registered with type '#{obj_type}'" end obj = subclass.from_definition(definition) + return nil unless obj unless name == obj.name raise "Name '#{obj.name}' in definition didn't match name '#{name}' used for retrieval" end diff --git a/providers/primitive.rb b/providers/primitive.rb index d369c85..4602b65 100644 --- a/providers/primitive.rb +++ b/providers/primitive.rb @@ -17,7 +17,7 @@ # limitations under the License. # -require ::File.join(::File.dirname(__FILE__), *%w(.. libraries pacemaker cib_object)) +require ::File.join(::File.dirname(__FILE__), *%w(.. libraries pacemaker)) # For vagrant env, switch to the following 'require' command. #require "/srv/chef/file_store/cookbooks/pacemaker/providers/helper" @@ -89,18 +89,17 @@ end def load_current_resource name = @new_resource.name - primitive = Pacemaker::Resource::Primitive.new(name) - begin - primitive.load_definition - rescue Pacemaker::ObjectTypeMismatch => e - Chef::Log.warn e.message - return - end - - if ! primitive.definition or primitive.definition.empty? + primitive = Pacemaker::CIBObject.from_name(name) + unless primitive Chef::Log.debug "CIB object definition nil or empty" return end + + unless primitive.is_a? Pacemaker::Resource::Primitive + Chef::Log.warn "CIB object '#{name}' was a #{primitive.type} not a resource primitive" + return + end + Chef::Log.debug "CIB object definition #{primitive.definition}" @current_resource_definition = primitive.definition primitive.parse_definition