[Freeipa-devel] [PATCH 0063] Raise error on topology disconnect/last-role-host removal during server uninstall

Stanislav Laznicka slaznick at redhat.com
Wed Aug 17 12:38:34 UTC 2016


On 08/17/2016 02:17 PM, Martin Babinsky wrote:
> On 08/16/2016 03:47 PM, Stanislav Laznicka wrote:
>> On 08/15/2016 02:20 PM, Martin Babinsky wrote:
>>> On 08/15/2016 02:13 PM, Martin Babinsky wrote:
>>>> On 08/12/2016 12:08 PM, Stanislav Laznicka wrote:
>>>>> Hello,
>>>>>
>>>>> topology disconnect/last-role-host removal errors would just be 
>>>>> logged
>>>>> during server uninstall even if ignore options are not present. The
>>>>> host
>>>>> would still appear in the topology even after "successful" uninstall.
>>>>>
>>>>> https://fedorahosted.org/freeipa/ticket/6168
>>>>>
>>>>>
>>>>>
>>>>
>>>> The patch seems to be ok, however shouldn't we use sys.exit() when
>>>> handling ServerRemovalError? Yes raising SystemExit from within a
>>>> function is a horrible practice, but it is already done on several 
>>>> other
>>>> places instead of letting the exception bubble up to the main handler.
>>>>
>>>> CC'ing Jan for his thoughts on this since I may be wrong.
>>>>
>>> Hmm, you will definitely need sys.exit() here since otherwise
>>> ipa-server-install reports 0 exit code even if there was an exception
>>> thrown:
>>>
>>> """
>>> [root at master1 ~]# ipa-server-install --uninstall -U
>>> ipa         : ERROR    Server removal aborted: Deleting this server
>>> will leave your installation without a DNS..
>>> [root at master1 ~]# echo $?
>>> 0
>>> """
>>>
>> Because of #5750 (remove sys.exit() calls from installer modules) I
>> rather raise ScriptError in this case. See the modified patch. It
>> depends on either of my 48-4 or 48-5 patches (pick one).
>>
>
> Make sure you raise it using str(e) because ScriptError does not 
> coerce the argument to string/unicode:
>
> @@ -303,7 +303,7 @@ def 
> remove_master_from_managed_topology(api_instance, options):
>          replication.run_server_del_as_cli(
>              api_instance, api_instance.env.host, **server_del_options)
>      except errors.ServerRemovalError as e:
> -        raise ScriptError(e)
> +        raise ScriptError(str(e))
>      except Exception as e:
>          # if the master was already deleted we will just get a warning
>          root_logger.warning("Failed to delete master: {}".format(e))
>
Oops, sorry, attached is the fixed patch.
> Regardless of this fix, I still get exit code 0 after exception is 
> raised:
>
> """
> [root at client1 ~]# ipa-server-install --uninstall -U
> This server is active DNSSEC key master. Uninstall could break your 
> DNS system.
> ipa         : ERROR    Server removal aborted: Replica is active 
> DNSSEC key master. Uninstall could break your DNS system. Please 
> disable or replace DNSSEC key master first..
> [root at client1 ~]# echo $?
> 0
> """
>
> I guess there is nothing we can do about this now as the fix for this 
> seems to be beyond the scope of this patch ( or am I mistaken?).
>
Dandy. The actual relevant ticket to zero return value no matter what is 
already there - https://fedorahosted.org/freeipa/ticket/5725.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-slaznick-0063-3-Fail-on-topology-disconnect-last-role-removal.patch
Type: text/x-patch
Size: 1646 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160817/8b121114/attachment.bin>


More information about the Freeipa-devel mailing list