From 6cef509353fa41aec90905f933c4ac5b1b320fd3 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Thu, 23 Jan 2014 16:29:28 +0000 Subject: [PATCH] "crm configure show foo" exits 0 with no output if foo doesn't exist --- libraries/cib_objects.rb | 3 ++- providers/primitive.rb | 7 ++----- spec/providers/primitive_spec.rb | 3 +-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/libraries/cib_objects.rb b/libraries/cib_objects.rb index 0fef5ff..788b920 100644 --- a/libraries/cib_objects.rb +++ b/libraries/cib_objects.rb @@ -18,7 +18,8 @@ module Chef::Libraries end def cib_object_exists?(name) - ! get_cib_object_definition(name).nil? + dfn = get_cib_object_definition(name) + !! (dfn && ! dfn.empty?) end def cib_object_type(obj_definition) diff --git a/providers/primitive.rb b/providers/primitive.rb index 773250a..697d0f6 100644 --- a/providers/primitive.rb +++ b/providers/primitive.rb @@ -78,11 +78,8 @@ def load_current_resource name = @new_resource.name obj_definition = get_cib_object_definition(name) - return unless obj_definition - - if obj_definition.empty? # probably overly paranoid - raise "CIB object '#{name}' existed but definition was empty?!" - end + return if ! obj_definition or obj_definition.empty? + Chef::Log.debug "CIB object definition #{obj_definition}" unless obj_definition =~ /\Aprimitive #{name} (\S+)/ Chef::Log.warn "Resource '#{name}' was not a primitive" diff --git a/spec/providers/primitive_spec.rb b/spec/providers/primitive_spec.rb index 94cff9d..53354d9 100644 --- a/spec/providers/primitive_spec.rb +++ b/spec/providers/primitive_spec.rb @@ -54,8 +54,7 @@ describe "Chef::Provider::PacemakerPrimitive" do # get_cib_object_definition is invoked by load_current_resource # and later used to see whether to create or modify. - expect(provider).to receive(:get_cib_object_definition).and_return(nil) - + expect(provider).to receive(:get_cib_object_definition).and_return("") # Later, the :create action calls cib_object_exists? to check # that creation succeeded.