use of org.opentosca.toscana.model.capability.OsCapability in project TOSCAna by StuPro-TOSCAna.
the class TransformModelNodeVisitor method visit.
@Override
public void visit(Compute node) {
try {
if (cfnModule.checkComputeToEc2(node)) {
logger.debug("Compute '{}' will be transformed to EC2", node.getEntityName());
String nodeName = toAlphanumerical(node.getEntityName());
// default security group the EC2 Instance
SecurityGroup webServerSecurityGroup = cfnModule.resource(SecurityGroup.class, nodeName + SECURITY_GROUP).groupDescription("Enables ports for " + nodeName + ".");
// open endpoint port
node.getEndpoint().getPort().ifPresent(port -> webServerSecurityGroup.ingress(ingress -> ingress.cidrIp(IP_OPEN), PROTOCOL_TCP, port.port));
// check what image id should be taken
CapabilityMapper capabilityMapper = createCapabilityMapper();
OsCapability computeOs = node.getOs();
String imageId = capabilityMapper.mapOsCapabilityToImageId(computeOs);
ComputeCapability computeCompute = node.getHost();
String instanceType = capabilityMapper.mapComputeCapabilityToInstanceType(computeCompute, CapabilityMapper.EC2_DISTINCTION);
// create CFN init and store it
CFNInit init = new CFNInit(CONFIG_SETS);
cfnModule.putCFNInit(nodeName, init);
cfnModule.resource(Instance.class, nodeName).securityGroupIds(webServerSecurityGroup).imageId(imageId).instanceType(instanceType);
capabilityMapper.mapDiskSize(computeCompute, cfnModule, nodeName);
// Add Reference to keyName if KeyPair needed and open Port 22 (Allows SSH access)
if (cfnModule.hasKeyPair()) {
Instance instance = (Instance) cfnModule.getResource(nodeName);
instance.keyName(cfnModule.getKeyNameVar());
webServerSecurityGroup.ingress(ingress -> ingress.cidrIp(IP_OPEN), PROTOCOL_TCP, 22);
}
} else {
logger.debug("Compute '{}' will not be transformed to EC2", node.getEntityName());
}
} catch (SdkClientException se) {
logger.error("SDKClient failed, no valid credentials or no internet connection");
throw new TransformationFailureException("Failed", se);
} catch (Exception e) {
logger.error("Error while creating EC2Instance resource.");
throw new TransformationFailureException("Failed at Compute node " + node.getEntityName(), e);
}
}
use of org.opentosca.toscana.model.capability.OsCapability in project TOSCAna by StuPro-TOSCAna.
the class EffectiveModelSetterTest method setEnumTest.
@Test
public void setEnumTest() {
OsCapability os = compute.getOs();
OsCapability.Distribution expected = OsCapability.Distribution.FEDORA;
os.setDistribution(expected);
Optional<OsCapability.Distribution> result = os.getDistribution();
assertTrue(result.isPresent());
assertEquals(expected, result.get());
}
use of org.opentosca.toscana.model.capability.OsCapability in project TOSCAna by StuPro-TOSCAna.
the class CheckModelNodeVisitor method visit.
@Override
public void visit(Compute node) {
List<OsCapability.Type> supportedTypes = Lists.newArrayList(OsCapability.Type.LINUX);
// might grow but for now only linux
List<OsCapability.Distribution> supportedDistributions = Lists.newArrayList(OsCapability.Distribution.UBUNTU);
// might grow, but for now only ubuntu, maybe already work with others but not yet tested
OsCapability osCapability = node.getOs();
// check type
if (osCapability.getType().isPresent()) {
OsCapability.Type type = osCapability.getType().get();
if (!supportedTypes.contains(type)) {
throw new UnsupportedTypeException("OS Type " + type + " not supported.");
}
}
// check distribution
if (osCapability.getDistribution().isPresent()) {
OsCapability.Distribution distribution = osCapability.getDistribution().get();
if (!supportedDistributions.contains(distribution)) {
throw new UnsupportedTypeException("OS distribution " + distribution + " not supported.");
}
}
}
use of org.opentosca.toscana.model.capability.OsCapability in project TOSCAna by StuPro-TOSCAna.
the class Compute method init.
private void init() {
setDefault(HOST, new ContainerCapability(getChildEntity(HOST)));
setDefault(OS, new OsCapability(getChildEntity(OS)));
setDefault(ENDPOINT, new AdminEndpointCapability(getChildEntity(ENDPOINT)));
setDefault(SCALABLE, new ScalableCapability(getChildEntity(SCALABLE)));
setDefault(BINDING, new BindableCapability(getChildEntity(BINDING)));
setDefault(LOCAL_STORAGE, new BlockStorageRequirement(getChildEntity(LOCAL_STORAGE)));
}
Aggregations