Search in sources :

Example 11 with DiscoveredObjectTaskScheduler

use of com.emc.storageos.api.service.impl.resource.utils.DiscoveredObjectTaskScheduler in project coprhd-controller by CoprHD.

the class VcenterService method doDiscoverVcenter.

/**
 * Vcenter Discovery
 *
 * @param vcenter the Vcenter to be discovered.
 *            provided, a new taskId is generated.
 * @return the task used to track the discovery job
 */
protected TaskResourceRep doDiscoverVcenter(Vcenter vcenter) {
    ComputeSystemController controller = getController(ComputeSystemController.class, "vcenter");
    DiscoveredObjectTaskScheduler scheduler = new DiscoveredObjectTaskScheduler(_dbClient, new DiscoverJobExec(controller));
    String taskId = UUID.randomUUID().toString();
    ArrayList<AsyncTask> tasks = new ArrayList<AsyncTask>(1);
    tasks.add(new AsyncTask(Vcenter.class, vcenter.getId(), taskId));
    TaskList taskList = scheduler.scheduleAsyncTasks(tasks);
    TaskResourceRep taskResourceRep = taskList.getTaskList().iterator().next();
    updateTaskTenant(taskResourceRep);
    return taskResourceRep;
}
Also used : MapVcenter(com.emc.storageos.api.mapper.functions.MapVcenter) ComputeSystemController(com.emc.storageos.computesystemcontroller.ComputeSystemController) AsyncTask(com.emc.storageos.volumecontroller.AsyncTask) ArrayList(java.util.ArrayList) DiscoveredObjectTaskScheduler(com.emc.storageos.api.service.impl.resource.utils.DiscoveredObjectTaskScheduler)

Example 12 with DiscoveredObjectTaskScheduler

use of com.emc.storageos.api.service.impl.resource.utils.DiscoveredObjectTaskScheduler in project coprhd-controller by CoprHD.

the class StorageProviderService method registerStorageProvider.

/**
 * Register Storage Provider
 *
 * @param param
 * @brief Define a new storage provider
 * @return TaskResponse
 * @throws ControllerException
 */
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@CheckPermission(roles = { Role.SYSTEM_ADMIN, Role.RESTRICTED_SYSTEM_ADMIN })
public TaskResourceRep registerStorageProvider(StorageProviderCreateParam param) throws ControllerException {
    ArgValidator.checkFieldNotEmpty(param.getName(), "name");
    checkForDuplicateName(param.getName(), StorageProvider.class);
    ArgValidator.checkFieldNotEmpty(param.getIpAddress(), "ip_address");
    ArgValidator.checkFieldNotNull(param.getPortNumber(), "port_number");
    ArgValidator.checkFieldNotEmpty(param.getUserName(), "user_name");
    ArgValidator.checkFieldNotEmpty(param.getPassword(), "password");
    ArgValidator.checkFieldRange(param.getPortNumber(), 1, 65535, "port_number");
    if (storageDriverManager == null || !storageDriverManager.isDriverManaged(param.getInterfaceType())) {
        // check this only for providers which are not managed by drivers
        ArgValidator.checkFieldValueFromEnum(param.getInterfaceType(), "interface_type", StorageProvider.InterfaceType.class);
    }
    // Check for duplicate storage provider using host IP/FQDN
    checkForDuplicateStorageProvider(param);
    // Set the SSL parameter
    Boolean useSSL = param.getUseSSL();
    if (useSSL == null) {
        useSSL = StorageProviderCreateParam.USE_SSL_DEFAULT;
    }
    StorageProvider provider = new StorageProvider();
    provider.setId(URIUtil.createId(StorageProvider.class));
    provider.setLabel(param.getName());
    provider.setIPAddress(param.getIpAddress());
    provider.setPortNumber(param.getPortNumber());
    provider.setUserName(param.getUserName());
    provider.setPassword(param.getPassword());
    provider.setUseSSL(useSSL);
    provider.setInterfaceType(param.getInterfaceType());
    provider.setRegistrationStatus(RegistrationStatus.REGISTERED.toString());
    provider.setConnectionStatus(ConnectionStatus.INITIALIZING.name());
    provider.setSecondaryUsername(param.getSecondaryUsername());
    provider.setSecondaryPassword(param.getSecondaryPassword());
    provider.setSecondaryURL(param.getSecondaryURL());
    provider.setElementManagerURL(param.getElementManagerURL());
    if (param.getSioCLI() != null) {
        // TODO: Validate the input?
        provider.addKey(StorageProvider.GlobalKeys.SIO_CLI.name(), param.getSioCLI());
    }
    if (StorageProvider.InterfaceType.ibmxiv.name().equalsIgnoreCase(provider.getInterfaceType())) {
        provider.setManufacturer("IBM");
        // For XIV, Secondary manager URL would hold HSM URL and it is expected that these values are provided during create
        verifySecondaryParams(param.getSecondaryURL());
        if (null != param.getSecondaryUsername()) {
            ArgValidator.checkFieldNotEmpty(param.getSecondaryUsername(), "secondary_username");
        }
        if (null != param.getSecondaryPassword()) {
            ArgValidator.checkFieldNotEmpty(param.getSecondaryPassword(), "secondary_password");
        }
    }
    _dbClient.createObject(provider);
    auditOp(OperationTypeEnum.REGISTER_STORAGEPROVIDER, true, null, provider.getLabel(), provider.getId().toString(), provider.getIPAddress(), provider.getPortNumber(), provider.getUserName(), provider.getInterfaceType());
    ArrayList<AsyncTask> tasks = new ArrayList<AsyncTask>(1);
    String taskId = UUID.randomUUID().toString();
    tasks.add(new AsyncTask(StorageProvider.class, provider.getId(), taskId));
    BlockController controller = getController(BlockController.class, provider.getInterfaceType());
    log.debug("controller.getClass().getName() :{}", controller.getClass().getName());
    log.debug("controller.getClass().getSimpleName() :{}", controller.getClass().getSimpleName());
    /**
     * Creates MonitoringJob token for vnxblock/vmax, hds, cinder and IBM XIV device on zooKeeper queue
     */
    // TODO : If all interface types have monitoring impl class added (scaleIO is missing),
    // this check can be removed.
    String interfaceType = provider.getInterfaceType();
    if (StorageProvider.InterfaceType.hicommand.name().equalsIgnoreCase(interfaceType) || StorageProvider.InterfaceType.smis.name().equalsIgnoreCase(interfaceType) || StorageProvider.InterfaceType.cinder.name().equalsIgnoreCase(interfaceType) || StorageProvider.InterfaceType.ibmxiv.name().equalsIgnoreCase(interfaceType)) {
        controller.startMonitoring(new AsyncTask(StorageProvider.class, provider.getId(), taskId), getSystemTypeByInterface(interfaceType));
    }
    DiscoveredObjectTaskScheduler scheduler = new DiscoveredObjectTaskScheduler(_dbClient, new ScanJobExec(controller));
    TaskList taskList = scheduler.scheduleAsyncTasks(tasks);
    return taskList.getTaskList().listIterator().next();
}
Also used : BlockController(com.emc.storageos.volumecontroller.BlockController) TaskList(com.emc.storageos.model.TaskList) AsyncTask(com.emc.storageos.volumecontroller.AsyncTask) ArrayList(java.util.ArrayList) DiscoveredObjectTaskScheduler(com.emc.storageos.api.service.impl.resource.utils.DiscoveredObjectTaskScheduler) MapStorageProvider(com.emc.storageos.api.mapper.functions.MapStorageProvider) StorageProvider(com.emc.storageos.db.client.model.StorageProvider) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces) CheckPermission(com.emc.storageos.security.authorization.CheckPermission)

Aggregations

DiscoveredObjectTaskScheduler (com.emc.storageos.api.service.impl.resource.utils.DiscoveredObjectTaskScheduler)12 AsyncTask (com.emc.storageos.volumecontroller.AsyncTask)12 ArrayList (java.util.ArrayList)12 TaskList (com.emc.storageos.model.TaskList)11 CheckPermission (com.emc.storageos.security.authorization.CheckPermission)7 BlockController (com.emc.storageos.volumecontroller.BlockController)7 Consumes (javax.ws.rs.Consumes)7 Produces (javax.ws.rs.Produces)7 StorageProvider (com.emc.storageos.db.client.model.StorageProvider)6 POST (javax.ws.rs.POST)6 Path (javax.ws.rs.Path)4 MapStorageProvider (com.emc.storageos.api.mapper.functions.MapStorageProvider)3 StorageSystem (com.emc.storageos.db.client.model.StorageSystem)3 ArrayAffinityAsyncTask (com.emc.storageos.volumecontroller.ArrayAffinityAsyncTask)3 URI (java.net.URI)3 ComputeSystemController (com.emc.storageos.computesystemcontroller.ComputeSystemController)2 URIQueryResultList (com.emc.storageos.db.client.constraint.URIQueryResultList)2 MapNetworkSystem (com.emc.storageos.api.mapper.functions.MapNetworkSystem)1 MapProtectionSystem (com.emc.storageos.api.mapper.functions.MapProtectionSystem)1 MapVcenter (com.emc.storageos.api.mapper.functions.MapVcenter)1