public static List<TNodeTemplate> getNodeTemplatesWithAbstractDAs(TTopologyTemplate topologyTemplate) { List<TNodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates(); List<TNodeTemplate> nodeTemplatesWithAbstractDA = nodeTemplates.stream() .filter(nt -> nt.getDeploymentArtifacts() != null) .filter(nt -> nt.getDeploymentArtifacts().getDeploymentArtifact().stream() .anyMatch(da -> getArtifactTypeOfDA(da).getAbstract() == TBoolean.YES)) .collect(Collectors.toList()); return nodeTemplatesWithAbstractDA; }
public static TTopologyTemplate injectDriver(TTopologyTemplate topologyTemplate) throws Exception { List<TNodeTemplate> nodeTemplatesWithAbstractDA = DASpecification.getNodeTemplatesWithAbstractDAs(topologyTemplate); for (TNodeTemplate nodeTemplateWithAbstractDA : nodeTemplatesWithAbstractDA) { List<TDeploymentArtifact> abstractDAsAttachedToNodeTemplate = nodeTemplateWithAbstractDA.getDeploymentArtifacts().getDeploymentArtifact().stream() .filter(da -> DASpecification.getArtifactTypeOfDA(da).getAbstract() == TBoolean.YES) .collect(Collectors.toList()); for (TDeploymentArtifact abstractDA : abstractDAsAttachedToNodeTemplate) { Map<TRelationshipTemplate, TNodeTemplate> nodeTemplatesWithConcreteDA = DASpecification.getNodesWithSuitableConcreteDAAndTheDirectlyConnectedNode(nodeTemplateWithAbstractDA, abstractDA, topologyTemplate); if (nodeTemplatesWithConcreteDA != null) { for (TRelationshipTemplate relationshipTemplate : nodeTemplatesWithConcreteDA.keySet()) { TDeploymentArtifact concreteDeploymentArtifact = DASpecification.getSuitableConcreteDA(abstractDA, nodeTemplatesWithConcreteDA.get(relationshipTemplate)); nodeTemplateWithAbstractDA.getDeploymentArtifacts().getDeploymentArtifact().add(concreteDeploymentArtifact); setDriverProperty(relationshipTemplate, concreteDeploymentArtifact); } //concrete DAs from the delivering Node Template must not be deleted. They are uploaded by the OpenTOSCA Container but not used. nodeTemplateWithAbstractDA.getDeploymentArtifacts().getDeploymentArtifact().remove(abstractDA); } else { throw new WineryRepositoryException("No concrete DA found for the abstract DA"); } } } return topologyTemplate; }
/** * Determines the list of DAs belonging to the given node template. * <p> * If no DAs are existing, an empty list is created in the model for the node template */ private static List<TDeploymentArtifact> getDeploymentArtifacts(TNodeTemplate nodeTemplate) { TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts(); final List<TDeploymentArtifact> res; if (deploymentArtifacts == null) { deploymentArtifacts = new TDeploymentArtifacts(); nodeTemplate.setDeploymentArtifacts(deploymentArtifacts); } res = deploymentArtifacts.getDeploymentArtifact(); return res; }
public static Collection<QName> getArtifactTemplatesOfReferencedDeploymentArtifacts(TNodeTemplate nodeTemplate) { List<QName> l = new ArrayList<>(); // DAs may be assigned directly to a node template Collection<QName> allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(nodeTemplate.getDeploymentArtifacts()); l.addAll(allReferencedArtifactTemplates); // DAs may be assigned via node type implementations QName nodeTypeQName = nodeTemplate.getType(); Collection<NodeTypeImplementationId> allNodeTypeImplementations = RepositoryFactory.getRepository().getAllElementsReferencingGivenType(NodeTypeImplementationId.class, nodeTypeQName); for (NodeTypeImplementationId nodeTypeImplementationId : allNodeTypeImplementations) { TDeploymentArtifacts deploymentArtifacts = RepositoryFactory.getRepository().getElement(nodeTypeImplementationId).getDeploymentArtifacts(); allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(deploymentArtifacts); l.addAll(allReferencedArtifactTemplates); } return l; }
public static TDeploymentArtifact getSuitableConcreteDA(TDeploymentArtifact abstractDeploymentArtifact, TNodeTemplate nodeTemplate) { TDeploymentArtifact concreteDA = null; if (nodeTemplate.getDeploymentArtifacts() != null) { List<TDeploymentArtifact> concreteDeploymentArtifacts = nodeTemplate.getDeploymentArtifacts().getDeploymentArtifact(); concreteDA = getConcreteDA(abstractDeploymentArtifact, concreteDeploymentArtifacts); } if (concreteDA == null) { List<TNodeTypeImplementation> nodeTypeImplementations = getmatchingNodeTypeImplementations(nodeTemplate.getType()); for (TNodeTypeImplementation nodeTypeImplementation : nodeTypeImplementations) { if (nodeTypeImplementation.getDeploymentArtifacts() != null) { List<TDeploymentArtifact> deploymentArtifacts = nodeTypeImplementation.getDeploymentArtifacts().getDeploymentArtifact(); concreteDA = getConcreteDA(abstractDeploymentArtifact, deploymentArtifacts); if (concreteDA != null) { return concreteDA; } } } } else { return concreteDA; } return null; }
@Override public void visit(TNodeTemplate nodeTemplate) { final TNodeTemplate.Requirements requirements = nodeTemplate.getRequirements(); if ((requirements != null) && requirements.getRequirement().isEmpty()) { nodeTemplate.setRequirements(null); } final TNodeTemplate.Capabilities capabilities = nodeTemplate.getCapabilities(); if ((capabilities != null) && capabilities.getCapability().isEmpty()) { nodeTemplate.setCapabilities(null); } final TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts(); if ((deploymentArtifacts != null) && deploymentArtifacts.getDeploymentArtifact().isEmpty()) { nodeTemplate.setDeploymentArtifacts(null); } final TPolicies policies = nodeTemplate.getPolicies(); if ((policies != null) && policies.getPolicy().isEmpty()) { nodeTemplate.setPolicies(null); } super.visit(nodeTemplate); }
@NonNull public Map<String, TNodeTemplate> convert(org.eclipse.winery.model.tosca.TNodeTemplate node, @NonNull List<org.eclipse.winery.model.tosca.TRelationshipTemplate> rTs) { if (Objects.isNull(node)) return new LinkedHashMap<>(); return Collections.singletonMap( node.getIdFromIdOrNameField(), new TNodeTemplate.Builder( convert( node.getType(), new NodeTypeId(node.getType()) )) .setProperties(convert(node, node.getProperties())) .setRequirements(convert(node.getRequirements())) .addRequirements(rTs.stream() .filter(entry -> Objects.nonNull(entry.getSourceElement()) && entry.getSourceElement().getRef().equals(node)) .map(entry -> new LinkedHashMap.SimpleEntry<>( Optional.ofNullable(entry.getName()).orElse(entry.getId()), new TRequirementAssignment.Builder() .setNode(new QName(entry.getTargetElement().getRef().getId())) .build() )) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) ) .setCapabilities(convert(node.getCapabilities())) .setArtifacts(convert(node.getDeploymentArtifacts())) .build() ); }
)); TDeploymentArtifacts list = this.nodeTemplate.getDeploymentArtifacts(); if (Objects.nonNull(list)) { list = new TDeploymentArtifacts();
public static boolean injectArtifactTemplateIntoDeploymentArtifact(ServiceTemplateId serviceTemplate, String nodeTemplateId, String deploymentArtifactId, ArtifactTemplateId artifactTemplate) throws IOException { TServiceTemplate element = RepositoryFactory.getRepository().getElement(serviceTemplate); element.getTopologyTemplate().getNodeTemplate(nodeTemplateId).getDeploymentArtifacts().getDeploymentArtifact(deploymentArtifactId).setArtifactRef(artifactTemplate.getQName()); RepositoryFactory.getRepository().setElement(serviceTemplate, element); return true; }
if (template instanceof TNodeTemplate) { TNodeTemplate nodeTemplate = (TNodeTemplate) template; TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts(); if (deploymentArtifacts != null) { allDAs.addAll(deploymentArtifacts.getDeploymentArtifact());
TDeploymentArtifacts deploymentArtifacts = n.getDeploymentArtifacts(); if (deploymentArtifacts != null) { List<TDeploymentArtifact> das = deploymentArtifacts.getDeploymentArtifact();
TDeploymentArtifacts deploymentArtifacts = n.getDeploymentArtifacts(); if (deploymentArtifacts != null) { List<TDeploymentArtifact> das = deploymentArtifacts.getDeploymentArtifact();
public void visit(TNodeTemplate nodeTemplate) { this.visit((RelationshipSourceOrTarget) nodeTemplate); final TNodeTemplate.Requirements requirements = nodeTemplate.getRequirements(); if (requirements != null) { requirements.accept(this); } final TNodeTemplate.Capabilities capabilities = nodeTemplate.getCapabilities(); if (capabilities != null) { capabilities.accept(this); } final TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts(); if (deploymentArtifacts != null) { for (TDeploymentArtifact deploymentArtifact : deploymentArtifacts.getDeploymentArtifact()) { deploymentArtifact.accept(this); } } final TPolicies policies = nodeTemplate.getPolicies(); if (policies != null) { for (TPolicy policy : policies.getPolicy()) { policy.accept(this); } } // meta model does not offer more children }
/** * @param nodeTemplate which should be cloned * @return copy of nodeTemplate */ public static TNodeTemplate clone(TNodeTemplate nodeTemplate) { TNodeTemplate nodeTemplateClone = new TNodeTemplate(); nodeTemplateClone.setType(nodeTemplate.getType()); nodeTemplateClone.setId(nodeTemplate.getId()); nodeTemplateClone.setDeploymentArtifacts(nodeTemplate.getDeploymentArtifacts()); // returns 1 if null -> !original.equals(cloned) nodeTemplateClone.setMaxInstances(nodeTemplate.getMaxInstances()); nodeTemplateClone.setMinInstances(nodeTemplate.getMinInstances()); nodeTemplateClone.setName(nodeTemplate.getName()); nodeTemplateClone.setPolicies(nodeTemplate.getPolicies()); nodeTemplateClone.setRequirements(nodeTemplate.getRequirements()); nodeTemplateClone.setCapabilities(nodeTemplate.getCapabilities()); nodeTemplateClone.setProperties(nodeTemplate.getProperties()); nodeTemplateClone.setPropertyConstraints(nodeTemplate.getPropertyConstraints()); nodeTemplateClone.setX(nodeTemplate.getX()); nodeTemplateClone.setY(nodeTemplate.getY()); if (ModelUtilities.getTargetLabel(nodeTemplate).isPresent()) { ModelUtilities.setTargetLabel(nodeTemplateClone, ModelUtilities.getTargetLabel(nodeTemplate).get()); } return nodeTemplateClone; }