diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 926f671b..588fefc0 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -26,6 +26,13 @@ Changed Cinder service. To use another service type, use ``api_versions@openstack`` context or ``api_info`` property of environment configuration. +Fixed +~~~~~~~ + +* Close bug LP #1819284. Because secret class is lazy in barbican client, + secret would really access the api to get secret properties while calling + some property. + [1.4.0] - 2019-03-07 -------------------- diff --git a/rally_openstack/cleanup/resources.py b/rally_openstack/cleanup/resources.py index 7112183b..d99315c1 100644 --- a/rally_openstack/cleanup/resources.py +++ b/rally_openstack/cleanup/resources.py @@ -1112,7 +1112,7 @@ class BarbicanSecrets(base.ResourceManager): def is_deleted(self): try: - self._manager().get(self.id()) + self._manager().get(self.id()).status except Exception: return True diff --git a/rally_openstack/services/key_manager/barbican.py b/rally_openstack/services/key_manager/barbican.py index 4a1db8d1..b976c8be 100644 --- a/rally_openstack/services/key_manager/barbican.py +++ b/rally_openstack/services/key_manager/barbican.py @@ -58,7 +58,15 @@ class BarbicanService(service.Service): :param secret_name: The name of the secret. """ - return self._clients.barbican().secrets.get(secret_ref) + secret = self._clients.barbican().secrets.get(secret_ref) + # secret is lazy, its properties would be filled with real + # values while getting some property. + try: + secret.status + except Exception as e: + from rally import exceptions + raise exceptions.GetResourceFailure(resource=secret, err=e) + return secret @atomic.action_timer("barbican.delete_secret") def delete_secret(self, secret_name):