Fix creds cleanup for system scope

System-scoped credentials don't have an associated project, so don't try
to cleanup the project nor its default security group.

Related-Bug: 1988026
Change-Id: I32707d1e7b4465cb0d713b7c245f3668f70e6de7
diff --git a/tempest/lib/common/dynamic_creds.py b/tempest/lib/common/dynamic_creds.py
index be8c0e8..d687eb5 100644
--- a/tempest/lib/common/dynamic_creds.py
+++ b/tempest/lib/common/dynamic_creds.py
@@ -559,23 +559,24 @@
             except lib_exc.NotFound:
                 LOG.warning("user with name: %s not found for delete",
                             creds.username)
-            # NOTE(zhufl): Only when neutron's security_group ext is
-            # enabled, cleanup_default_secgroup will not raise error. But
-            # here cannot use test_utils.is_extension_enabled for it will cause
-            # "circular dependency". So here just use try...except to
-            # ensure tenant deletion without big changes.
-            try:
-                if self.neutron_available:
-                    self.cleanup_default_secgroup(
-                        self.security_groups_admin_client, creds.tenant_id)
-            except lib_exc.NotFound:
-                LOG.warning("failed to cleanup tenant %s's secgroup",
-                            creds.tenant_name)
-            try:
-                self.creds_client.delete_project(creds.tenant_id)
-            except lib_exc.NotFound:
-                LOG.warning("tenant with name: %s not found for delete",
-                            creds.tenant_name)
+            if creds.tenant_id:
+                # NOTE(zhufl): Only when neutron's security_group ext is
+                # enabled, cleanup_default_secgroup will not raise error. But
+                # here cannot use test_utils.is_extension_enabled for it will
+                # cause "circular dependency". So here just use try...except to
+                # ensure tenant deletion without big changes.
+                try:
+                    if self.neutron_available:
+                        self.cleanup_default_secgroup(
+                            self.security_groups_admin_client, creds.tenant_id)
+                except lib_exc.NotFound:
+                    LOG.warning("failed to cleanup tenant %s's secgroup",
+                                creds.tenant_name)
+                try:
+                    self.creds_client.delete_project(creds.tenant_id)
+                except lib_exc.NotFound:
+                    LOG.warning("tenant with name: %s not found for delete",
+                                creds.tenant_name)
 
             # if cred is domain scoped, delete ephemeral domain
             # do not delete default domain