diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java index 3fd8b3290c..b3f4b850a6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/impl/DeviceDetailsRetrieverTask.java @@ -37,6 +37,7 @@ package org.wso2.carbon.device.mgt.core.task.impl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; @@ -55,8 +56,6 @@ public class DeviceDetailsRetrieverTask implements Task { private static Log log = LogFactory.getLog(DeviceDetailsRetrieverTask.class); private String deviceType; - private boolean executeForTenants = false; - private final String IS_CLOUD = "is.cloud"; private DeviceManagementProviderService deviceManagementProviderService; @Override @@ -76,27 +75,7 @@ public class DeviceDetailsRetrieverTask implements Task { .getDeviceMonitoringConfig(deviceType); StartupOperationConfig startupOperationConfig = deviceManagementProviderService .getStartupOperationConfig(deviceType); - - if (System.getProperty(IS_CLOUD) != null && Boolean.parseBoolean(System.getProperty(IS_CLOUD))) { - executeForTenants = true; - } - if (executeForTenants) { - this.executeForAllTenants(operationMonitoringTaskConfig, startupOperationConfig); - } else { - if (log.isDebugEnabled()) { - log.debug("Device details retrieving task started to run."); - } - DeviceTaskManager deviceTaskManager = new DeviceTaskManagerImpl(deviceType, operationMonitoringTaskConfig, - startupOperationConfig); - //pass the configurations also from here, monitoring tasks - try { - if (deviceManagementProviderService.isDeviceMonitoringEnabled(deviceType)) { - deviceTaskManager.addOperations(); - } - } catch (DeviceMgtTaskException e) { - log.error("Error occurred while trying to add the operations to device to retrieve device details.", e); - } - } + this.executeForAllTenants(operationMonitoringTaskConfig, startupOperationConfig); } private void executeForAllTenants(OperationMonitoringTaskConfig operationMonitoringTaskConfig, @@ -111,36 +90,47 @@ public class DeviceDetailsRetrieverTask implements Task { if (log.isDebugEnabled()) { log.debug("Task is running for " + tenants.size() + " tenants and the device type is " + deviceType); } - for (Integer tenant : tenants) { - String tenantDomain = DeviceManagementDataHolder.getInstance(). - getRealmService().getTenantManager().getDomain(tenant); + if (MultitenantConstants.SUPER_TENANT_ID == tenant) { + this.executeTask(operationMonitoringTaskConfig, startupOperationConfig); + continue; + } try { PrivilegedCarbonContext.startTenantFlow(); - PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain); - PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant); - DeviceTaskManager deviceTaskManager = new DeviceTaskManagerImpl(deviceType, - operationMonitoringTaskConfig, - startupOperationConfig); - //pass the configurations also from here, monitoring tasks - try { - if (deviceManagementProviderService.isDeviceMonitoringEnabled(deviceType)) { - deviceTaskManager.addOperations(); - } - } catch (DeviceMgtTaskException e) { - log.error("Error occurred while trying to add the operations to " + - "device to retrieve device details.", e); - } + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant, true); + this.executeTask(operationMonitoringTaskConfig, startupOperationConfig); } finally { PrivilegedCarbonContext.endTenantFlow(); } } - } catch (UserStoreException e) { - log.error("Error occurred while trying to get the available tenants", e); } catch (DeviceManagementException e) { log.error("Error occurred while trying to get the available tenants " + "from device manager provider service.", e); } } + /** + * Execute device detail retriever task + * @param operationMonitoringTaskConfig which contains monitoring operations and related details + * @param startupOperationConfig which contains startup operations and realted details + */ + private void executeTask(OperationMonitoringTaskConfig operationMonitoringTaskConfig, + StartupOperationConfig startupOperationConfig) { + DeviceTaskManager deviceTaskManager = new DeviceTaskManagerImpl(deviceType, + operationMonitoringTaskConfig, + startupOperationConfig); + if (log.isDebugEnabled()) { + log.debug("Device details retrieving task started to run."); + } + //pass the configurations also from here, monitoring tasks + try { + if (deviceManagementProviderService.isDeviceMonitoringEnabled(deviceType)) { + deviceTaskManager.addOperations(); + } + } catch (DeviceMgtTaskException e) { + log.error("Error occurred while trying to add the operations to " + + "device to retrieve device details.", e); + } + } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManagerTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManagerTest.java index eb6e6a4d2b..5ee04dc92d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManagerTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManagerTest.java @@ -165,7 +165,6 @@ public class DeviceTaskManagerTest extends BaseDeviceManagementTest { description = "Testing device detail retriever task execution for tenants") public void testDeviceDetailRetrieverTaskExecuteForAllTenants() throws OperationManagementException { DeviceDetailsRetrieverTask deviceDetailsRetrieverTask = new DeviceDetailsRetrieverTask(); - System.setProperty("is.cloud", "true"); Map map = new HashMap<>(); map.put("DEVICE_TYPE", TestDataHolder.TEST_DEVICE_TYPE); deviceDetailsRetrieverTask.setProperties(map); diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java index d70c06858b..f75995179b 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/task/MonitoringTask.java @@ -21,6 +21,7 @@ package org.wso2.carbon.policy.mgt.core.task; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; @@ -43,9 +44,6 @@ public class MonitoringTask implements Task { private static final Log log = LogFactory.getLog(MonitoringTask.class); Map properties; - private boolean executeForTenants = false; - private final String IS_CLOUD = "is.cloud"; - @Override public void setProperties(Map map) { @@ -62,14 +60,8 @@ public class MonitoringTask implements Task { if (log.isDebugEnabled()) { log.debug("Monitoring task started to run."); } - if (System.getProperty(IS_CLOUD) != null && Boolean.parseBoolean(System.getProperty(IS_CLOUD))) { - executeForTenants = true; - } - if (executeForTenants) { - this.executeforAllTenants(); - } else { - this.executeTask(); - } + + this.executeforAllTenants(); } /** @@ -95,19 +87,18 @@ public class MonitoringTask implements Task { DeviceManagementProviderService deviceManagementService = new DeviceManagementProviderServiceImpl(); List tenants = deviceManagementService.getDeviceEnrolledTenants(); for (Integer tenant : tenants) { - String tenantDomain = PolicyManagementDataHolder.getInstance(). - getRealmService().getTenantManager().getDomain(tenant); + if (MultitenantConstants.SUPER_TENANT_ID == tenant) { + this.executeTask(); + continue; + } try { PrivilegedCarbonContext.startTenantFlow(); - PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain); - PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenant, true); this.executeTask(); } finally { PrivilegedCarbonContext.endTenantFlow(); } } - } catch (UserStoreException e) { - log.error("Error occurred while trying to get the available tenants", e); } catch (DeviceManagementException e) { log.error("Error occurred while trying to get the available tenants from device manager service ", e); }