if (relationshipTemplate.getProperties() == null) { relationshipTemplate.setProperties(Maps.newHashMap()); if (relationshipTemplate.getProperties().containsKey(propertyEntry.getKey())) { throw new IllegalArgumentException( "The service relationship requires to override a property already used/defined by the template relationship. This association cannot be done."); relationshipTemplate.getProperties().put(propertyEntry.getKey(), propertyEntry.getValue().getDefault());
@Override protected void processRelationshipOperation(Csar csar, Topology topology, RebuildRelationshipOperation operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate) { // rebuild a relationship template based on the current relationship type log.debug("Rebuilding the relationship [ {} ] in the node template [ {} ] of topology [ {} ] .", operation.getRelationshipName(), operation.getNodeName(), topology.getId()); RelationshipType relType = ToscaContext.getOrFail(RelationshipType.class, relationshipTemplate.getType()); Map<String, AbstractPropertyValue> properties = Maps.newHashMap(); TemplateBuilder.fillProperties(properties, relType.getProperties(), relationshipTemplate.getProperties()); relationshipTemplate.setProperties(properties); relationshipTemplate.setAttributes(relType.getAttributes()); } }
if (relationship.getProperties() == null || relationship.getProperties().isEmpty()) { continue; addRequiredPropertyIdToTaskProperties("relationships[" + relationshipEntry.getKey() + "]", relationship.getProperties(), safe(ToscaContext.getOrFail(RelationshipType.class, relationshipEntry.getValue().getType()).getProperties()), task, skipInputProperties);
@Override protected void processRelationshipOperation(Csar csar, Topology topology, UnsetRelationshipPropertyAsSecretOperation operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate) { RelationshipType relationshipType = ToscaContext.get(RelationshipType.class, relationshipTemplate.getType()); PropertyDefinition relationshipPropertyDefinition = getOrFail(relationshipType.getProperties(), operation.getPropertyName(), "Property {} do not exist for relationship {} of node {}", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName()); AbstractPropertyValue defaultPropertyValue = PropertyUtil.getDefaultPropertyValueFromPropertyDefinition(relationshipPropertyDefinition); relationshipTemplate.getProperties().put(operation.getPropertyName(), defaultPropertyValue); log.debug("Remove secret from property [ {} ] of relationship template [ {} ] of node [ {} ] to an input of the topology [ {} ].", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName(), topology.getId()); } }
for (Entry<String, RelationshipTemplate> relEntry : nodeTemplate.getRelationships().entrySet()) { RelationshipTemplate relationshipTemplate = relEntry.getValue(); processGetInput(evaluatorContext, relationshipTemplate, relationshipTemplate.getProperties());
String relationshipName = relationshipEntry.getKey(); RelationshipTemplate relationship = relationshipEntry.getValue(); if (MapUtils.isNotEmpty(relationship.getProperties())) { checkProperties(nodeName + ".relationships." + relationshipName, relationship.getProperties(), RelationshipType.class, relationship.getType(), context);
@Override protected void processRelationshipOperation(Csar csar, Topology topology, UnsetRelationshipPropertyAsInputOperation operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate) { RelationshipType relationshipType = ToscaContext.get(RelationshipType.class, relationshipTemplate.getType()); PropertyDefinition relationshipPropertyDefinition = getOrFail(relationshipType.getProperties(), operation.getPropertyName(), "Property {} do not exist for relationship {} of node {}", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName()); AbstractPropertyValue defaultPropertyValue = PropertyUtil.getDefaultPropertyValueFromPropertyDefinition(relationshipPropertyDefinition); relationshipTemplate.getProperties().put(operation.getPropertyName(), defaultPropertyValue); log.debug("Remove association from property [ {} ] of relationship template [ {} ] of node [ {} ] to an input of the topology [ {} ].", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName(), topology.getId()); } }
@Override protected void processRelationshipOperation(Csar csar, Topology topology, SetRelationshipPropertyAsSecretOperation operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate) { RelationshipType relationshipType = ToscaContext.get(RelationshipType.class, relationshipTemplate.getType()); PropertyDefinition relationshipPropertyDefinition = getOrFail(relationshipType.getProperties(), operation.getPropertyName(), "Property {} do not exist for relationship {} of node {}", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName()); FunctionPropertyValue secretFunction = new FunctionPropertyValue(); secretFunction.setFunction(ToscaFunctionConstants.GET_SECRET); secretFunction.setParameters(Arrays.asList(operation.getSecretPath())); relationshipTemplate.getProperties().put(operation.getPropertyName(), secretFunction); log.debug("Associate the property [ {} ] of relationship template [ {} ] of node [ {} ] to secret <path: {} > of the topology [ {} ].", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName(), operation.getSecretPath(), topology.getId()); } }
@And("^The topology should have the property \"([^\"]*)\" of relationship \"([^\"]*)\" from the node \"([^\"]*)\" defined as a secret with a secret path \"([^\"]*)\"$") public void theTopologyShouldHaveThePropertyOfRelationshipFromTheNodeDefinedAsASecretWithASecretPath(String propertyName, String relationshipName, String nodeName, String secretPath) throws Throwable { String response = Context.getRestClientInstance().get("/rest/v1/topologies/" + Context.getInstance().getTopologyId()); JavaType restResponseType = Context.getJsonMapper().getTypeFactory().constructParametricType(RestResponse.class, TopologyDTO.class); TopologyDTO topologyDTO = ((RestResponse<TopologyDTO>) Context.getJsonMapper().readValue(response, restResponseType)).getData(); FunctionPropertyValue functionPropertyValue = (FunctionPropertyValue) topologyDTO.getTopology().getNodeTemplates().get(nodeName).getRelationships().get(relationshipName).getProperties().get(propertyName); Assert.assertEquals(secretPath, functionPropertyValue.getParameters().get(0)); }
RelationshipTemplate template = paaSRelationshipTemplate.getTemplate(); injectPropertiesAsInputs(ToscaFunctionConstants.SELF, null, template.getProperties(), paaSRelationshipTemplate.getInterfaces(), baseName -> StringUtils.joinWith(AlienUtils.DEFAULT_PREFIX_SEPARATOR, ToscaFunctionConstants.SELF, baseName));
if (nodeTemp.getRelationships() != null) { for (RelationshipTemplate relationshipTemplate : nodeTemp.getRelationships().values()) { renameInputInProperties(relationshipTemplate.getProperties(), operation.getInputName(), operation.getNewInputName());
@Override protected void processRelationshipOperation(Csar csar, Topology topology, SetRelationshipPropertyAsInputOperation operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate) { PropertyDefinition inputPropertyDefinition = getOrFail(topology.getInputs(), operation.getInputName(), "Input {} not found in topology", operation.getInputName()); RelationshipType relationshipType = ToscaContext.get(RelationshipType.class, relationshipTemplate.getType()); PropertyDefinition relationshipPropertyDefinition = getOrFail(relationshipType.getProperties(), operation.getPropertyName(), "Property {} do not exist for relationship {} of node {}", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName()); // Check that the property definition of the input is indeed compatible with the property definition of the capability. inputPropertyDefinition.checkIfCompatibleOrFail(relationshipPropertyDefinition); FunctionPropertyValue getInput = new FunctionPropertyValue(); getInput.setFunction(ToscaFunctionConstants.GET_INPUT); getInput.setParameters(Arrays.asList(operation.getInputName())); relationshipTemplate.getProperties().put(operation.getPropertyName(), getInput); log.debug("Associate the property [ {} ] of relationship template [ {} ] of node [ {} ] to an input of the topology [ {} ].", operation.getPropertyName(), operation.getRelationshipName(), operation.getNodeName(), topology.getId()); } }
propertyValueChecker.checkProperties(relationshipType, relationshipTemplate.getProperties(), instance.getKey()); TemplateBuilder.fillProperties(properties, indexedRelationshipType.getProperties(), relationshipTemplate.getProperties(), false); relationshipTemplate.setProperties(properties); relationshipTemplate.setAttributes(indexedRelationshipType.getAttributes());
@Override protected void processInputOperation(Csar csar, Topology topology, DeleteInputOperation operation, Map<String, PropertyDefinition> inputs) { if (!inputs.containsKey(operation.getInputName())) { throw new NotFoundException("Input " + operation.getInputName() + "not found in topology"); } for (NodeTemplate nodeTemplate : safe(topology.getNodeTemplates()).values()) { NodeType nodeType = ToscaContext.get(NodeType.class, nodeTemplate.getType()); removeInputIdInProperties(nodeTemplate.getProperties(), nodeType.getProperties(), operation.getInputName()); if (nodeTemplate.getRelationships() != null) { for (RelationshipTemplate relationshipTemplate : nodeTemplate.getRelationships().values()) { RelationshipType relationshipType = ToscaContext.get(RelationshipType.class, relationshipTemplate.getType()); removeInputIdInProperties(relationshipTemplate.getProperties(), relationshipType.getProperties(), operation.getInputName()); } } if (nodeTemplate.getCapabilities() != null) { for (Capability capability : nodeTemplate.getCapabilities().values()) { CapabilityType capabilityType = ToscaContext.get(CapabilityType.class, capability.getType()); removeInputIdInProperties(capability.getProperties(), capabilityType.getProperties(), operation.getInputName()); } } } deletePreConfiguredInput(csar, topology, operation); inputs.remove(operation.getInputName()); log.debug("Remove the input " + operation.getInputName() + " from the topology " + topology.getId()); }