sonata-nfv / son-tests

SONATA's Service Platform Tests for Integration and Qualification environments
http://www.sonata-nfv.eu/
Apache License 2.0
0 stars 11 forks source link

SLM FLM IA Deploy Service #244

Open felipevicens opened 7 years ago

felipevicens commented 7 years ago

Implement the integration test between SLM FLM IA when deploy a service.

This test targets the integration between the MANO framework, in particular the Service Lifecycle Management (SLM) plugin, the Function Lifecycle Management (FLM), and the Infrastructure Adaptor (IA). The purpose of this test is to trigger the SLM to deploy a new service instance. For this, a message is injected from the Jenkins Job into the service platform message bus. This triggers the SLM, which uses the message bus to publish a message to infrastructure.compute.list, in order to retrieve a list of the VIMs available to host the service, along with resource availability information, such as resource quota limits and utilisation.

The SLM uses this resource information to calculate a placement of the service, and sends a request to the IA with the list of selected PoP (VIM) where the service will be deployed, along with the list of the VM images that need to be pre-loaded on the PoPs. The VIM adaptor receives the message and connect to each VIM listed in the payload to pre-load the given VM images and to create a stack template with the basic networks and environment resource and pushes it to the OpenStack Heat endpoint. Once the deployment is over, it returns a response message to the SLM.

The SLM can then start the VNF deployment. For each VNF in the service, the SLM will trigger the FLM to deploy it, by sending it the relevant VNF descriptor (VNFD) on the mano.function.deploy topic. To request the deployment of the VNF, the FLM will publish a message on the topic "infrastructure.function.deploy" containing the VNFD, the UUID of the VIM where the function should be deployed, as calculated by the placement, and other context information. The Infrastructure Abstraction layer uses the VIM Adaptor to translate the descriptors in the VIM specific language and connects to OpenStack Heat for the deployment. The VIM Adaptor waits for the stack to be updated or for an error message from the VIM. Once the deployment is completed, the VIM Adaptor collects the relevant instance information from OpenStack, forges the response message and sends it to the FLM. The FLM builds the record associated with this running VNF, and sends it to the SLM.

Next, the SLM requests the IA the chain the deployed VNFs together into a service. This is done by sending the NSD to the IA on the infrastructure.service.chain topic. Once finished, the IA responses with an indication whether the chaining was successful. If successful, the SLM requests the IA to configure the WAN, so that traffic can start flowing through the VNFs. This is done on the infrastucture.wan.configure topic, to which the IA again replies with a status indicating the whether the WAN was configured successfully or not.

DarioValocchi commented 7 years ago

Ideally, the flow selection (R1 and R2 deployment flow) is based on the "descriptor_version" field of the service descriptor that is pushed to the SLM. As such, the integration test for the R2 deployment flow is already implemented in https://jenkins.sonata-nfv.eu/view/INTEGRATION/job/int-11-slm-infrabstract-V2/, that uses V2 descriptors. Flow R1 is still tested with https://jenkins.sonata-nfv.eu/view/INTEGRATION/job/int-11-slm-infrabstract-V1/