</parent>
<artifactId>jython-tosca-parser</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.4.1-SNAPSHOT</version>
<dependencies>
<dependency>
package org.openecomp.sdc.toscaparser.api;
+import static com.google.common.collect.ImmutableList.toImmutableList;
+
import java.util.List;
import java.util.Objects;
public class ToscaTemplate {
- private final JyToscaTemplate jyToscaTemplate;
- private final TopologyTemplate topologyTemplate;
-
- public ToscaTemplate(JyToscaTemplate jyToscaTemplate, TopologyTemplate topologyTemplate) {
- this.jyToscaTemplate = Objects.requireNonNull(jyToscaTemplate);
- this.topologyTemplate = Objects.requireNonNull(topologyTemplate);
- }
-
- public String getVersion() {
- return jyToscaTemplate.getJyVersion();
- }
-
- public String getDescription() {
- return jyToscaTemplate.getJyDescription();
- }
-
- public TopologyTemplate getTopologyTemplate() {
- return topologyTemplate;
- }
-
- public List<NodeTemplate> getNodeTemplates() {
- return topologyTemplate.getNodeTemplates();
- }
-
- public List<Input> getInputs() {
- return topologyTemplate.getInputs();
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(this)
- .add("version", getVersion())
- .add("description", getDescription())
- .add("topologyTemplate", topologyTemplate)
- .toString();
- }
+ private final JyToscaTemplate jyToscaTemplate;
+ private final TopologyTemplate topologyTemplate;
+
+ public ToscaTemplate(JyToscaTemplate jyToscaTemplate, TopologyTemplate topologyTemplate) {
+ this.jyToscaTemplate = Objects.requireNonNull(jyToscaTemplate);
+ this.topologyTemplate = Objects.requireNonNull(topologyTemplate);
+ }
+
+ public String getVersion() {
+ return jyToscaTemplate.getJyVersion();
+ }
+
+ public String getDescription() {
+ return jyToscaTemplate.getJyDescription();
+ }
+
+ public TopologyTemplate getTopologyTemplate() {
+ return topologyTemplate;
+ }
+
+ public List<NodeTemplate> getNodeTemplates() {
+ return topologyTemplate.getNodeTemplates();
+ }
+
+ public List<TopologyTemplate> getNestedTopologyTemplates() {
+ return jyToscaTemplate.getNestedTopologyTemplates()
+ .stream()
+ .map(TopologyTemplate::new)
+ .collect(toImmutableList());
+ }
+
+ public List<Input> getInputs() {
+ return topologyTemplate.getInputs();
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("version", getVersion())
+ .add("description", getDescription())
+ .add("topologyTemplate", topologyTemplate)
+ .toString();
+ }
}
\ No newline at end of file
return jyInput.getJyType();
}
+
+
public boolean isRequired() {
return jyInput.isJyRequired();
}
String getJyVersion();
String getJyDescription();
List<JyNodeTemplate> getJyNodeTemplates();
+ List<JyTopologyTemplate> getNestedTopologyTemplates();
JyTopologyTemplate getJyTopologyTemplate();
}
String getJyName();
String getJyType();
+ String getJyDefault();
boolean isJyRequired();
String getJyDescription();
}
return self.required
def getJyDescription(self):
- return self.description
+ return self.description
+
+ def getJyDefault(self):
+ return self.default
@property
def type(self):
return self.description
def getJyTopologyTemplate(self):
- return self.topology_template
+ return self.topology_template
+ def getJyNestedTopologyTemplates(self):
+ return self.nested_tosca_templates_with_topology
+
def _topology_template(self):
return TopologyTemplate(self._tpl_topology_template(),
self._get_all_custom_defs(),
<sonar.projectBaseDir>${project.basedir}</sonar.projectBaseDir>
<sonar.jacoco.reportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.reportPath>
<nexus.proxy>https://nexus.openecomp.org</nexus.proxy>
+ <snapshots.path>snapshots</snapshots.path>
+ <releases.path>releases</releases.path>
<staging.profile.id>176c31dfe190a</staging.profile.id>
</properties>
<repository>
<id>ecomp-releases</id>
<name>Release Repository</name>
- <url>${nexus.proxy}/content/repositories/releases/</url>
+ <url>${nexus.proxy}/content/repositories/${releases.path}/</url>
</repository>
<snapshotRepository>
<id>ecomp-snapshots</id>
<name>Snapshot Repository</name>
- <url>${nexus.proxy}/content/repositories/snapshots/</url>
+ <url>${nexus.proxy}/content/repositories/${snapshots.path}/</url>
</snapshotRepository>
</distributionManagement>
public static void main(String[] args) throws Exception {
try (SdcToscaParserFactory toscaParserFactory = SdcToscaParserFactory.getInstance()){
//ISdcCsarHelper csarHelper = toscaParserFactory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar-nt-metadata.csar");
- ISdcCsarHelper csarHelper = toscaParserFactory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar.csar");
+ ISdcCsarHelper csarHelper = toscaParserFactory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar-nt-props.csar");
+ //ISdcCsarHelper csarHelper = toscaParserFactory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar.csar");
String serviceSubstitutionMappingsTypeName = csarHelper.getServiceSubstitutionMappingsTypeName();
System.out.println("serviceSubstitutionMappingsTypeName is "+serviceSubstitutionMappingsTypeName);
- String nodeTemplatePropertyLeafValue = csarHelper.getNodeTemplatePropertyLeafValue(csarHelper.getServiceVfList().get(0), "nf_role");
+ String nodeTemplatePropertyLeafValue = csarHelper.getNodeTemplatePropertyLeafValue(csarHelper.getServiceVfList().get(0), "nf_role#nf_naming#ecomp_generated_naming");
System.out.println("property is "+nodeTemplatePropertyLeafValue);
}
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
<dependency>\r
<groupId>org.openecomp.sdc.sdc-distribution-client</groupId>\r
<artifactId>jython-tosca-parser</artifactId>\r
- <version>0.4.0-SNAPSHOT</version>\r
+ <version>0.4.1-SNAPSHOT</version>\r
</dependency>\r
\r
\r
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
import org.openecomp.sdc.toscaparser.api.Property;
import org.openecomp.sdc.toscaparser.api.TopologyTemplate;
import org.openecomp.sdc.toscaparser.api.ToscaTemplate;
+import org.yaml.snakeyaml.Yaml;
public class SdcCsarHelperImpl implements ISdcCsarHelper {
private ToscaTemplate toscaTemplate;
-
+ private static Yaml defaultYaml = new Yaml();
+
+
public SdcCsarHelperImpl(ToscaTemplate toscaTemplate) {
this.toscaTemplate = toscaTemplate;
}
@Override
+ //Sunny flow - covered with UT, flat and nested
public String getNodeTemplatePropertyLeafValue(NodeTemplate nodeTemplate, String leafValuePath) {
String[] split = leafValuePath.split("#");
List<Property> properties = nodeTemplate.getProperties();
Optional<Property> findFirst = properties.stream().filter(x -> x.getName().equals(split[0])).findFirst();
if (findFirst.isPresent()){
- Object current = findFirst.get().getValue();
- /*for (int i = 1; i < split.length; i++) {
- //if (i )
- }*/
- //TODO add nested props
- return (String)current;
+ Property property = findFirst.get();
+ Object current = property.getValue();
+ if (split.length > 1){
+ current = defaultYaml.load((String)current);
+ for (int i = 1; i < split.length; i++) {
+ current = ((Map<String, Object>)current).get(split[i]);
+ }
+ }
+ return String.valueOf(current);
}
return null;
}
}
@Override
+ //Sunny flow - covered with UT
public List<NodeTemplate> getServiceVfList() {
return getNodeTemplateBySdcType(toscaTemplate.getTopologyTemplate(), Types.TYPE_VF);
}
-
+
@Override
+ //Sunny flow - covered with UT
public List<NodeTemplate> getServiceNodeTemplatesByType(String nodeType) {
List<NodeTemplate> res = new ArrayList<>();
List<NodeTemplate> nodeTemplates = toscaTemplate.getNodeTemplates();
return res;
}
- /*@Override
- public String getMetadataPropertyValue(Metadata metadata, String metadataPropertyName) {
- return (String)metadata.get(metadataPropertyName);
- }*/
-
@Override
public String getServiceInputLeafValue(String inputLeafValuePath) {
//toscaTemplate.getTopologyTemplate().getNodeTemplates().get(0).getProperties().get(0).
@Override
public Map<String, String> getServiceMetadata() {
- return toscaTemplate.getTopologyTemplate().getMetadata();
+ TopologyTemplate topologyTemplate = toscaTemplate.getTopologyTemplate();
+ System.out.println(topologyTemplate.toString());
+ return topologyTemplate.getMetadata();
}
//Get property from group
public String getGroupPropertyLeafValue(Group group, String propertyName) {
return null;//getLeafPropertyValue(group, propertyName);
}
-
+
private List<NodeTemplate> getNodeTemplateBySdcType(NodeTemplate nodeTemplate, String sdcType){
//Need metadata to fetch by type
-
+
/*List<NodeTemplate> nodeTemplates = nodeTemplate.getNestedNodeTemplates();
List<NodeTemplate> res = new ArrayList<>();
for (NodeTemplate nodeTemplateEntry : nodeTemplates){
}*/
return null;
}
-
+
private List<NodeTemplate> getNodeTemplateBySdcType(TopologyTemplate topologyTemplate, String sdcType){
//Need metadata to fetch by type
-
+
List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
List<NodeTemplate> res = new ArrayList<>();
for (NodeTemplate nodeTemplateEntry : nodeTemplates){
//TODO switch back to type condition
if (nodeTemplateEntry.getTypeDefinition().getType().contains("."+sdcType.toLowerCase()+".")){
- //if (sdcType.equals(nodeTemplateEntry.getMetadata().get(SdcPropertyNames.PROPERTY_NAME_TYPE))){
+ //if (sdcType.equals(nodeTemplateEntry.getMetadata().get(SdcPropertyNames.PROPERTY_NAME_TYPE))){
res.add(nodeTemplateEntry);
}
}
}
@Override
+ //TODO constant strings
public List<NodeTemplate> getAllottedResources() {
- //TODO - Need metadata
- return new ArrayList<>();
+ List<NodeTemplate> nodeTemplates = toscaTemplate.getTopologyTemplate().getNodeTemplates();
+ return nodeTemplates.stream().filter(x -> x.getMetadata() != null && x.getMetadata().get("category").equals("allotted_resources")).collect(Collectors.toList());
}
@Override
+ //Sunny flow - covered with UT
public String getTypeOfNodeTemplate(NodeTemplate nodeTemplate) {
//Can be done
return nodeTemplate.getTypeDefinition().getType();
}
-
-
+
+ /*//Not part of API, for inner/test use
+ public NodeTemplate getNodeTemplateByName(TopologyTemplate topologyTemplate, String topologyName){
+ List<NodeTemplate> nodeTemplates = topologyTemplate.getNodeTemplates();
+ Optional<NodeTemplate> findFirst = nodeTemplates.stream().filter(x -> x.getName().equals(topologyName)).findFirst();
+ return findFirst.isPresent() ? findFirst.get() : null;
+ }*/
}
--- /dev/null
+package org.openecomp.sdc.impl;\r
+\r
+import java.io.File;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.junit.AfterClass;\r
+import static org.junit.Assert.*;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;\r
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;\r
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;\r
+import org.openecomp.sdc.toscaparser.api.NodeTemplate;\r
+\r
+public class ToscaParserStubsTest {\r
+\r
+ private static ISdcCsarHelper csarHelper;\r
+ private static SdcToscaParserFactory factory;\r
+\r
+\r
+ @BeforeClass\r
+ public static void init() throws SdcToscaParserException{\r
+ factory = SdcToscaParserFactory.getInstance();\r
+ //csarHelper = factory.getSdcCsarHelper("C:\\Users\\pa0916\\Desktop\\Work\\ASDC\\CSARs\\service-ServiceFdnt-csar-allotted-resources-4.csar");\r
+ String fileStr = ToscaParserStubsTest.class.getClassLoader().getResource("csars/service-ServiceFdnt-csar-allotted-resources-4.csar").getFile();\r
+ File file = new File(fileStr);\r
+ csarHelper = factory.getSdcCsarHelper(file.getAbsolutePath());\r
+ }\r
+\r
+\r
+ @Test\r
+ //TODO add rainy flows\r
+ public void testNumberOfVfSunnyFlow() throws SdcToscaParserException {\r
+ List<NodeTemplate> serviceVfList = csarHelper.getServiceVfList();\r
+ assertNotNull(serviceVfList);\r
+ assertEquals(1, serviceVfList.size());\r
+ }\r
+\r
+ @Test\r
+ //TODO add rainy flows\r
+ public void testNodeTemplateFlatProperty() throws SdcToscaParserException {\r
+ List<NodeTemplate> serviceVfList = csarHelper.getServiceVfList();\r
+ String nodeTemplatePropertyLeafValue = csarHelper.getNodeTemplatePropertyLeafValue(serviceVfList.get(0), "availability_zone_max_count");\r
+ assertEquals("2", nodeTemplatePropertyLeafValue);\r
+ }\r
+\r
+ @Test\r
+ //TODO add rainy flows\r
+ public void testNodeTemplateNestedProperty() throws SdcToscaParserException {\r
+ List<NodeTemplate> serviceVfList = csarHelper.getServiceVfList();\r
+ String nodeTemplatePropertyLeafValue = csarHelper.getNodeTemplatePropertyLeafValue(serviceVfList.get(0), "nf_role#nf_naming#instance_name");\r
+ assertEquals("FDNT_instance_VF", nodeTemplatePropertyLeafValue);\r
+ }\r
+\r
+ @Test\r
+ //TODO add rainy flows\r
+ public void testServiceNodeTemplatesByType() throws SdcToscaParserException {\r
+ List<NodeTemplate> serviceVfList = csarHelper.getServiceNodeTemplatesByType("org.openecomp.resource.vf.Fdnt");\r
+ assertNotNull(serviceVfList);\r
+ assertEquals(1, serviceVfList.size());\r
+ }\r
+\r
+ @Test\r
+ //TODO add rainy flows\r
+ public void testGetTypeOfNodeTemplate() {\r
+ List<NodeTemplate> serviceVfList = csarHelper.getServiceVfList();\r
+ String typeOfNodeTemplate = csarHelper.getTypeOfNodeTemplate(serviceVfList.get(0));\r
+ assertEquals("org.openecomp.resource.vf.Fdnt", typeOfNodeTemplate);\r
+ }\r
+\r
+\r
+ //@Test\r
+ //TODO add rainy flows\r
+ public void testGetServiceMetadata() {\r
+ //FAILS!! Metadata is null\r
+ Map<String, String> serviceMetadata = csarHelper.getServiceMetadata();\r
+ assertNotNull(serviceMetadata);\r
+ assertEquals("78c72999-1003-4a35-8534-bbd7d96fcae3", serviceMetadata.get("invariantUUID"));\r
+ assertEquals("Service FDNT", serviceMetadata.get("name"));\r
+ assertEquals("true", serviceMetadata.get("serviceEcompNaming"));\r
+ }\r
+\r
+ @Test\r
+ //TODO add rainy flows\r
+ public void testGetAllottedResources() {\r
+ List<NodeTemplate> allottedResources = csarHelper.getAllottedResources();\r
+ assertEquals(1, allottedResources.size());\r
+ }\r
+ \r
+ \r
+ @AfterClass\r
+ public static void close(){\r
+ factory.close();\r
+ }\r
+ }\r