- /**
- * Delete the specified Tenant (by Name) in the given cloud. This method returns true or
- * false, depending on whether the tenant existed and was successfully deleted, or if
- * the tenant already did not exist. Both cases are treated as success (no Exceptions).
- * <p>
- * Note for the AIC Cloud (DCP/LCP): all admin requests go to the centralized identity
- * service in DCP. So deleting a tenant from one cloudSiteId will remove it from all
- * sites managed by that identity service.
- * <p>
- *
- * @param tenantName The name of the tenant to delete
- * @param cloudSiteId The cloud identifier from which to delete the tenant.
- * @return true if the tenant was deleted, false if the tenant did not exist.
- * @throws MsoOpenstackException If the Openstack API call returns an exception.
- */
- public boolean deleteTenantByName (String tenantName, String cloudSiteId) throws MsoException {
- // Obtain the cloud site information where we will query the tenant
- CloudSite cloudSite = cloudConfig.getCloudSite (cloudSiteId);
- if (cloudSite == null) {
- throw new MsoCloudSiteNotFound (cloudSiteId);
- }
- Keystone keystoneAdminClient = getKeystoneAdminClient (cloudSite);
-
- try {
- // Need the Tenant ID to delete (can't directly delete by name)
- Tenant tenant = findTenantByName (keystoneAdminClient, tenantName);
- if (tenant == null) {
- // OK if tenant already doesn't exist.
- LOGGER.error(MessageEnum.RA_TENANT_NOT_FOUND, tenantName, cloudSiteId, "", "", MsoLogger.ErrorCode.DataError, "Tenant not found");
- return false;
- }
-
- // Execute the Delete. It has no return value.
- OpenStackRequest <Void> request = keystoneAdminClient.tenants ().delete (tenant.getId ());
- executeAndRecordOpenstackRequest (request, msoProps);
-
- LOGGER.debug ("Deleted Tenant " + tenant.getId () + " (" + tenant.getName () + ")");
-
- // Clear any cached clients. Not really needed, ID will not be reused.
- MsoHeatUtils.expireHeatClient (tenant.getId (), cloudSiteId);
- MsoNeutronUtils.expireNeutronClient (tenant.getId (), cloudSiteId);
- } catch (OpenStackBaseException e) {
- // Note: It doesn't seem to matter if tenant doesn't exist, no exception is thrown.
- // Convert Keystone OpenStackResponseException to MsoOpenstackException
- throw keystoneErrorToMsoException (e, "DeleteTenant");
- } catch (RuntimeException e) {
- // Catch-all
- throw runtimeExceptionToMsoException (e, "DeleteTenant");
- }
-
- return true;
- }
-