[Freeipa-devel] [PATCH 0153-0158] move ipa-replica-manage del functionality into server-del
Martin Basti
mbasti at redhat.com
Thu Jun 16 10:45:17 UTC 2016
On 15.06.2016 15:29, Martin Babinsky wrote:
> On 06/15/2016 10:30 AM, Jan Cholasta wrote:
>> Hi,
>>
>> On 12.6.2016 17:31, Martin Babinsky wrote:
>>> On 06/09/2016 08:12 PM, Martin Babinsky wrote:
>>>> These patches expand `server_del` to a full fledged IPA master
>>>> killer in
>>>> domain level 1.
>>>>
>>>> Due to 'server uninstallation removed master from topology' use case,
>>>> the individual steps are not in the same order as in the original code
>>>> to facilitate self-removal from topology without introducing an
>>>> array of
>>>> permissions for master to remove itself.
>>>>
>>>> I had no opportunity to test out the CI test suite because of
>>>> technical
>>>> problems so it would be nice if our upstream QE could give it a
>>>> spin and
>>>> report errors.
>>>>
>>>> http://www.freeipa.org/page/V4/Manage_replication_topology_4_4
>>>> https://fedorahosted.org/freeipa/ticket/5181
>>>>
>>>>
>>>>
>>> Attaching rebased patches and bumping for review.
>>>
>>> Please note that they depend on 'Server Roles v2' patchset.
>>
>> Patch 0153:
>>
>> Should be an ipaserver module, unless it is required on clients as well,
>> in which case it should be an ipalib module.
>>
>>
>> Patch 0154: LGTM
>>
>>
>> Patch 0155:
>>
>> In LDAPDelete subclasses, the primary key argument is multivalue, so I'm
>> guessing your post_callback won't work correctly.
>>
>> Also, since this is *server*-del, s/master/server/ where applicable.
>>
>>
>> Patch 0156: LGTM
>>
>>
>> Patch 0157:
>>
>> This looks suspicious:
>>
>> + result = server_del_cmd(hostname, version=api_version, **options)
>>
>> Version is automatically filled in in Command.__call__(), why do you add
>> it manually here?
>>
>>
>> Patch 0158: LGTM
>>
>>
>> Honza
>>
>
> Attaching updated patches.
>
>
>
Hello, I have a few comments:
1)
you reused ID numbers for the your messages
+class ServerRemovalInfo(PublicMessage):
...
+ errno = 13020
+class ServerRemovalWarning(PublicMessage):
...
+ errno = 13021
class FailedToRemoveHostDNSRecords(PublicMessage):
...
errno = 13020
class DNSForwardPolicyConflictWithEmptyZone(PublicMessage):
...
errno = 13021
2)
+ def _check_topology_connectivity(self, topology_connectivity,
master_cn):
+ try:
+ topology_connectivity.check_current_state()
+ except ValueError as e:
+ raise errors.ServerRemovalError(reason=_(str(e)))
+
+ try:
+ topology_connectivity.check_state_after_removal(master_cn)
+ except ValueError as e:
+ raise errors.ServerRemovalError(reason=_(str(e)))
* _(str(e)): gettext cannot be used by this way
* str(e): you dont need to convert exception to string, this is done
automatically in exception
3) gettext again
+ self.add_message(
+ messages.ServerRemovalWarning(
+ message=_(msg)
+ )
+ )
4)
+ messages.ServerRemovalWarning(
+ message=_("Failed to clean memberPrincipal
{principal}"
+ " from s4u2proxy entry {dn}:
{err}".format(
+ principal=member_principal,
+ dn=dn,
+ err=e))))
+ messages.ServerRemovalWarning(
+ message=_("Failed to clean up DNA hostname entries
for "
+ "{master}: {err}".format(
+ master=master, err=e))))
several more times
I'm not sure if this will work, for safety I would prefer to change it
to dictionary substitution
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668226
It looks like it was fixed in gettext 18.3, some distributions still
have the older one
I have to test more how gettext works with the new python format strings
5)
+ def interactive_prompt_callback(self, kw):
+ self.api.Backend.textui.print_plain(
+ _("Removing {server} from replication topology, "
+ "please wait...".format(server=', '.join(kw['cn']))))
Will this work? IMO this should be on client side
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160616/4625b82a/attachment.htm>
More information about the Freeipa-devel
mailing list