mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add configuration to delete Tenant Application artifacts
This commit is contained in:
commit
2ac2b0fc37
@ -546,5 +546,20 @@ public interface ApplicationManager {
|
|||||||
* @throws ApplicationManagementException thrown if an error occurs when deleting data
|
* @throws ApplicationManagementException thrown if an error occurs when deleting data
|
||||||
*/
|
*/
|
||||||
void deleteApplicationDataOfTenant(int tenantId) throws ApplicationManagementException;
|
void deleteApplicationDataOfTenant(int tenantId) throws ApplicationManagementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete all application related data of a tenant by tenant Domain
|
||||||
|
*
|
||||||
|
* @param tenantDomain Domain of the Tenant
|
||||||
|
* @throws ApplicationManagementException thrown if an error occurs when deleting data
|
||||||
|
*/
|
||||||
void deleteApplicationDataByTenantDomain(String tenantDomain) throws ApplicationManagementException;
|
void deleteApplicationDataByTenantDomain(String tenantDomain) throws ApplicationManagementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete all Application artifacts related to a tenant by Tenant Domain
|
||||||
|
*
|
||||||
|
* @param tenantDomain Domain of the Tenant
|
||||||
|
* @throws ApplicationManagementException thrown if an error occurs when deleting app folders
|
||||||
|
*/
|
||||||
|
void deleteApplicationArtifactsByTenantDomain(String tenantDomain) throws ApplicationManagementException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,6 +81,7 @@
|
|||||||
com.dd.*,
|
com.dd.*,
|
||||||
io.entgra.device.mgt.core.identity.jwt.client.extension.*,
|
io.entgra.device.mgt.core.identity.jwt.client.extension.*,
|
||||||
io.entgra.device.mgt.core.apimgt.application.extension.*,
|
io.entgra.device.mgt.core.apimgt.application.extension.*,
|
||||||
|
io.entgra.device.mgt.core.tenant.mgt.common.*,
|
||||||
org.apache.commons.httpclient,
|
org.apache.commons.httpclient,
|
||||||
org.apache.commons.httpclient.methods,
|
org.apache.commons.httpclient.methods,
|
||||||
org.apache.commons.validator.routines
|
org.apache.commons.validator.routines
|
||||||
@ -389,6 +390,10 @@
|
|||||||
<artifactId>org.wso2.carbon.tenant.mgt</artifactId>
|
<artifactId>org.wso2.carbon.tenant.mgt</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
|
<artifactId>io.entgra.device.mgt.core.tenant.mgt.common</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,7 @@ import io.entgra.device.mgt.core.device.mgt.common.PaginationRequest;
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.App;
|
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.App;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.exception.TenantMgtException;
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
@ -96,8 +97,6 @@ import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementEx
|
|||||||
|
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.dto.DeviceType;
|
import io.entgra.device.mgt.core.device.mgt.core.dto.DeviceType;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
import org.wso2.carbon.stratos.common.beans.TenantInfoBean;
|
|
||||||
import org.wso2.carbon.tenant.mgt.services.TenantMgtAdminService;
|
|
||||||
import org.wso2.carbon.user.api.UserRealm;
|
import org.wso2.carbon.user.api.UserRealm;
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
|
||||||
@ -4418,7 +4417,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
spApplicationDAO.deleteSPApplicationMappingByTenant(tenantId);
|
spApplicationDAO.deleteSPApplicationMappingByTenant(tenantId);
|
||||||
spApplicationDAO.deleteIdentityServerByTenant(tenantId);
|
spApplicationDAO.deleteIdentityServerByTenant(tenantId);
|
||||||
applicationDAO.deleteApplicationsByTenant(tenantId);
|
applicationDAO.deleteApplicationsByTenant(tenantId);
|
||||||
APIUtil.getApplicationStorageManager().deleteAppFolderOfTenant(tenantId);
|
|
||||||
|
|
||||||
ConnectionManagerUtil.commitDBTransaction();
|
ConnectionManagerUtil.commitDBTransaction();
|
||||||
} catch (DBConnectionException e) {
|
} catch (DBConnectionException e) {
|
||||||
@ -4443,12 +4441,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
+ " of tenant ID: " + tenantId ;
|
+ " of tenant ID: " + tenantId ;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (ApplicationStorageManagementException e) {
|
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
|
||||||
String msg = "Error occurred while deleting App folder of tenant"
|
|
||||||
+ " of tenant ID: " + tenantId ;
|
|
||||||
log.error(msg, e);
|
|
||||||
throw new ApplicationManagementException(msg, e);
|
|
||||||
} finally {
|
} finally {
|
||||||
ConnectionManagerUtil.closeDBConnection();
|
ConnectionManagerUtil.closeDBConnection();
|
||||||
}
|
}
|
||||||
@ -4457,19 +4449,9 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteApplicationDataByTenantDomain(String tenantDomain) throws ApplicationManagementException {
|
public void deleteApplicationDataByTenantDomain(String tenantDomain) throws ApplicationManagementException {
|
||||||
int tenantId;
|
int tenantId;
|
||||||
try{
|
|
||||||
TenantMgtAdminService tenantMgtAdminService = new TenantMgtAdminService();
|
|
||||||
TenantInfoBean tenantInfoBean = tenantMgtAdminService.getTenant(tenantDomain);
|
|
||||||
tenantId = tenantInfoBean.getTenantId();
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
String msg = "Error getting tenant ID from domain: "
|
|
||||||
+ tenantDomain;
|
|
||||||
log.error(msg, e);
|
|
||||||
throw new ApplicationManagementException(msg, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
tenantId = DataHolder.getInstance().getTenantManagerAdminService().getTenantId(tenantDomain);
|
||||||
|
|
||||||
ConnectionManagerUtil.beginDBTransaction();
|
ConnectionManagerUtil.beginDBTransaction();
|
||||||
|
|
||||||
vppApplicationDAO.deleteAssociationByTenant(tenantId);
|
vppApplicationDAO.deleteAssociationByTenant(tenantId);
|
||||||
@ -4493,40 +4475,54 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
spApplicationDAO.deleteSPApplicationMappingByTenant(tenantId);
|
spApplicationDAO.deleteSPApplicationMappingByTenant(tenantId);
|
||||||
spApplicationDAO.deleteIdentityServerByTenant(tenantId);
|
spApplicationDAO.deleteIdentityServerByTenant(tenantId);
|
||||||
applicationDAO.deleteApplicationsByTenant(tenantId);
|
applicationDAO.deleteApplicationsByTenant(tenantId);
|
||||||
APIUtil.getApplicationStorageManager().deleteAppFolderOfTenant(tenantId);
|
|
||||||
|
|
||||||
ConnectionManagerUtil.commitDBTransaction();
|
ConnectionManagerUtil.commitDBTransaction();
|
||||||
} catch (DBConnectionException e) {
|
} catch (DBConnectionException e) {
|
||||||
String msg = "Error occurred while observing the database connection to delete applications for tenant with ID: "
|
String msg = "Error occurred while observing the database connection to delete applications for tenant with " +
|
||||||
+ tenantId;
|
"domain: " + tenantDomain;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (ApplicationManagementDAOException e) {
|
} catch (ApplicationManagementDAOException e) {
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
ConnectionManagerUtil.rollbackDBTransaction();
|
||||||
String msg = "Database access error is occurred when getting applications for tenant with ID: " + tenantId;
|
String msg = "Database access error is occurred when getting applications for tenant with domain: "
|
||||||
|
+ tenantDomain;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (LifeCycleManagementDAOException e) {
|
} catch (LifeCycleManagementDAOException e) {
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
ConnectionManagerUtil.rollbackDBTransaction();
|
||||||
String msg = "Error occurred while deleting life-cycle state data of application releases of the tenant"
|
String msg = "Error occurred while deleting life-cycle state data of application releases of the tenant"
|
||||||
+ " of ID: " + tenantId ;
|
+ " of domain: " + tenantDomain ;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (ReviewManagementDAOException e) {
|
} catch (ReviewManagementDAOException e) {
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
ConnectionManagerUtil.rollbackDBTransaction();
|
||||||
String msg = "Error occurred while deleting reviews of application releases of the applications"
|
String msg = "Error occurred while deleting reviews of application releases of the applications"
|
||||||
+ " of tenant ID: " + tenantId ;
|
+ " of tenant of domain: " + tenantDomain ;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
} catch (ApplicationStorageManagementException e) {
|
} catch (Exception e) {
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
String msg = "Error getting tenant ID from domain: "
|
||||||
String msg = "Error occurred while deleting App folder of tenant"
|
+ tenantDomain;
|
||||||
+ " of tenant ID: " + tenantId ;
|
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
} finally {
|
|
||||||
ConnectionManagerUtil.closeDBConnection();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteApplicationArtifactsByTenantDomain(String tenantDomain) throws ApplicationManagementException {
|
||||||
|
int tenantId;
|
||||||
|
try {
|
||||||
|
tenantId = DataHolder.getInstance().getTenantManagerAdminService().getTenantId(tenantDomain);
|
||||||
|
DataHolder.getInstance().getApplicationStorageManager().deleteAppFolderOfTenant(tenantId);
|
||||||
|
} catch (ApplicationStorageManagementException e) {
|
||||||
|
String msg = "Error deleting app artifacts of tenant of domain: " + tenantDomain ;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (TenantMgtException e) {
|
||||||
|
String msg = "Error getting tenant ID from domain: "
|
||||||
|
+ tenantDomain + " when trying to delete application artifacts of tenant";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,9 @@ import io.entgra.device.mgt.core.application.mgt.core.impl.FileTransferServiceIm
|
|||||||
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.task.ScheduledAppSubscriptionTaskManager;
|
import io.entgra.device.mgt.core.application.mgt.core.task.ScheduledAppSubscriptionTaskManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.util.ApplicationManagementUtil;
|
import io.entgra.device.mgt.core.application.mgt.core.util.ApplicationManagementUtil;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerAdminService;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
@ -71,6 +73,12 @@ import java.util.List;
|
|||||||
* policy="dynamic"
|
* policy="dynamic"
|
||||||
* bind="setTaskService"
|
* bind="setTaskService"
|
||||||
* unbind="unsetTaskService"
|
* unbind="unsetTaskService"
|
||||||
|
* @scr.reference name="io.entgra.device.mgt.core.tenant.manager"
|
||||||
|
* interface="io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerAdminService"
|
||||||
|
* cardinality="0..1"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setTenantManagementAdminService"
|
||||||
|
* unbind="unsetTenantManagementAdminService"
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class ApplicationManagementServiceComponent {
|
public class ApplicationManagementServiceComponent {
|
||||||
@ -196,4 +204,20 @@ public class ApplicationManagementServiceComponent {
|
|||||||
}
|
}
|
||||||
DataHolder.getInstance().setTaskService(null);
|
DataHolder.getInstance().setTaskService(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
protected void setTenantManagementAdminService(TenantManagerAdminService tenantManagerAdminService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting Tenant management admin Service");
|
||||||
|
}
|
||||||
|
DataHolder.getInstance().setTenantManagerAdminService(tenantManagerAdminService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
protected void unsetTenantManagementAdminService(TenantManagerAdminService tenantManagerAdminService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Un setting Tenant management admin service");
|
||||||
|
}
|
||||||
|
DataHolder.getInstance().setTenantManagerAdminService(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,8 @@ import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionMan
|
|||||||
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerAdminService;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.wso2.carbon.ntask.core.service.TaskService;
|
import org.wso2.carbon.ntask.core.service.TaskService;
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
|
||||||
@ -57,6 +59,7 @@ public class DataHolder {
|
|||||||
|
|
||||||
private TaskService taskService;
|
private TaskService taskService;
|
||||||
private FileTransferService fileTransferService;
|
private FileTransferService fileTransferService;
|
||||||
|
private TenantManagerAdminService tenantManagerAdminService;
|
||||||
|
|
||||||
private static final DataHolder applicationMgtDataHolder = new DataHolder();
|
private static final DataHolder applicationMgtDataHolder = new DataHolder();
|
||||||
|
|
||||||
@ -163,4 +166,12 @@ public class DataHolder {
|
|||||||
public void setFileTransferService(FileTransferService fileTransferService) {
|
public void setFileTransferService(FileTransferService fileTransferService) {
|
||||||
this.fileTransferService = fileTransferService;
|
this.fileTransferService = fileTransferService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TenantManagerAdminService getTenantManagerAdminService() {
|
||||||
|
return tenantManagerAdminService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTenantManagerAdminService(TenantManagerAdminService tenantManagerAdminService) {
|
||||||
|
this.tenantManagerAdminService = tenantManagerAdminService;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -298,8 +298,13 @@ public interface UserManagementAdminService {
|
|||||||
name = "tenantDomain",
|
name = "tenantDomain",
|
||||||
value = "The domain of the tenant to be deleted.",
|
value = "The domain of the tenant to be deleted.",
|
||||||
required = true)
|
required = true)
|
||||||
|
|
||||||
@PathParam("tenantDomain")
|
@PathParam("tenantDomain")
|
||||||
String tenantDomain);
|
String tenantDomain,
|
||||||
|
@ApiParam(
|
||||||
|
name = "deleteAppArtifacts",
|
||||||
|
value = "Flag to indicate whether to delete application artifacts.",
|
||||||
|
required = false)
|
||||||
|
@QueryParam("deleteAppArtifacts")
|
||||||
|
@DefaultValue("false")
|
||||||
|
boolean deleteAppArtifacts);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ package io.entgra.device.mgt.core.device.mgt.api.jaxrs.service.impl.admin;
|
|||||||
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.exception.TenantMgtException;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.DeviceIdentifier;
|
import io.entgra.device.mgt.core.device.mgt.common.DeviceIdentifier;
|
||||||
@ -29,9 +30,6 @@ import io.entgra.device.mgt.core.device.mgt.api.jaxrs.util.CredentialManagementR
|
|||||||
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.util.DeviceMgtAPIUtils;
|
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
import org.wso2.carbon.base.MultitenantConstants;
|
import org.wso2.carbon.base.MultitenantConstants;
|
||||||
import org.wso2.carbon.context.CarbonContext;
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
import org.wso2.carbon.stratos.common.exception.StratosException;
|
|
||||||
import org.wso2.carbon.tenant.mgt.services.TenantMgtAdminService;
|
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
|
||||||
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
@ -91,7 +89,7 @@ public class UserManagementAdminServiceImpl implements UserManagementAdminServic
|
|||||||
@DELETE
|
@DELETE
|
||||||
@Path("/domain/{tenantDomain}")
|
@Path("/domain/{tenantDomain}")
|
||||||
@Override
|
@Override
|
||||||
public Response deleteTenantByDomain(@PathParam("tenantDomain") String tenantDomain) {
|
public Response deleteTenantByDomain(@PathParam("tenantDomain") String tenantDomain, @QueryParam("deleteAppArtifacts") boolean deleteAppArtifacts) {
|
||||||
try {
|
try {
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
if (tenantId != MultitenantConstants.SUPER_TENANT_ID){
|
if (tenantId != MultitenantConstants.SUPER_TENANT_ID){
|
||||||
@ -99,15 +97,20 @@ public class UserManagementAdminServiceImpl implements UserManagementAdminServic
|
|||||||
log.error(msg);
|
log.error(msg);
|
||||||
return Response.status(Response.Status.UNAUTHORIZED).entity(msg).build();
|
return Response.status(Response.Status.UNAUTHORIZED).entity(msg).build();
|
||||||
} else {
|
} else {
|
||||||
|
if (deleteAppArtifacts) {
|
||||||
|
DeviceMgtAPIUtils.getApplicationManager().deleteApplicationArtifactsByTenantDomain(tenantDomain);
|
||||||
|
}
|
||||||
DeviceMgtAPIUtils.getApplicationManager().deleteApplicationDataByTenantDomain(tenantDomain);
|
DeviceMgtAPIUtils.getApplicationManager().deleteApplicationDataByTenantDomain(tenantDomain);
|
||||||
DeviceMgtAPIUtils.getDeviceManagementService().deleteDeviceDataByTenantDomain(tenantDomain);
|
DeviceMgtAPIUtils.getDeviceManagementService().deleteDeviceDataByTenantDomain(tenantDomain);
|
||||||
TenantMgtAdminService tenantMgtAdminService = new TenantMgtAdminService();
|
DeviceMgtAPIUtils.getTenantManagerAdminService().deleteTenant(tenantDomain);
|
||||||
tenantMgtAdminService.deleteTenant(tenantDomain);
|
|
||||||
String msg = "Tenant Deletion process has been initiated for tenant:" + tenantDomain;
|
String msg = "Tenant Deletion process has been initiated for tenant:" + tenantDomain;
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug(msg);
|
||||||
|
}
|
||||||
return Response.status(Response.Status.OK).entity(msg).build();
|
return Response.status(Response.Status.OK).entity(msg).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (StratosException | UserStoreException e) {
|
} catch (TenantMgtException e) {
|
||||||
String msg = "Error deleting tenant: " + tenantDomain;
|
String msg = "Error deleting tenant: " + tenantDomain;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionMan
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.authorization.GroupAccessAuthorizationService;
|
import io.entgra.device.mgt.core.device.mgt.common.authorization.GroupAccessAuthorizationService;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.DeviceStatusManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.DeviceStatusManagementService;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.permission.mgt.PermissionManagerServiceImpl;
|
import io.entgra.device.mgt.core.device.mgt.core.permission.mgt.PermissionManagerServiceImpl;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerAdminService;
|
||||||
import org.apache.axis2.AxisFault;
|
import org.apache.axis2.AxisFault;
|
||||||
import org.apache.axis2.client.Options;
|
import org.apache.axis2.client.Options;
|
||||||
import org.apache.axis2.java.security.SSLProtocolSocketFactory;
|
import org.apache.axis2.java.security.SSLProtocolSocketFactory;
|
||||||
@ -163,6 +164,7 @@ public class DeviceMgtAPIUtils {
|
|||||||
private static volatile ApplicationManager applicationManager;
|
private static volatile ApplicationManager applicationManager;
|
||||||
|
|
||||||
private static volatile APIPublisherService apiPublisher;
|
private static volatile APIPublisherService apiPublisher;
|
||||||
|
private static volatile TenantManagerAdminService tenantManagerAdminService;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
String keyStorePassword = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Password");
|
String keyStorePassword = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Password");
|
||||||
@ -1243,4 +1245,21 @@ public class DeviceMgtAPIUtils {
|
|||||||
}
|
}
|
||||||
return isPermitted;
|
return isPermitted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static TenantManagerAdminService getTenantManagerAdminService(){
|
||||||
|
if(tenantManagerAdminService == null) {
|
||||||
|
synchronized (DeviceMgtAPIUtils.class) {
|
||||||
|
if (tenantManagerAdminService == null) {
|
||||||
|
tenantManagerAdminService = (TenantManagerAdminService) PrivilegedCarbonContext.getThreadLocalCarbonContext().
|
||||||
|
getOSGiService(TenantManagerAdminService.class, null);
|
||||||
|
if (tenantManagerAdminService == null) {
|
||||||
|
String msg = "Tenant Manager Admin Service is null";
|
||||||
|
log.error(msg);
|
||||||
|
throw new IllegalStateException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tenantManagerAdminService;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2024, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.device.mgt.core.tenant.mgt.common.spi;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.exception.TenantMgtException;
|
||||||
|
|
||||||
|
public interface TenantManagerAdminService {
|
||||||
|
|
||||||
|
void deleteTenant(String tenantDomain) throws TenantMgtException;
|
||||||
|
int getTenantId(String tenantDomain) throws TenantMgtException;
|
||||||
|
}
|
||||||
@ -60,6 +60,7 @@
|
|||||||
org.wso2.carbon.stratos.common.beans,
|
org.wso2.carbon.stratos.common.beans,
|
||||||
org.wso2.carbon.stratos.common.exception,
|
org.wso2.carbon.stratos.common.exception,
|
||||||
org.wso2.carbon.stratos.common.listeners,
|
org.wso2.carbon.stratos.common.listeners,
|
||||||
|
org.wso2.carbon.tenant.mgt.services,
|
||||||
io.entgra.device.mgt.core.device.mgt.common.metadata.mgt,
|
io.entgra.device.mgt.core.device.mgt.common.metadata.mgt,
|
||||||
io.entgra.device.mgt.core.device.mgt.common.exceptions,
|
io.entgra.device.mgt.core.device.mgt.common.exceptions,
|
||||||
io.entgra.device.mgt.core.device.mgt.common.permission.mgt,
|
io.entgra.device.mgt.core.device.mgt.common.permission.mgt,
|
||||||
|
|||||||
@ -57,4 +57,5 @@ public interface TenantManager {
|
|||||||
* @throws TenantMgtException Throws when deleting Tenant related device data
|
* @throws TenantMgtException Throws when deleting Tenant related device data
|
||||||
*/
|
*/
|
||||||
void deleteTenantDeviceData(int tenantId) throws TenantMgtException;
|
void deleteTenantDeviceData(int tenantId) throws TenantMgtException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2024, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.device.mgt.core.tenant.mgt.core.impl;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.exception.TenantMgtException;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerAdminService;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.stratos.common.exception.StratosException;
|
||||||
|
import org.wso2.carbon.tenant.mgt.services.TenantMgtAdminService;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
|
||||||
|
|
||||||
|
public class TenantManagerAdminServiceImpl implements TenantManagerAdminService {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(TenantManagerAdminServiceImpl.class);
|
||||||
|
|
||||||
|
private static final TenantMgtAdminService tenantMgtAdminService = new TenantMgtAdminService();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTenant(String tenantDomain) throws TenantMgtException {
|
||||||
|
try {
|
||||||
|
tenantMgtAdminService.deleteTenant(tenantDomain);
|
||||||
|
} catch (StratosException | UserStoreException e) {
|
||||||
|
String msg = "Error occurred while deleting tenant of domain: " + tenantDomain;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new TenantMgtException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTenantId(String tenantDomain) throws TenantMgtException {
|
||||||
|
try {
|
||||||
|
return tenantMgtAdminService.getTenant(tenantDomain).getTenantId();
|
||||||
|
} catch (Exception e){
|
||||||
|
String msg = "Error occurred while getting tenant ID of domain: " + tenantDomain;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new TenantMgtException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -20,8 +20,10 @@ package io.entgra.device.mgt.core.tenant.mgt.core.internal;
|
|||||||
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationManager;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.DeviceStatusManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.DeviceStatusManagementService;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.DeviceStatusManagementServiceImpl;
|
import io.entgra.device.mgt.core.device.mgt.core.metadata.mgt.DeviceStatusManagementServiceImpl;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerAdminService;
|
||||||
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerService;
|
import io.entgra.device.mgt.core.tenant.mgt.common.spi.TenantManagerService;
|
||||||
import io.entgra.device.mgt.core.tenant.mgt.core.TenantManager;
|
import io.entgra.device.mgt.core.tenant.mgt.core.TenantManager;
|
||||||
|
import io.entgra.device.mgt.core.tenant.mgt.core.impl.TenantManagerAdminServiceImpl;
|
||||||
import io.entgra.device.mgt.core.tenant.mgt.core.impl.TenantManagerImpl;
|
import io.entgra.device.mgt.core.tenant.mgt.core.impl.TenantManagerImpl;
|
||||||
import io.entgra.device.mgt.core.tenant.mgt.core.impl.TenantManagerServiceImpl;
|
import io.entgra.device.mgt.core.tenant.mgt.core.impl.TenantManagerServiceImpl;
|
||||||
import io.entgra.device.mgt.core.tenant.mgt.core.listener.DeviceMgtTenantListener;
|
import io.entgra.device.mgt.core.tenant.mgt.core.listener.DeviceMgtTenantListener;
|
||||||
@ -59,11 +61,14 @@ public class TenantMgtServiceComponent {
|
|||||||
try {
|
try {
|
||||||
TenantManagerService tenantManagerService = new TenantManagerServiceImpl();
|
TenantManagerService tenantManagerService = new TenantManagerServiceImpl();
|
||||||
componentContext.getBundleContext().
|
componentContext.getBundleContext().
|
||||||
registerService(TenantManagerServiceImpl.class.getName(), tenantManagerService, null);
|
registerService(TenantManagerService.class.getName(), tenantManagerService, null);
|
||||||
|
TenantManagerAdminService tenantManagerAdminService = new TenantManagerAdminServiceImpl();
|
||||||
|
componentContext.getBundleContext().
|
||||||
|
registerService(TenantManagerAdminService.class.getName(), tenantManagerAdminService, null);
|
||||||
TenantManager tenantManager = new TenantManagerImpl();
|
TenantManager tenantManager = new TenantManagerImpl();
|
||||||
TenantMgtDataHolder.getInstance().setTenantManager(tenantManager);
|
TenantMgtDataHolder.getInstance().setTenantManager(tenantManager);
|
||||||
WhiteLabelManagementService whiteLabelManagementService = new WhiteLabelManagementServiceImpl();
|
WhiteLabelManagementService whiteLabelManagementService = new WhiteLabelManagementServiceImpl();
|
||||||
componentContext.getBundleContext().registerService(WhiteLabelManagementServiceImpl.class.getName(),
|
componentContext.getBundleContext().registerService(WhiteLabelManagementService.class.getName(),
|
||||||
whiteLabelManagementService, null);
|
whiteLabelManagementService, null);
|
||||||
TenantMgtDataHolder.getInstance().setWhiteLabelManagementService(whiteLabelManagementService);
|
TenantMgtDataHolder.getInstance().setWhiteLabelManagementService(whiteLabelManagementService);
|
||||||
DeviceStatusManagementService deviceStatusManagementService = new DeviceStatusManagementServiceImpl();
|
DeviceStatusManagementService deviceStatusManagementService = new DeviceStatusManagementServiceImpl();
|
||||||
|
|||||||
@ -88,13 +88,5 @@ public class DeviceMgtTenantListener implements TenantMgtListener {
|
|||||||
@Override
|
@Override
|
||||||
public void onPreDelete(int i) throws StratosException {
|
public void onPreDelete(int i) throws StratosException {
|
||||||
// Any work to be performed before a tenant is deleted
|
// Any work to be performed before a tenant is deleted
|
||||||
TenantManager tenantManager = TenantMgtDataHolder.getInstance().getTenantManager();
|
|
||||||
try{
|
|
||||||
tenantManager.deleteTenantDeviceData(i);
|
|
||||||
tenantManager.deleteTenantApplicationData(i);
|
|
||||||
} catch (TenantMgtException e) {
|
|
||||||
String msg = "Error occurred while deleting tenant data";
|
|
||||||
log.error(msg, e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user