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;
}
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();
}
Aggregations