From b6c2abadc8bdf7ca9f4c405f24508f5ddcf42053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hellebrandt?= Date: Thu, 25 Apr 2024 09:58:39 +0200 Subject: [PATCH] Fix omitting credentials when CLI has already been instantiated (#14449) * Fix omitting credentials when CLI has already been instantiated * Rework based on comments * Set to False after yield (cherry picked from commit 845ef03f9e55d75bd751f2f3646c66b2c33b9e00) --- robottelo/hosts.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index d06eb127547..8dd1e48f139 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -1851,9 +1851,27 @@ def cli(self): @contextmanager def omit_credentials(self): - self.omitting_credentials = True + change = not self.omitting_credentials # if not already set to omit + if change: + self.omitting_credentials = True + # if CLI is already created + if self._cli._configured: + for name, obj in self._cli.__dict__.items(): + with contextlib.suppress( + AttributeError + ): # not everything has an mro method, we don't care about them + if Base in obj.mro(): + getattr(self._cli, name).omitting_credentials = True yield - self.omitting_credentials = False + if change: + self.omitting_credentials = False + if self._cli._configured: + for name, obj in self._cli.__dict__.items(): + with contextlib.suppress( + AttributeError + ): # not everything has an mro method, we don't care about them + if Base in obj.mro(): + getattr(self._cli, name).omitting_credentials = False @contextmanager def ui_session(self, testname=None, user=None, password=None, url=None, login=True):