summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Heimes <cheimes@redhat.com>2018-11-19 14:54:04 +0100
committerChristian Heimes <cheimes@redhat.com>2018-11-20 09:31:32 +0100
commit7434a3299d25d1b96ac13ad33fb9ec96eb3da85e (patch)
treee5d222b3ee4f98608439de2713c54d0541526cee
parent122f968ceebbe80a47eca842a98bb39876264535 (diff)
downloadfreeipa-7434a3299d25d1b96ac13ad33fb9ec96eb3da85e.tar.gz
freeipa-7434a3299d25d1b96ac13ad33fb9ec96eb3da85e.tar.xz
freeipa-7434a3299d25d1b96ac13ad33fb9ec96eb3da85e.zip
PR-CI: Restart rpcbind when it blocks kadmin port
Every now and then, a PR-CI job fails because rpcbind blocks the kadmin port 749/UDP and kadmin.service fails to start. When NFS secure port is configured, rpcbind reserves a random low port. A new workaround detects the blocked port and restarts rpcbind.service. See: https://pagure.io/freeipa/issue/7769 Signed-off-by: Christian Heimes <cheimes@redhat.com> Reviewed-By: Thomas Woerner <twoerner@redhat.com>
-rw-r--r--ipatests/pytest_ipa/integration/tasks.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/ipatests/pytest_ipa/integration/tasks.py b/ipatests/pytest_ipa/integration/tasks.py
index e1d119db2..937f2eeff 100644
--- a/ipatests/pytest_ipa/integration/tasks.py
+++ b/ipatests/pytest_ipa/integration/tasks.py
@@ -160,15 +160,32 @@ def prepare_host(host):
host.put_file_contents(env_filename, env_to_script(host.to_env()))
-def allow_sync_ptr(host):
- kinit_admin(host)
- host.run_command(["ipa", "dnsconfig-mod", "--allow-sync-ptr=true"],
- raiseonerr=False)
+def rpcbind_kadmin_workaround(host):
+ """Restart rpcbind in case it blocks 749/UDP
+
+ See https://pagure.io/freeipa/issue/7769
+ See https://bugzilla.redhat.com/show_bug.cgi?id=1592883
+ """
+ for _i in range(5):
+ result = host.run_command(['ss', '-ulnp', 'sport', '=', '749'])
+ if 'rpcbind' in result.stdout_text:
+ logger.error("rpcbind blocks 749/UDP, restarting service")
+ host.run_command(['systemctl', 'restart', 'rpcbind.service'])
+ time.sleep(2)
+ else:
+ break
def apply_common_fixes(host):
prepare_host(host)
fix_hostname(host)
+ rpcbind_kadmin_workaround(host)
+
+
+def allow_sync_ptr(host):
+ kinit_admin(host)
+ host.run_command(["ipa", "dnsconfig-mod", "--allow-sync-ptr=true"],
+ raiseonerr=False)
def backup_file(host, filename):