automember rebuild nowait feature added

automember-rebuild uses asynchronous 389 task, and returned
success even if the task didn't run. this patch fixes this
issue adding a --nowait parameter to 'ipa automember-rebuild',
defaulting to False, thus when the script runs without it,
it waits for the 'nstaskexitcode' attribute, which means
the task has finished. Old usage can be enabled using --nowait,
and returns the DN of the task for further polling.
New tests added also.

https://fedorahosted.org/freeipa/ticket/4239

Reviewed-By: Petr Viktorin <pviktori@redhat.com>
This commit is contained in:
Adam Misnyovszki
2014-03-25 14:47:03 +01:00
committed by Petr Viktorin
parent c58d6b2689
commit 8b91d9a6e8
6 changed files with 149 additions and 25 deletions

View File

@@ -24,7 +24,8 @@ Test the `ipalib/plugins/automember.py` module.
from ipalib import api, errors
from ipapython.dn import DN
from ipatests.test_xmlrpc import objectclasses
from xmlrpc_test import Declarative, fuzzy_digits, fuzzy_uuid
from xmlrpc_test import Declarative, fuzzy_digits, fuzzy_uuid, \
fuzzy_automember_dn, fuzzy_automember_message
from ipatests.test_xmlrpc.test_user_plugin import get_user_result
@@ -242,8 +243,20 @@ class test_automember(Declarative):
command=('automember_rebuild', [], dict(type=u'hostgroup')),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task completed',
result=True
summary=fuzzy_automember_message,
result=dict()
),
),
dict(
desc='Rebuild membership for hostgroups asynchronously',
command=('automember_rebuild', [], dict(type=u'hostgroup',no_wait=True)),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task started',
result=dict(
dn=fuzzy_automember_dn
),
),
),
@@ -349,8 +362,20 @@ class test_automember(Declarative):
command=('automember_rebuild', [], dict(hosts=fqdn1)),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task completed',
result=True
summary=fuzzy_automember_message,
result=dict()
),
),
dict(
desc='Rebuild membership for host: %s asynchronously' % fqdn1,
command=('automember_rebuild', [], dict(hosts=fqdn1, no_wait=True)),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task started',
result=dict(
dn=fuzzy_automember_dn
),
),
),
@@ -519,8 +544,20 @@ class test_automember(Declarative):
command=('automember_rebuild', [], dict(type=u'group')),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task completed',
result=True
summary=fuzzy_automember_message,
result=dict()
),
),
dict(
desc='Rebuild membership for groups asynchronously',
command=('automember_rebuild', [], dict(type=u'group', no_wait=True)),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task started',
result=dict(
dn=fuzzy_automember_dn
),
),
),
@@ -584,8 +621,20 @@ class test_automember(Declarative):
command=('automember_rebuild', [], dict(users=user1)),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task completed',
result=True
summary=fuzzy_automember_message,
result=dict()
),
),
dict(
desc='Rebuild membership for user: %s asynchronously' % user1,
command=('automember_rebuild', [], dict(users=user1, no_wait=True)),
expected=dict(
value=u'',
summary=u'Automember rebuild membership task started',
result=dict(
dn=fuzzy_automember_dn
),
),
),

View File

@@ -38,6 +38,16 @@ uuid_re = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
# Matches an ipauniqueid like u'784d85fd-eae7-11de-9d01-54520012478b'
fuzzy_uuid = Fuzzy('^%s$' % uuid_re)
# Matches an automember task DN
fuzzy_automember_dn = Fuzzy(
'^cn=%s,cn=automember rebuild membership,cn=tasks,cn=config$' % uuid_re
)
# Matches an automember task finish message
fuzzy_automember_message = Fuzzy(
'^Automember rebuild task finished\. Processed \(\d+\) entries\.$'
)
# Matches trusted domain GUID, like u'463bf2be-3456-4a57-979e-120304f2a0eb'
fuzzy_guid = fuzzy_uuid