diff options
author | Manzon, Inna (im453s) <im453s@intl.att.com> | 2019-01-22 10:45:12 +0200 |
---|---|---|
committer | Manzon, Inna (im453s) <im453s@intl.att.com> | 2019-01-22 14:16:31 +0200 |
commit | 8e4f8425e2a0bb7a9e6cadf48537bc93d4680e25 (patch) | |
tree | b99cad4bf656b00a05c5a489dc7a6e0e7dfa74b1 | |
parent | f88cee9d9e7e77dfdea743928199472dad7bde82 (diff) |
Fix NPE, add getters to IEntityDetails
Change-Id: Ia150f003fade5a276d785b2be90a8d9f63ab9f4e
Issue-ID: SDC-2057
Signed-off-by: Manzon, Inna (im453s) <im453s@intl.att.com>
15 files changed, 252 insertions, 28 deletions
@@ -7,7 +7,7 @@ <artifactId>sdc-tosca</artifactId> <name>sdc-sdc-tosca</name> <description>SDC Tosca Parser JAR file for use by consumers</description> - <version>1.4.12-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> @@ -118,7 +118,7 @@ <dependency> <groupId>org.onap.sdc.jtosca</groupId> <artifactId>jtosca</artifactId> - <version>1.4.10</version> + <version>1.5.0-SNAPSHOT</version> </dependency> diff --git a/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java index c4393cc..15bff9c 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java +++ b/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java @@ -14,7 +14,7 @@ public interface IEntityDetails { * Retrieves entity instance template type. * @return {@link EntityTemplateType} enum entry describing given object type */ - EntityTemplateType getType(); + EntityTemplateType getEntityType(); /** * Retrieves entity instance name @@ -22,6 +22,11 @@ public interface IEntityDetails { String getName(); /** + * Retrieves entity Tosca type + */ + String getToscaType(); + + /** * Retrieves entity {@link Metadata} object */ Metadata getMetadata(); @@ -33,6 +38,12 @@ public interface IEntityDetails { Map<String, Property> getProperties(); /** + * Retrieves member names of the entity instance + * @return List of member names + */ + List<String> getMembers(); + + /** * Retrieves member nodes of the entity instance * @return List of member nodes entity objects */ @@ -72,5 +83,5 @@ public interface IEntityDetails { /** * Retrieves list of policy target entity instances (groups or node templates) */ - List<IEntityDetails> getTargetNodes(); + List<IEntityDetails> getTargetEntities(); }
\ No newline at end of file diff --git a/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java b/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java index 129f7b4..12edd55 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java +++ b/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java @@ -665,7 +665,7 @@ public interface ISdcCsarHelper { * SDC (node template) type, tosca type as well as optional customizationUUID and UUID * @param topologyTemplateQuery parameters of the topology template containing the above entity. * Includes SDC type of the container and optional customizationUUID - * @param isRecursive indicates if the search within the required topology template is recursive. + * @param isRecursive indicates if the search is recursive starting from the required topology template . * @return list of @{@link IEntityDetails} objects containing information about the found entities. * If either no entities found or the provided query is incorrect, an empty list is returned */ diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java index 2567700..82e6fc6 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java +++ b/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java @@ -68,7 +68,7 @@ public abstract class EntityDetails implements IEntityDetails { } @Override - public List<IEntityDetails> getTargetNodes() { + public List<IEntityDetails> getTargetEntities() { return Collections.emptyList(); } @@ -87,6 +87,14 @@ public abstract class EntityDetails implements IEntityDetails { return pathBld.toString(); } + @Override + public String getToscaType() { + return entityTemplate.getType(); + } + + @Override + public List<String> getMembers() { return Collections.emptyList(); } + } diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java index 32a91aa..2777ab5 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java +++ b/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java @@ -29,7 +29,7 @@ public class GroupEntityDetails extends EntityDetails { } @Override - public EntityTemplateType getType() { + public EntityTemplateType getEntityType() { return EntityTemplateType.GROUP; } @@ -42,4 +42,12 @@ public class GroupEntityDetails extends EntityDetails { public Metadata getMetadata() { return group.getMetadata(); } + + @Override + public List<String> getMembers() { + if (group.getMembers() != null) { + return group.getMembers(); + } + return super.getMembers(); + } } diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java index ad3b1a0..5ee253d 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java +++ b/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java @@ -15,7 +15,7 @@ public class NodeTemplateEntityDetails extends EntityDetails { } @Override - public EntityTemplateType getType() { + public EntityTemplateType getEntityType() { return EntityTemplateType.NODE_TEMPLATE; } diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java index 7b97175..ab792d1 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java +++ b/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java @@ -21,7 +21,7 @@ public class PolicyEntityDetails extends EntityDetails { } @Override - public EntityTemplateType getType() { + public EntityTemplateType getEntityType() { return EntityTemplateType.POLICY; } @@ -39,7 +39,7 @@ public class PolicyEntityDetails extends EntityDetails { } @Override - public List<IEntityDetails> getTargetNodes() { + public List<IEntityDetails> getTargetEntities() { if (policy.getTargetsType().equals(NODE_TEMPLATES_TARGET_TYPE)) { return policy.getTargetsList() .stream() diff --git a/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java b/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java index 1ae3471..01c72d4 100644 --- a/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java +++ b/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java @@ -130,15 +130,22 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper { @Override public List<NodeTemplate> getPolicyTargetsFromOrigin(NodeTemplate nodeTemplate, String policyName) { - Optional<Policy> policyOpt = null; if(StringUtils.isNotEmpty(nodeTemplate.getName())){ - policyOpt = getNodeTemplateByName(nodeTemplate.getName()).getOriginComponentTemplate().getPolicies().stream().filter(p -> p.getName().equals(policyName)).findFirst(); - } - if(policyOpt.isPresent()){ - List<String> targets = policyOpt.get().getTargets(); - return nodeTemplate.getOriginComponentTemplate().getNodeTemplates() - .stream() - .filter(nt -> targets.contains(nt.getName())).collect(Collectors.toList()); + Optional<Policy> policyOpt = getNodeTemplateByName(nodeTemplate.getName()) + .getOriginComponentTemplate() + .getPolicies() + .stream() + .filter(p -> p.getName() + .equals(policyName)) + .findFirst(); + if(policyOpt.isPresent()){ + List<String> targets = policyOpt.get().getTargets(); + if (targets != null) { + return nodeTemplate.getOriginComponentTemplate().getNodeTemplates() + .stream() + .filter(nt -> targets.contains(nt.getName())).collect(Collectors.toList()); + } + } } return new ArrayList<>(); } @@ -178,7 +185,7 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper { return new ArrayList<>(); return toscaTemplate.getPolicies() .stream() - .filter(p -> p.getTargets().contains(nodeTemplateName)) + .filter(p -> p.getTargets()!= null && p.getTargets().contains(nodeTemplateName)) .collect(toList()); } diff --git a/src/test/java/org/onap/sdc/impl/GetEntityPortMirroringTest.java b/src/test/java/org/onap/sdc/impl/GetEntityPortMirroringTest.java new file mode 100644 index 0000000..aa33910 --- /dev/null +++ b/src/test/java/org/onap/sdc/impl/GetEntityPortMirroringTest.java @@ -0,0 +1,115 @@ +package org.onap.sdc.impl; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.sdc.tosca.parser.api.IEntityDetails; +import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; +import org.onap.sdc.tosca.parser.elements.queries.EntityQuery; +import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery; +import org.onap.sdc.tosca.parser.enums.SdcTypes; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.onap.sdc.tosca.parser.impl.SdcPropertyNames; +import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; +import org.onap.sdc.toscaparser.api.CapabilityAssignment; +import org.onap.sdc.toscaparser.api.RequirementAssignment; + +import java.net.URL; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class GetEntityPortMirroringTest { + + private final static String cap0 = "vepdg5afn0.vlb_1.port_mirroring_vlb_gn_vepdg_fn_5_RVMI"; + private final static String cap1 = "radcomfnvlbavf11_3_3vepdg0.abstract_vlbagentbase_eph_aff.port_mirroring_vlbagentbase_eph_aff_vlbagentbase_eph_aff_int_pktmirror_1_port"; + private static ISdcCsarHelper helper = null; + + @BeforeClass + public static void setUpClass() { + try { + URL resource = GetEntityPortMirroringTest.class.getClassLoader() + .getResource("csars/service-JennnyVepdgPortMirroringTest-csar.csar"); + if (resource != null) { + helper = SdcToscaParserFactory.getInstance().getSdcCsarHelper(resource.getFile()); + } + + } catch (SdcToscaParserException e) { + e.printStackTrace(); + } + } + + @Test + public void getServiceConfigurations() { + EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.CONFIGURATION) + .build(); + TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE) + .build(); + + List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false); + + assertEquals(1, entities.size()); + assertEquals("54308d8b-21ca-40a1-bd3e-efde64791605", entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)); + assertEquals("Port Mirroring Configuration", entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)); + assertEquals(2, entities.get(0).getRequirements().size()); + assertTrue(entities.get(0).getProperties().isEmpty()); + assertEquals(1, entities.get(0).getCapabilities().size()); + } + + @Test + public void getServiceProxyOnService() { + EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.SERVICE_PROXY) + .build(); + TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE) + .build(); + + List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false); + + assertEquals(2, entities.size()); + assertTrue("vEPDG-5A-FN SVC Service Proxy".equals(entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)) || + "vEPDG-5A-FN SVC Service Proxy".equals(entities.get(1).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME))); + assertTrue("Radcom FN vLBA SVC 11_3_3 vEPDG Service Proxy".equals(entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)) || + "Radcom FN vLBA SVC 11_3_3 vEPDG Service Proxy".equals(entities.get(1).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME))); + + assertTrue(entities.get(0).getRequirements().isEmpty()); + assertTrue(entities.get(0).getProperties().isEmpty()); + assertEquals(940, entities.get(0).getCapabilities().size()); + assertEquals(197, entities.get(1).getCapabilities().size()); + } + + @Test + public void getCapabilityForCOnfigurationRequirementOnService() { + EntityQuery entityQueryC = EntityQuery.newBuilder(SdcTypes.CONFIGURATION) + .build(); + + EntityQuery entityQueryS = EntityQuery.newBuilder(SdcTypes.SERVICE_PROXY) + .build(); + TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE) + .build(); + + List<IEntityDetails> configurationNodes = helper.getEntity(entityQueryC, topologyTemplateQuery, false); + List<IEntityDetails> proxyNodes = helper.getEntity(entityQueryS, topologyTemplateQuery, false); + + assertEquals(2, proxyNodes.size()); + assertEquals(1, configurationNodes.size()); + + Map<String, RequirementAssignment> reqMap = configurationNodes.get(0).getRequirements(); + assertEquals(cap0, reqMap.get("source").getCapabilityName()); + assertEquals(cap1, reqMap.get("collector").getCapabilityName()); + + assertTrue(isCapabilityFound(proxyNodes.get(0), cap0)); + assertTrue(isCapabilityFound(proxyNodes.get(1), cap1)); + } + + private boolean isCapabilityFound(IEntityDetails nodeDetails, String capName) { + List<CapabilityAssignment> assignments = nodeDetails.getCapabilities() + .values() + .stream() + .filter(ca->capName.equals(ca.getDefinition() + .getName())) + .collect(Collectors.toList()); + return assignments.size() == 1; + } +} diff --git a/src/test/java/org/onap/sdc/impl/GetEntityTest.java b/src/test/java/org/onap/sdc/impl/GetEntityTest.java index 5c19072..cd332e4 100644 --- a/src/test/java/org/onap/sdc/impl/GetEntityTest.java +++ b/src/test/java/org/onap/sdc/impl/GetEntityTest.java @@ -39,7 +39,7 @@ public class GetEntityTest { } } - @Test + @Test public void getCpEntitiesFromCVFC() { EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.CP) .build(); @@ -183,6 +183,7 @@ public class GetEntityTest { assertTrue(entities.get(0).getMemberNodes().get(0).getName().equals("abstract_rtp_msc") || entities.get(0).getMemberNodes().get(1).getName().equals("abstract_rtp_msc")); assertEquals(4, entities.get(0).getProperties().size()); + assertEquals(2, entities.get(0).getMembers().size()); assertTrue(entities.get(0).getRequirements().isEmpty()); } @@ -198,7 +199,11 @@ public class GetEntityTest { List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false); assertEquals(1, entities.size()); + assertEquals("org.openecomp.groups.VfModule", entities.get(0).getToscaType()); + assertTrue(entities.get(0).getPath().isEmpty()); + assertTrue(entities.get(0).getMembers().isEmpty()); assertNull(entities.get(0).getParent()); + assertTrue(entities.get(0).getTargets().isEmpty()); } @Test @@ -211,7 +216,9 @@ public class GetEntityTest { List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, true); assertEquals(19, entities.size()); - assertTrue(entities.get(9).getTargetNodes().isEmpty()); + assertTrue(entities.get(9).getTargetEntities().isEmpty()); + assertEquals(1, entities.get(7).getMembers().size()); + assertEquals("org.openecomp.groups.VfModule", entities.get(7).getToscaType()); assertEquals("rtp_msc_subint_avpn_vmi_0", entities.get(5).getMemberNodes().get(0).getName()); } @@ -226,7 +233,9 @@ public class GetEntityTest { assertEquals(1, entities.size()); assertEquals("jennyvtsbcvlanvnf..External..0", entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)); - assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetNodes().get(0).getType()); + assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetEntities().get(0).getEntityType()); + assertEquals("org.openecomp.policies.External", entities.get(0).getToscaType()); + assertTrue(entities.get(0).getMembers().isEmpty()); assertEquals("jenny vTSBC vlan VNF 0", entities.get(0).getPath()); } @@ -252,7 +261,8 @@ public class GetEntityTest { List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false); assertEquals(1, entities.size()); - assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetNodes().get(0).getType()); + assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetEntities().get(0).getEntityType()); + assertTrue(entities.get(0).getMembers().isEmpty()); assertTrue(entities.get(0).getRequirements().isEmpty()); assertTrue(entities.get(0).getCapabilities().isEmpty()); assertEquals("jenny vTSBC vlan VNF 0", entities.get(0).getPath()); @@ -290,6 +300,8 @@ public class GetEntityTest { List<IEntityDetails> entities = helper.getEntity(null, topologyTemplateQuery, false); assertEquals(5, entities.size()); + assertEquals("org.openecomp.resource.vf.JennyVtsbcVlanVnf", entities.get(4).getToscaType()); + assertEquals("org.openecomp.groups.VfModule", entities.get(0).getToscaType()); } @@ -310,7 +322,15 @@ public class GetEntityTest { List<IEntityDetails> entities = helper.getEntity(null, topologyTemplateQuery, false); assertEquals(2, entities.size()); - assertTrue("ssc_subint_mis_vmi_0".equals(entities.get(0).getName()) || "ssc_subint_mis_vmi_0".equals(entities.get(1).getName())); + assertTrue(entities.get(1).getMembers().isEmpty()); + assertEquals("ssc_subint_mis_vmi_0", entities.get(0).getMembers().get(0)); + assertTrue("ssc_subint_mis_vmi_0".equals(entities.get(1).getName())); + assertTrue("vlan_subinterface_ssc_mis_group".equals(entities.get(0).getName())); + assertEquals("org.openecomp.resource.cp.nodes.heat.network.v2.contrailV2.VLANSubInterface", + entities.get(1).getToscaType()); + assertEquals("org.openecomp.groups.heat.HeatStack", entities.get(0).getToscaType()); + assertTrue(entities.get(0).getTargetEntities().isEmpty()); + } @Test diff --git a/src/test/java/org/onap/sdc/impl/ToscaParserPolicyTest.java b/src/test/java/org/onap/sdc/impl/ToscaParserPolicyTest.java new file mode 100644 index 0000000..f77b070 --- /dev/null +++ b/src/test/java/org/onap/sdc/impl/ToscaParserPolicyTest.java @@ -0,0 +1,55 @@ +package org.onap.sdc.impl; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; +import org.onap.sdc.toscaparser.api.NodeTemplate; +import org.onap.sdc.toscaparser.api.Policy; + +import java.net.URL; +import java.util.List; + +import static org.junit.Assert.assertTrue; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + +public class ToscaParserPolicyTest { + + private static ISdcCsarHelper helper = null; + + @BeforeClass + public static void setUpClass() { + try { + URL resource = GetEntityPortMirroringTest.class.getClassLoader() + .getResource("csars/service-CgnatFwVnfNc-csar.csar"); + if (resource != null) { + helper = SdcToscaParserFactory.getInstance().getSdcCsarHelper(resource.getFile()); + } + + } catch (SdcToscaParserException e) { + e.printStackTrace(); + } + } + + @Test + public void getPolicyOfTargetByNodeTemplate() { + List<NodeTemplate> vfList = helper.getServiceVfList(); + assertEquals(1, vfList.size()); + List<Policy> policies = helper.getPoliciesOfTarget(vfList.get(0)); + assertNotNull(policies); + assertTrue(policies.isEmpty()); + } + + @Test + public void getPolicyTargetFromOrigin() { + List<NodeTemplate> vfList = helper.getServiceVfList(); + assertEquals(1, vfList.size()); + List<NodeTemplate> targets = helper.getPolicyTargetsFromOrigin(vfList.get(0), "cgnatfwvnf_nc..External..0"); + assertNotNull(targets); + assertTrue(targets.isEmpty()); + } + + +} diff --git a/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java b/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java index cbd8e8a..afb5101 100644 --- a/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java +++ b/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java @@ -81,7 +81,7 @@ public class ToscaParserSubsMappingsTest extends SdcToscaParserBasicTest { // // CapabilityAssignment cCp = lCapabilitys.get(CPkeys.get(i)); // CapabilityTypeDef CpDef = cCp.getDefinition(); -// CapabilitiesTypes.add(CpDef.getType()); +// CapabilitiesTypes.add(CpDef.getEntityType()); // // //LinkedHashMap<String,Object> lProperties = cCp.getDefinition().getProperties(); // LinkedHashMap<String, Property> lPropertiesR = cCp.getProperties(); @@ -93,7 +93,7 @@ public class ToscaParserSubsMappingsTest extends SdcToscaParserBasicTest { // Property p = lPropertiesR.get(CP_Propkeys.get(j)); // // if(p != null){ -// String sPType = p.getType(); +// String sPType = p.getEntityType(); // Boolean bPRequired = p.isRequired(); // // System.out.println(sPType + " " + bPRequired); diff --git a/src/test/resources/csars/service-CgnatFwVnfNc-csar.csar b/src/test/resources/csars/service-CgnatFwVnfNc-csar.csar Binary files differnew file mode 100644 index 0000000..b4736cd --- /dev/null +++ b/src/test/resources/csars/service-CgnatFwVnfNc-csar.csar diff --git a/src/test/resources/csars/service-JennnyVepdgPortMirroringTest-csar.csar b/src/test/resources/csars/service-JennnyVepdgPortMirroringTest-csar.csar Binary files differnew file mode 100644 index 0000000..7e8ebb3 --- /dev/null +++ b/src/test/resources/csars/service-JennnyVepdgPortMirroringTest-csar.csar diff --git a/version.properties b/version.properties index 45ee9cd..011dc3c 100644 --- a/version.properties +++ b/version.properties @@ -4,8 +4,8 @@ # because they are used in Jenkins, whose plug-in doesn't support major=1 -minor=4 -patch=12 +minor=5 +patch=0 base_version=${major}.${minor}.${patch} |