Updated ServiceSpecificationRepoService to Send the Available Primitives through the Service Specifications

Closes #31 (closed)

Test Coverage

updateService Method

specFromNSDID_coverage

PrimitivesParser Class

PrimitivesParser_coverage

Edited by Eduardo Santos

Merge request reports

Loading
+10 −0
Changes for src/main/java/org/etsi/osl/tmf/scm633/reposervices/ServiceSpecificationRepoService.java: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -75,11 +75,13 @@ import org.etsi.osl.tmf.stm653.model.ServiceTestSpecificationUpdate;
import org.etsi.osl.tmf.stm653.reposervices.ServiceTestSpecificationRepoService;
import org.etsi.osl.tmf.util.AttachmentUtil;
import org.etsi.osl.tmf.util.KrokiClient;
import org.etsi.osl.tmf.util.PrimitivesParser;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.transform.ResultTransformer;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
@@ -1210,6 +1212,14 @@ public class ServiceSpecificationRepoService {
				logger.error("nsdid getConstituentVxF null returned: " + nsd.toString() );
			}

			/******************** Begin Primitives Handling ********************/

			JSONObject allPrimitives = PrimitivesParser.extractPrimitives(nsd);
    
            addServiceSpecCharacteristic(serviceSpec, "PrimitivesList", "NSPrimitives", new Any(allPrimitives.toString(), ""), EValueType.TEXT);

            /********************* End Primitives Handling *********************/
			
			
			ResourceSpecificationRef resourceSpecificationItemRef = new ResourceSpecificationRef();
			resourceSpecificationItemRef.setId( resourceNSD.getId() );
+540 −0

File added.

Preview size limit exceeded, changes collapsed.

+527 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −0
Changes for src/test/resources/reposervices/scm633/nsd.json: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
{"id":4,"owner":{"id":2,"organization":null,"firstname":null,"lastname":null,"email":null,"username":"admin","createdAt":null},"uuid":"da63085b-12f9-48a7-b4bb-e7039b128bc3","name":"tutorial_ns","iconsrc":null,"shortDescription":"tutorial_ns","longDescription":"tutorial_ns","version":"1.0","packageLocation":"http://10.255.28.246/osapi/packages/da63085b-12f9-48a7-b4bb-e7039b128bc3/tutorial_ns.tar.gz","dateCreated":1717002820596,"dateUpdated":1717002820596,"categories":null,"extensions":null,"validationJobs":null,"screenshots":null,"vendor":null,"published":false,"termsOfUse":null,"descriptor":"nsd:\n  nsd:\n  - description: Simple NS with one VNF and a single Virtual Link\n    df:\n    - id: default-df\n      vnf-profile:\n      - id: \"vnf1\"\n        virtual-link-connectivity:\n        - constituent-cpd-id:\n          - constituent-base-element-id: \"1\"\n            constituent-cpd-id: vnf-vdu1-ext # this must be equal to the vdu's ext-cpd's id \n          virtual-link-profile-id: mgmtnet_2\n        - constituent-cpd-id:\n          - constituent-base-element-id: \"1\"\n            constituent-cpd-id: vnf-vdu2-ext # this must be equal to the vdu's ext-cpd's id \n          virtual-link-profile-id: mgmtnet_2\n        vnfd-id: tutorial_vnf\n      - id: \"vnf2\"\n        virtual-link-connectivity:\n        - constituent-cpd-id:\n          - constituent-base-element-id: \"1\"\n            constituent-cpd-id: vnf-vdu1-ext # this must be equal to the vdu's ext-cpd's id \n          virtual-link-profile-id: mgmtnet_2\n        - constituent-cpd-id:\n          - constituent-base-element-id: \"1\"\n            constituent-cpd-id: vnf-vdu2-ext # this must be equal to the vdu's ext-cpd's id \n          virtual-link-profile-id: mgmtnet_2\n        vnfd-id: tutorial_vnf\n    id: tutorial_ns\n    name: tutorial_ns\n    version: \"1.0\"\n    virtual-link-desc:\n    - id: mgmtnet_2\n      mgmt-network: true\n      vim-network-name: new_5gasp\n    vnfd-id:\n    - tutorial_vnf","descriptorHTML":"<h3>tutorial_ns</h3><br><b>Vendor: </b>null<br><b>Version: </b>1.0<br><b>Description: </b>tutorial_ns<br><b>VNF Count: </b>1<br><b>VM Count: </b>0<br><b>vCPU Count: </b>0<br><b>Memory: </b>0 MB<br><b>Storage: </b>0 GB<br><h2>ConstituentVnfds</h2><br><b>VnfdId: </b>default-df<br>","valid":false,"validationStatus":"NOT_STARTED","packagingFormat":"OSMvTHIRTEEN","experimentOnBoardDescriptors":[{"id":4,"obMANOprovider":{"id":1,"name":"osm14","description":null,"vims":[{"id":1,"organization":null,"name":"Jarvis","email":null,"infrastructureStatus":"UNKNOWN","dateCreated":null,"datacentername":"osm14","vimid":"479356bf-72ff-4dfd-8483-5c23f48dd0bc","mp":null,"refSupportedImages":[]}],"supportedMANOplatform":{"id":1,"name":"OSMFOURTEEN","version":"OSMvTHIRTEEN","description":null},"apiEndpoint":"https://10.255.28.219:9999","authorizationBasicHeader":null,"username":"admin","password":"admin","project":"admin","enabledForONBOARDING":true,"enabledForSYNC":true},"onBoardingStatus":"ONBOARDED","lastOnboarding":1717002821939,"deployId":"9dc24900-e63e-4c0e-b686-ee2ef124c5c2","feedbackMessage":"NSD Onboarded Successfully","uuid":"c271dcf1-d823-4458-99dc-7fd80ba93a06","experimentMANOProviderID":"tutorial_ns","experimentid":4}],"constituentVxF":[{"membervnfIndex":"vnf2","vnfdidRef":"tutorial_vnf","vxfref":{"id":3,"owner":{"id":2,"organization":null,"firstname":null,"lastname":null,"email":null,"username":"admin","createdAt":null},"uuid":"0c3bb7df-5063-4844-818f-3a6b6507718e","name":"tutorial_vnf","iconsrc":null,"shortDescription":"tutorial_vnf","longDescription":null,"version":"1.0","packageLocation":"http://10.255.28.246/osapi/packages/0c3bb7df-5063-4844-818f-3a6b6507718e/tutorial_vnf.tar.gz","dateCreated":1717002803785,"dateUpdated":1717002803785,"categories":null,"extensions":null,"validationJobs":null,"screenshots":null,"vendor":null,"published":false,"termsOfUse":null,"descriptor":"vnfd:\n  description: A basic VNF descriptor with two VDUs\n  mgmt-cp: vnf-vdu1-ext\n  int-virtual-link-desc:\n  - id: internal-vl\n    flavour:\n    - id: internal-vl-flavor\n  product-name: tutorial_vnf\n  id: tutorial_vnf\n  df:\n  - id: default-df\n    instantiation-level:\n    - id: default-instantiation-level\n      vdu-level:\n      - number-of-instances: \"1\"\n        vdu-id: vdu1\n      - number-of-instances: \"1\"\n        vdu-id: vdu2\n    vdu-profile:\n    - id: vdu1\n      min-number-of-instances: \"1\"\n    - id: vdu2\n      min-number-of-instances: \"1\"\n    # Juju/LCM Actions\n    lcm-operations-configuration:\n      operate-vnf-op-config:\n        day1-2:\n        - execution-environment-list:\n          - id: configure-vnf\n            external-connection-point-ref: vnf-vdu1-ext\n            juju:\n              charm: simple-touch\n              proxy: true\n          id: tutorial_vnf\n          config-access:\n            ssh-access:\n              default-user: ubuntu\n              required: true\n          initial-config-primitive:\n          - execution-environment-ref: configure-vnf\n            name: config\n            parameter:\n            - name: ssh-hostname\n              value: <rw_mgmt_ip>\n            - name: ssh-username\n              value: ubuntu\n            - name: ssh-password\n              value: tutorial\n            seq: 1\n          config-primitive:\n          - name: run-touch-command\n            execution-environment-ref: configure-vnf\n            parameter:\n              - name: filename\n                data-type: STRING\n        #####################################\n        - execution-environment-list:\n          - id: vdu1-ee\n            external-connection-point-ref: vnf-vdu1-ext\n            juju:\n              charm: simple-touch\n              proxy: true\n          id: vdu1 # this must be equal to the vdu's id\n          config-access:\n            ssh-access:\n              default-user: ubuntu\n              required: true\n          initial-config-primitive:\n          - execution-environment-ref: vdu1-ee\n            name: config\n            parameter:\n            - name: ssh-hostname\n              value: <rw_mgmt_ip>\n            - name: ssh-username\n              value: ubuntu\n            - name: ssh-password\n              value: tutorial\n            seq: 1\n          config-primitive:\n          - name: run-touch-command\n            execution-environment-ref: vdu1-ee\n            parameter:\n              - name: filename\n                data-type: STRING\n        - execution-environment-list:\n          - id: vdu2-ee\n            #external-connection-point-ref: vnf-cp2-ext\n            juju:\n              charm: simple-touch\n              proxy: true\n          id: vdu2 # this must be equal to the vdu's id\n          config-access:\n            ssh-access:\n              default-user: ubuntu\n              required: true\n          initial-config-primitive:\n          - execution-environment-ref: vdu2-ee\n            name: config\n            parameter:\n            - name: ssh-hostname\n              value: <rw_mgmt_ip>\n            - name: ssh-username\n              value: ubuntu\n            - name: ssh-password\n              value: tutorial\n            seq: 1\n          config-primitive:\n          - name: run-touch-command\n            execution-environment-ref: vdu2-ee\n            parameter:\n              - name: filename\n                data-type: STRING\n  ext-cpd:\n  - id: vnf-vdu1-ext\n    int-cpd:\n      cpd: vdu1-int-out\n      vdu-id: vdu1\n  - id: vnf-vdu2-ext\n    int-cpd:\n      cpd: vdu2-int-out\n      vdu-id: vdu2\n  sw-image-desc:\n  - id: \"ubuntu-20.04-server-cloudimg-amd64\"\n    image: \"ubuntu-20.04-server-cloudimg-amd64\"\n    name: \"ubuntu-20.04-server-cloudimg-amd64\"\n  vdu:\n  - cloud-init-file: cloud-config.txt\n    id: vdu1\n    int-cpd:\n    - id: vdu1-int-out\n      virtual-network-interface-requirement:\n      - name: vdu1-out\n        virtual-interface:\n          type: PARAVIRT\n    - id: vdu1-int-in\n      int-virtual-link-desc: internal-vl\n      virtual-network-interface-requirement:\n      - name: vdu1-in\n        virtual-interface:\n          type: PARAVIRT\n    name: vdu1\n    sw-image-desc: \"ubuntu-20.04-server-cloudimg-amd64\"\n    virtual-compute-desc: vdu1-compute\n    virtual-storage-desc:\n    - vdu1-storage\n  - cloud-init-file: cloud-config.txt\n    id: vdu2\n    int-cpd:\n    - id: vdu2-int-out\n      virtual-network-interface-requirement:\n      - name: vdu2-out\n        virtual-interface:\n          type: PARAVIRT\n    - id: vdu2-int-in\n      int-virtual-link-desc: internal-vl\n      virtual-network-interface-requirement:\n      - name: vdu2-in\n        virtual-interface:\n          type: PARAVIRT\n    name: vdu2\n    sw-image-desc: \"ubuntu-20.04-server-cloudimg-amd64\"\n    virtual-compute-desc: vdu2-compute\n    virtual-storage-desc:\n    - vdu2-storage\n  version: \"1.0\"\n  virtual-compute-desc:\n  - id: vdu1-compute\n    virtual-cpu:\n      num-virtual-cpu: \"1\"\n    virtual-memory:\n      size: \"1.0\"\n  - id: vdu2-compute\n    virtual-cpu:\n      num-virtual-cpu: \"1\"\n    virtual-memory:\n      size: \"1.0\"\n  virtual-storage-desc:\n  - id: vdu1-storage\n    size-of-storage: \"10\"\n  - id: vdu2-storage\n    size-of-storage: \"10\"","descriptorHTML":"<h3>tutorial_vnf</h3><br><b>Vendor: </b>null<br><b>Version: </b>1.0<br><b>Description: </b>null<br><b>VM Count: </b>2<br><b>vCPU Count: </b>1<br><b>Memory: </b>1 MB<br><b>Storage: </b>10 GB<br>","certified":false,"certifiedBy":null,"validationStatus":"UNDER_REVIEW","packagingFormat":"OSMvTHIRTEEN","supportedMANOPlatforms":null,"vxfOnBoardedDescriptors":null,"vfimagesVDU":null}},{"membervnfIndex":"vnf1","vnfdidRef":"tutorial_vnf","vxfref":{"id":3,"owner":{"id":2,"organization":null,"firstname":null,"lastname":null,"email":null,"username":"admin","createdAt":null},"uuid":"0c3bb7df-5063-4844-818f-3a6b6507718e","name":"tutorial_vnf","iconsrc":null,"shortDescription":"tutorial_vnf","longDescription":null,"version":"1.0","packageLocation":"http://10.255.28.246/osapi/packages/0c3bb7df-5063-4844-818f-3a6b6507718e/tutorial_vnf.tar.gz","dateCreated":1717002803785,"dateUpdated":1717002803785,"categories":null,"extensions":null,"validationJobs":null,"screenshots":null,"vendor":null,"published":false,"termsOfUse":null,"descriptor":"vnfd:\n  description: A basic VNF descriptor with two VDUs\n  mgmt-cp: vnf-vdu1-ext\n  int-virtual-link-desc:\n  - id: internal-vl\n    flavour:\n    - id: internal-vl-flavor\n  product-name: tutorial_vnf\n  id: tutorial_vnf\n  df:\n  - id: default-df\n    instantiation-level:\n    - id: default-instantiation-level\n      vdu-level:\n      - number-of-instances: \"1\"\n        vdu-id: vdu1\n      - number-of-instances: \"1\"\n        vdu-id: vdu2\n    vdu-profile:\n    - id: vdu1\n      min-number-of-instances: \"1\"\n    - id: vdu2\n      min-number-of-instances: \"1\"\n    # Juju/LCM Actions\n    lcm-operations-configuration:\n      operate-vnf-op-config:\n        day1-2:\n        - execution-environment-list:\n          - id: configure-vnf\n            external-connection-point-ref: vnf-vdu1-ext\n            juju:\n              charm: simple-touch\n              proxy: true\n          id: tutorial_vnf\n          config-access:\n            ssh-access:\n              default-user: ubuntu\n              required: true\n          initial-config-primitive:\n          - execution-environment-ref: configure-vnf\n            name: config\n            parameter:\n            - name: ssh-hostname\n              value: <rw_mgmt_ip>\n            - name: ssh-username\n              value: ubuntu\n            - name: ssh-password\n              value: tutorial\n            seq: 1\n          config-primitive:\n          - name: run-touch-command\n            execution-environment-ref: configure-vnf\n            parameter:\n              - name: filename\n                data-type: STRING\n        #####################################\n        - execution-environment-list:\n          - id: vdu1-ee\n            external-connection-point-ref: vnf-vdu1-ext\n            juju:\n              charm: simple-touch\n              proxy: true\n          id: vdu1 # this must be equal to the vdu's id\n          config-access:\n            ssh-access:\n              default-user: ubuntu\n              required: true\n          initial-config-primitive:\n          - execution-environment-ref: vdu1-ee\n            name: config\n            parameter:\n            - name: ssh-hostname\n              value: <rw_mgmt_ip>\n            - name: ssh-username\n              value: ubuntu\n            - name: ssh-password\n              value: tutorial\n            seq: 1\n          config-primitive:\n          - name: run-touch-command\n            execution-environment-ref: vdu1-ee\n            parameter:\n              - name: filename\n                data-type: STRING\n        - execution-environment-list:\n          - id: vdu2-ee\n            #external-connection-point-ref: vnf-cp2-ext\n            juju:\n              charm: simple-touch\n              proxy: true\n          id: vdu2 # this must be equal to the vdu's id\n          config-access:\n            ssh-access:\n              default-user: ubuntu\n              required: true\n          initial-config-primitive:\n          - execution-environment-ref: vdu2-ee\n            name: config\n            parameter:\n            - name: ssh-hostname\n              value: <rw_mgmt_ip>\n            - name: ssh-username\n              value: ubuntu\n            - name: ssh-password\n              value: tutorial\n            seq: 1\n          config-primitive:\n          - name: run-touch-command\n            execution-environment-ref: vdu2-ee\n            parameter:\n              - name: filename\n                data-type: STRING\n  ext-cpd:\n  - id: vnf-vdu1-ext\n    int-cpd:\n      cpd: vdu1-int-out\n      vdu-id: vdu1\n  - id: vnf-vdu2-ext\n    int-cpd:\n      cpd: vdu2-int-out\n      vdu-id: vdu2\n  sw-image-desc:\n  - id: \"ubuntu-20.04-server-cloudimg-amd64\"\n    image: \"ubuntu-20.04-server-cloudimg-amd64\"\n    name: \"ubuntu-20.04-server-cloudimg-amd64\"\n  vdu:\n  - cloud-init-file: cloud-config.txt\n    id: vdu1\n    int-cpd:\n    - id: vdu1-int-out\n      virtual-network-interface-requirement:\n      - name: vdu1-out\n        virtual-interface:\n          type: PARAVIRT\n    - id: vdu1-int-in\n      int-virtual-link-desc: internal-vl\n      virtual-network-interface-requirement:\n      - name: vdu1-in\n        virtual-interface:\n          type: PARAVIRT\n    name: vdu1\n    sw-image-desc: \"ubuntu-20.04-server-cloudimg-amd64\"\n    virtual-compute-desc: vdu1-compute\n    virtual-storage-desc:\n    - vdu1-storage\n  - cloud-init-file: cloud-config.txt\n    id: vdu2\n    int-cpd:\n    - id: vdu2-int-out\n      virtual-network-interface-requirement:\n      - name: vdu2-out\n        virtual-interface:\n          type: PARAVIRT\n    - id: vdu2-int-in\n      int-virtual-link-desc: internal-vl\n      virtual-network-interface-requirement:\n      - name: vdu2-in\n        virtual-interface:\n          type: PARAVIRT\n    name: vdu2\n    sw-image-desc: \"ubuntu-20.04-server-cloudimg-amd64\"\n    virtual-compute-desc: vdu2-compute\n    virtual-storage-desc:\n    - vdu2-storage\n  version: \"1.0\"\n  virtual-compute-desc:\n  - id: vdu1-compute\n    virtual-cpu:\n      num-virtual-cpu: \"1\"\n    virtual-memory:\n      size: \"1.0\"\n  - id: vdu2-compute\n    virtual-cpu:\n      num-virtual-cpu: \"1\"\n    virtual-memory:\n      size: \"1.0\"\n  virtual-storage-desc:\n  - id: vdu1-storage\n    size-of-storage: \"10\"\n  - id: vdu2-storage\n    size-of-storage: \"10\"","descriptorHTML":"<h3>tutorial_vnf</h3><br><b>Vendor: </b>null<br><b>Version: </b>1.0<br><b>Description: </b>null<br><b>VM Count: </b>2<br><b>vCPU Count: </b>1<br><b>Memory: </b>1 MB<br><b>Storage: </b>10 GB<br>","certified":false,"certifiedBy":null,"validationStatus":"UNDER_REVIEW","packagingFormat":"OSMvTHIRTEEN","supportedMANOPlatforms":null,"vxfOnBoardedDescriptors":null,"vfimagesVDU":null}}]}
 No newline at end of file
+30 −0
Changes for pom.xml: 30 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -303,6 +303,11 @@
			<version>2.0.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20210307</version>
		</dependency>
	</dependencies>

	<build>
@@ -444,6 +449,31 @@
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>3.2.5</version>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>0.8.12</version>
				<executions>
					<execution>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
					</execution>
					<execution>
						<id>report</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>report</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>

	</build>
Loading