use new #from_name logic to handle sanity checks

This commit is contained in:
Adam Spiers 2014-01-29 14:22:22 +00:00
parent 2947139632
commit 4df1f5c40f
2 changed files with 11 additions and 11 deletions

View File

@ -35,13 +35,14 @@ module Pacemaker
def from_name(name) def from_name(name)
definition = get_definition(name) definition = get_definition(name)
return nil unless definition return nil unless definition and ! definition.empty?
obj_type = type(definition) obj_type = type(definition)
subclass = @@subclasses[obj_type] subclass = @@subclasses[obj_type]
unless subclass unless subclass
raise "No subclass of #{self.name} was registered with type '#{obj_type}'" raise "No subclass of #{self.name} was registered with type '#{obj_type}'"
end end
obj = subclass.from_definition(definition) obj = subclass.from_definition(definition)
return nil unless obj
unless name == obj.name unless name == obj.name
raise "Name '#{obj.name}' in definition didn't match name '#{name}' used for retrieval" raise "Name '#{obj.name}' in definition didn't match name '#{name}' used for retrieval"
end end

View File

@ -17,7 +17,7 @@
# limitations under the License. # 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. # For vagrant env, switch to the following 'require' command.
#require "/srv/chef/file_store/cookbooks/pacemaker/providers/helper" #require "/srv/chef/file_store/cookbooks/pacemaker/providers/helper"
@ -89,18 +89,17 @@ end
def load_current_resource def load_current_resource
name = @new_resource.name name = @new_resource.name
primitive = Pacemaker::Resource::Primitive.new(name) primitive = Pacemaker::CIBObject.from_name(name)
begin unless primitive
primitive.load_definition
rescue Pacemaker::ObjectTypeMismatch => e
Chef::Log.warn e.message
return
end
if ! primitive.definition or primitive.definition.empty?
Chef::Log.debug "CIB object definition nil or empty" Chef::Log.debug "CIB object definition nil or empty"
return return
end 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}" Chef::Log.debug "CIB object definition #{primitive.definition}"
@current_resource_definition = primitive.definition @current_resource_definition = primitive.definition
primitive.parse_definition primitive.parse_definition