Search in sources :

Example 6 with OperationVariable

use of org.opentosca.toscana.model.operation.OperationVariable in project TOSCAna by StuPro-TOSCAna.

the class NodeVisitor method handleStandardLifecycle.

private void handleStandardLifecycle(RootNode node, boolean isTopNode, Application application) {
    // get node artifacts
    node.getArtifacts().stream().forEach(artifact -> {
        String filePath = artifact.getFilePath();
        application.setPathToApplication(filePath);
        application.addFilePath(filePath);
    });
    // get StandardLifecycle inputs
    for (OperationVariable lifecycleInput : node.getStandardLifecycle().getInputs()) {
        addEnvironmentVariable(lifecycleInput);
    }
    // get operation inputs
    for (Operation operation : node.getStandardLifecycle().getOperations()) {
        // artifact path
        if (operation.getArtifact().isPresent()) {
            String path = operation.getArtifact().get().getFilePath();
            setPathToApplication(path, isTopNode);
        }
        // add dependencies paths
        for (String dependency : operation.getDependencies()) {
            application.addFilePath(dependency);
            setPathToApplication(dependency, isTopNode);
        }
        // add inputs to environment list
        for (OperationVariable input : operation.getInputs()) {
            addEnvironmentVariable(input);
        }
    // TODO: investigate what to do with outputs?
    }
}
Also used : OperationVariable(org.opentosca.toscana.model.operation.OperationVariable) Operation(org.opentosca.toscana.model.operation.Operation)

Example 7 with OperationVariable

use of org.opentosca.toscana.model.operation.OperationVariable in project TOSCAna by StuPro-TOSCAna.

the class ScalarTypeConverter method convertScalarEntity.

/**
 *     Converts the value attached to given {@code scalarEntity } to an instance of a type which is specified by given {@code key}.
 */
static <T> T convertScalarEntity(ScalarEntity scalarEntity, ToscaKey<T> key, Entity parent) {
    String value = scalarEntity.getValue();
    Class targetType = key.getType();
    if (String.class.isAssignableFrom(targetType)) {
        return (T) value;
    } else if (Integer.class.isAssignableFrom(targetType)) {
        Integer number;
        if (UNBOUNDED.equals(value)) {
            number = Integer.MAX_VALUE;
        } else {
            number = Integer.valueOf(value);
        }
        return (T) number;
    } else if (Boolean.class.isAssignableFrom(targetType)) {
        return (T) Boolean.valueOf(value);
    } else if (targetType.isEnum()) {
        Map<String, T> enumMap = EnumUtils.getEnumMap(targetType);
        Optional<T> result = enumMap.entrySet().stream().filter(entry -> value.equalsIgnoreCase(entry.getKey())).map(Map.Entry::getValue).findAny();
        return result.orElseThrow(() -> new NoSuchElementException(String.format("No value with name '%s' in enum '%s'", value, targetType.getSimpleName())));
    } else if (OperationVariable.class.isAssignableFrom(targetType)) {
        Connection c = scalarEntity.getGraph().getEdge(parent, scalarEntity);
        String name = null;
        OperationVariable var;
        if (c != null) {
            name = c.getKey();
            var = new OperationVariable(scalarEntity, name);
        } else {
            var = new OperationVariable(scalarEntity);
        }
        return (T) var;
    } else if (SizeUnit.class.isAssignableFrom(targetType)) {
        SizeUnit.Unit fromDefaultUnit = (SizeUnit.Unit) key.getDirectives().get(SizeUnit.FROM);
        SizeUnit.Unit toUnit = (SizeUnit.Unit) key.getDirectives().get(SizeUnit.TO);
        if (fromDefaultUnit == null || toUnit == null) {
            throw new IllegalStateException("ToscaKey defining a SizeUnit is illegal: No directive set for source and target units");
        }
        return (T) SizeUnit.convert(value, fromDefaultUnit, toUnit);
    } else if (Port.class.isAssignableFrom(targetType)) {
        return (T) new Port(Integer.valueOf(value));
    } else {
        throw new UnsupportedOperationException(String.format("Cannot convert value of type %s: currently unsupported", targetType.getSimpleName()));
    }
}
Also used : Port(org.opentosca.toscana.model.datatype.Port) ToscaKey(org.opentosca.toscana.model.util.ToscaKey) OperationVariable(org.opentosca.toscana.model.operation.OperationVariable) EnumUtils(org.apache.commons.lang3.EnumUtils) Map(java.util.Map) Connection(org.opentosca.toscana.core.parse.model.Connection) ScalarEntity(org.opentosca.toscana.core.parse.model.ScalarEntity) Optional(java.util.Optional) SizeUnit(org.opentosca.toscana.model.datatype.SizeUnit) NoSuchElementException(java.util.NoSuchElementException) Entity(org.opentosca.toscana.core.parse.model.Entity) OperationVariable(org.opentosca.toscana.model.operation.OperationVariable) Optional(java.util.Optional) Port(org.opentosca.toscana.model.datatype.Port) Connection(org.opentosca.toscana.core.parse.model.Connection) SizeUnit(org.opentosca.toscana.model.datatype.SizeUnit) SizeUnit(org.opentosca.toscana.model.datatype.SizeUnit) Map(java.util.Map) NoSuchElementException(java.util.NoSuchElementException)

Aggregations

OperationVariable (org.opentosca.toscana.model.operation.OperationVariable)7 CFNCommand (com.scaleset.cfbuilder.ec2.metadata.CFNCommand)2 CFNFile (com.scaleset.cfbuilder.ec2.metadata.CFNFile)2 Test (org.junit.Test)2 BaseUnitTest (org.opentosca.toscana.core.BaseUnitTest)2 EffectiveModel (org.opentosca.toscana.model.EffectiveModel)2 EffectiveModelFactory (org.opentosca.toscana.model.EffectiveModelFactory)2 Database (org.opentosca.toscana.model.node.Database)2 Operation (org.opentosca.toscana.model.operation.Operation)2 File (java.io.File)1 Map (java.util.Map)1 NoSuchElementException (java.util.NoSuchElementException)1 Optional (java.util.Optional)1 EnumUtils (org.apache.commons.lang3.EnumUtils)1 Connection (org.opentosca.toscana.core.parse.model.Connection)1 Entity (org.opentosca.toscana.core.parse.model.Entity)1 ScalarEntity (org.opentosca.toscana.core.parse.model.ScalarEntity)1 Port (org.opentosca.toscana.model.datatype.Port)1 SizeUnit (org.opentosca.toscana.model.datatype.SizeUnit)1 ToscaKey (org.opentosca.toscana.model.util.ToscaKey)1