Search in sources :

Example 16 with CloudProvider

use of es.bsc.compss.types.CloudProvider in project compss by bsc-wdc.

the class CloudManager method registerCloudProvider.

/**
 * Adds a new Provider to the management
 *
 * @param providerName
 * @param limitOfVMs
 * @param runtimeConnectorClass
 * @param connectorJarPath
 * @param connectorMainClass
 * @param connectorProperties
 *
 * @return
 * @throws es.bsc.compss.connectors.ConnectorException
 */
public CloudProvider registerCloudProvider(String providerName, Integer limitOfVMs, String runtimeConnectorClass, String connectorJarPath, String connectorMainClass, Map<String, String> connectorProperties) throws ConnectorException {
    CloudProvider cp = new CloudProvider(providerName, limitOfVMs, runtimeConnectorClass, connectorJarPath, connectorMainClass, connectorProperties);
    useCloud = true;
    providers.put(cp.getName(), cp);
    return cp;
}
Also used : CloudProvider(es.bsc.compss.types.CloudProvider)

Example 17 with CloudProvider

use of es.bsc.compss.types.CloudProvider in project compss by bsc-wdc.

the class ExternalAdaptationManager method cloudCreation.

private void cloudCreation(String providerName, String typeName, String imageName) {
    if (providerName != null && typeName != null && imageName != null) {
        CloudProvider cp = ResourceManager.getCloudProvider(providerName);
        if (cp != null) {
            CloudImageDescription imageDescription = cp.getImage(imageName);
            CloudInstanceTypeDescription typeDescription = cp.getInstanceType(typeName);
            CloudMethodResourceDescription cmrd = new CloudMethodResourceDescription(typeDescription, imageDescription);
            ResourceCreationRequest rcr = cp.requestResourceCreation(cmrd);
            if (rcr != null) {
                RUNTIME_LOGGER.info(LOG_PREFIX + "Submited external request for creating (" + typeName + ", " + imageName + ") in " + providerName);
                rcr.print(RESOURCES_LOGGER, DEBUG);
                writePipe(resultPipe, ACK);
            } else {
                RUNTIME_LOGGER.error(LOG_PREFIX + "ERROR: Creating resource (" + typeName + ", " + imageName + ") in " + providerName);
                writePipe(resultPipe, "ERROR: Error creating resource(" + typeName + ", " + imageName + ") in " + providerName);
            }
        } else {
            RUNTIME_LOGGER.error(LOG_PREFIX + "ERROR: Provider " + providerName + " not found.");
            writePipe(resultPipe, "ERROR: Provider " + providerName + " not found");
        }
    } else {
        RUNTIME_LOGGER.error(LOG_PREFIX + "ERROR: One of the parameters is incorrect (" + typeName + ", " + imageName + "," + providerName + ")");
        writePipe(resultPipe, "ERROR: One of the parameters is incorrect (" + typeName + ", " + imageName + "," + providerName + ")");
    }
}
Also used : ResourceCreationRequest(es.bsc.compss.types.ResourceCreationRequest) CloudProvider(es.bsc.compss.types.CloudProvider) CloudImageDescription(es.bsc.compss.types.resources.description.CloudImageDescription) CloudInstanceTypeDescription(es.bsc.compss.types.resources.description.CloudInstanceTypeDescription) CloudMethodResourceDescription(es.bsc.compss.types.resources.description.CloudMethodResourceDescription)

Example 18 with CloudProvider

use of es.bsc.compss.types.CloudProvider in project compss by bsc-wdc.

the class ResourceLoader method loadCloudProvider.

private static boolean loadCloudProvider(CloudProviderType cp_project, es.bsc.compss.types.resources.jaxb.CloudProviderType cp_resources) {
    String cpName = cp_project.getName();
    String runtimeConnector = System.getProperty(COMPSsConstants.CONN);
    String connectorJarPath = "";
    String connectorMainClass = "";
    Map<String, String> properties = new HashMap<>();
    /* Add Endpoint information from resources.xml */
    EndpointType endpoint = cp_resources.getEndpoint();
    connectorJarPath = resources.getConnectorJarPath(endpoint);
    connectorMainClass = resources.getConnectorMainClass(endpoint);
    /* Add properties information ****************** */
    properties.put(AbstractConnector.PROP_SERVER, resources.getServer(endpoint));
    properties.put(AbstractConnector.PROP_PORT, resources.getPort(endpoint));
    List<Object> objList = cp_project.getImagesOrInstanceTypesOrLimitOfVMs();
    if (objList != null) {
        for (Object obj : objList) {
            if (obj instanceof CloudPropertiesType) {
                CloudPropertiesType cloud_props = (CloudPropertiesType) obj;
                for (CloudPropertyType prop : cloud_props.getProperty()) {
                    // TODO CloudProperties have context, name, value. Consider context (it is ignored now)
                    properties.put(prop.getName(), prop.getValue());
                }
            }
        }
    }
    // Add application name property for some connectors (i.e. docker, vmm)
    String appName = System.getProperty(COMPSsConstants.APP_NAME);
    appName = appName.toLowerCase();
    appName = appName.replace('.', '-');
    properties.put(AbstractConnector.PROP_APP_NAME, appName);
    /* Add images/instances information ******************** */
    int limitOfVMs = -1;
    // Seconds
    int maxCreationTime = -1;
    LinkedList<CloudImageDescription> images = new LinkedList<>();
    LinkedList<CloudInstanceTypeDescription> instanceTypes = new LinkedList<>();
    objList = cp_project.getImagesOrInstanceTypesOrLimitOfVMs();
    if (objList != null) {
        for (Object obj : objList) {
            if (obj instanceof ImagesType) {
                // Load images
                ImagesType imageList = (ImagesType) obj;
                for (ImageType im_project : imageList.getImage()) {
                    // Try to create image
                    es.bsc.compss.types.resources.jaxb.ImageType im_resources = resources.getImage(cp_resources, im_project.getName());
                    CloudImageDescription cid = createImage(im_project, im_resources, properties);
                    // Add to images list
                    if (cid != null) {
                        images.add(cid);
                        // Update max creation time
                        int localCT = cid.getCreationTime();
                        if (localCT > maxCreationTime) {
                            maxCreationTime = localCT;
                        }
                    }
                }
            } else if (obj instanceof InstanceTypesType) {
                // Load images
                InstanceTypesType instancesList = (InstanceTypesType) obj;
                for (InstanceTypeType instance_project : instancesList.getInstanceType()) {
                    // Try to create instance
                    String instanceName = instance_project.getName();
                    es.bsc.compss.types.resources.jaxb.InstanceTypeType instance_resources = resources.getInstance(cp_resources, instanceName);
                    if (instance_resources != null) {
                        CloudInstanceTypeDescription cmrd = createInstance(instance_resources);
                        // Add to instance list
                        if (cmrd != null) {
                            instanceTypes.add(cmrd);
                        }
                    } else {
                        ErrorManager.warn("Instance " + instanceName + " not defined in resources.xml. Skipping");
                    }
                }
            } else if (obj instanceof Integer) {
                // Limit Of VMs
                limitOfVMs = (Integer) obj;
            }
        }
    }
    if (maxCreationTime > 0) {
        properties.put(AbstractConnector.PROP_MAX_VM_CREATION_TIME, Integer.toString(maxCreationTime));
    }
    // Add Cloud Provider to CloudManager *****************************************/
    CloudProvider provider;
    try {
        provider = ResourceManager.registerCloudProvider(cpName, limitOfVMs, runtimeConnector, connectorJarPath, connectorMainClass, properties);
    } catch (Exception e) {
        ErrorManager.warn("Exception loading CloudProvider " + cpName, e);
        return false;
    }
    for (CloudImageDescription cid : images) {
        provider.addCloudImage(cid);
    }
    for (CloudInstanceTypeDescription instance : instanceTypes) {
        provider.addInstanceType(instance);
    }
    /* If we reach this point CP is loaded **************************************** */
    return true;
}
Also used : HashMap(java.util.HashMap) es.bsc.compss.types.project.jaxb(es.bsc.compss.types.project.jaxb) CloudProvider(es.bsc.compss.types.CloudProvider) EndpointType(es.bsc.compss.types.resources.jaxb.EndpointType) CloudImageDescription(es.bsc.compss.types.resources.description.CloudImageDescription) LinkedList(java.util.LinkedList) NoResourceAvailableException(es.bsc.compss.exceptions.NoResourceAvailableException) ProjectFileValidationException(es.bsc.compss.types.project.exceptions.ProjectFileValidationException) ResourcesFileValidationException(es.bsc.compss.types.resources.exceptions.ResourcesFileValidationException) JAXBException(javax.xml.bind.JAXBException) ConstructConfigurationException(es.bsc.compss.exceptions.ConstructConfigurationException) SAXException(org.xml.sax.SAXException) CloudInstanceTypeDescription(es.bsc.compss.types.resources.description.CloudInstanceTypeDescription)

Example 19 with CloudProvider

use of es.bsc.compss.types.CloudProvider in project compss by bsc-wdc.

the class ResourceManager method increasedCloudWorker.

/**
 * Increases the capabilities of a given cloud worker
 *
 * @param origin
 * @param worker
 * @param extension
 */
public static void increasedCloudWorker(ResourceCreationRequest origin, CloudMethodWorker worker, CloudMethodResourceDescription extension) {
    synchronized (pool) {
        CloudProvider cloudProvider = origin.getProvider();
        cloudProvider.confirmedCreation(origin, worker, extension);
        int[] maxTaskCount = worker.getSimultaneousTasks();
        for (int coreId = 0; coreId < maxTaskCount.length; coreId++) {
            poolCoreMaxConcurrentTasks[coreId] -= maxTaskCount[coreId];
        }
        worker.increaseFeatures(extension);
        maxTaskCount = worker.getSimultaneousTasks();
        for (int coreId = 0; coreId < maxTaskCount.length; coreId++) {
            poolCoreMaxConcurrentTasks[coreId] += maxTaskCount[coreId];
        }
        pool.defineCriticalSet();
    }
    ResourceUpdate<MethodResourceDescription> ru = new PerformedIncrease<>(extension);
    resourceUser.updatedResource(worker, ru);
    // Log modified resource
    RESOURCES_LOGGER.info("TIMESTAMP = " + String.valueOf(System.currentTimeMillis()));
    RESOURCES_LOGGER.info("INFO_MSG = [Resource modified. Name = " + worker.getName() + "]");
    RUNTIME_LOGGER.info("Resource modified. Name = " + worker.getName());
}
Also used : CloudProvider(es.bsc.compss.types.CloudProvider) MethodResourceDescription(es.bsc.compss.types.resources.MethodResourceDescription) CloudMethodResourceDescription(es.bsc.compss.types.resources.description.CloudMethodResourceDescription) PerformedIncrease(es.bsc.compss.types.resources.updates.PerformedIncrease)

Example 20 with CloudProvider

use of es.bsc.compss.types.CloudProvider in project compss by bsc-wdc.

the class ResourceManager method terminateCloudResource.

public static void terminateCloudResource(CloudMethodWorker worker, CloudMethodResourceDescription reduction) {
    if (worker.getDescription().getTypeComposition().isEmpty()) {
        pool.delete(worker);
        RESOURCES_LOGGER.info("TIMESTAMP = " + String.valueOf(System.currentTimeMillis()));
        RESOURCES_LOGGER.info("INFO_MSG = [Resource removed from the pool. Name = " + worker.getName() + "]");
        RUNTIME_LOGGER.info("Resource removed from the pool. Name = " + worker.getName());
    }
    CloudProvider cp = worker.getProvider();
    cp.requestResourceReduction(worker, reduction);
}
Also used : CloudProvider(es.bsc.compss.types.CloudProvider)

Aggregations

CloudProvider (es.bsc.compss.types.CloudProvider)22 CloudMethodResourceDescription (es.bsc.compss.types.resources.description.CloudMethodResourceDescription)11 CloudInstanceTypeDescription (es.bsc.compss.types.resources.description.CloudInstanceTypeDescription)9 ResourceCreationRequest (es.bsc.compss.types.ResourceCreationRequest)6 CloudImageDescription (es.bsc.compss.types.resources.description.CloudImageDescription)6 Test (org.junit.Test)6 HashMap (java.util.HashMap)5 ExtendedCloudMethodWorker (es.bsc.compss.types.ExtendedCloudMethodWorker)4 FakeNode (es.bsc.compss.types.fake.FakeNode)4 MethodResourceDescription (es.bsc.compss.types.resources.MethodResourceDescription)4 CloudMethodWorker (es.bsc.compss.types.resources.CloudMethodWorker)2 PerformedIncrease (es.bsc.compss.types.resources.updates.PerformedIncrease)2 Map (java.util.Map)2 ConstructConfigurationException (es.bsc.compss.exceptions.ConstructConfigurationException)1 NoResourceAvailableException (es.bsc.compss.exceptions.NoResourceAvailableException)1 Implementation (es.bsc.compss.types.implementations.Implementation)1 MethodImplementation (es.bsc.compss.types.implementations.MethodImplementation)1 ProjectFileValidationException (es.bsc.compss.types.project.exceptions.ProjectFileValidationException)1 es.bsc.compss.types.project.jaxb (es.bsc.compss.types.project.jaxb)1 Resource (es.bsc.compss.types.resources.Resource)1