NFVO API - get.openbaton.orgget.openbaton.org/api/ApiDoc.pdf · 2 2.1. Getting the NFVO ... This...

143
NFVO API v3.2.0

Transcript of NFVO API - get.openbaton.orgget.openbaton.org/api/ApiDoc.pdf · 2 2.1. Getting the NFVO ... This...

NFVO APIv3.2.0

Table of Contents1. Getting started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.1. Retrieving a token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

2. NFVO information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2

2.1. Getting the NFVO version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2

2.2. Getting a bash script for the Open Baton CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2

3. Network Service Descriptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4

3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4

3.2. Adding a Network Service Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4

3.3. Adding a Network Service Descriptor from the marketplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7

3.4. Retrieving all Network Service Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12

3.5. Retrieving a Network Service Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17

3.6. Updating a Network Service Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23

3.7. Removing a Network Service Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31

3.8. Removing multiple Network Service Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31

4. Virtual NetworkFunction Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32

4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32

4.2. Adding a Virtual Network Function Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32

4.3. Retrieving all Virtual Network Function Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34

4.4. Retrieving a Virtual Network Function Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38

4.5. Updating a Virtual Network Function Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  42

4.6. Removing a Virtual Network Function Descriptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  45

4.7. Removing multiple Virtual Network Function Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46

4.8. Adding a Virtual Network Function Descriptor to a NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46

4.9. Retrieving all Virtual Network Function Descriptors of a NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  51

4.10. Retrieving a Virtual Network Function Descriptor of a NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  55

4.11. Updating a Virtual Network Function Descriptor of a NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59

4.12. Removing a Virtual Network Function Descriptor from a NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  64

5. Network Service Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  65

5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  65

5.2. Deploying a Network Service Record from an existing NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  65

5.3. Retrieving all Network Service Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  70

5.4. Retrieving a Network Service Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  74

5.5. Updating a Network Service Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  80

5.6. Removing a Network Service Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  85

5.7. Removing multiple Network Service Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  86

5.8. Resume a failed Network Service Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  86

6. Virtual Network Function Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  87

6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  87

6.2. Retrieving all Virtual Network Function Records from a NSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  87

6.3. Retrieving a Virtual Network Function Record from a NSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  90

6.4. Deleting a Virtual Network Function Record from a NSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  94

6.5. Retrieving a Virtual Network Function Record’s lifecycle event history . . . . . . . . . . . . . . . . . . . . . .  95

6.6. Starting a VNFCInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  96

6.7. Stopping a VNFCInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  96

7. VimInstance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  98

7.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  98

7.2. Adding a VimInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  98

7.3. Retrieving all VimInstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  100

7.4. Retrieving a VimInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  102

7.5. Updating a VimInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  105

7.6. Removing a VimInstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  107

8. VNFPackage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  109

8.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  109

8.2. Adding a VNFPackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  109

8.3. Adding a VNFPackage from the Open Baton marketplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  109

8.4. Retrieving all VNFPackages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110

8.5. Retrieving a VNFPackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111

8.6. Updating a VNFPackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113

8.7. Removing a VNFPackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115

8.8. Removing multiple VNFPackages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116

9. User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  117

9.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  117

9.2. Adding a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  117

9.3. Retrieving all Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  118

9.4. Retrieving a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119

9.5. Retrieving the current User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  120

9.6. Updating a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  121

9.7. Changing the current User’s password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  123

9.8. Changing a User’s password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124

9.9. Removing a User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124

10. Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126

10.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126

10.2. Adding a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126

10.3. Retrieving all Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  127

10.4. Retrieving a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  128

10.5. Updating a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  129

10.6. Removing a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  130

10.7. Removing multiple Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  131

11. Key. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  132

11.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  132

11.2. Importing a Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  132

11.3. Retrieving all Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  132

11.4. Retrieving a Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  133

11.5. Removing a Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  134

11.6. Removing multiple Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  135

12. Virtual Network Function Manager (VNFM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  136

12.1. Retrieving all registered VNFM endpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  136

12.2. Retrieving a registered VNFM’s endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  136

12.3. Deleting a registered VNFM from the NFVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  138

13. Other Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139

13.1. VNFRecordDependency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139

13.2. LifecycleEvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139

13.3. Virtual Network Function Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139

13.4. VirtualDeploymentUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139

Chapter 1. Getting startedThis document describes the REST API provided by the Network Function Virtualization Orchestrator(NFVO).To send REST requests to the NFVO you first have to get a token which you then have to pass in theheader of every request.

1.1. Retrieving a tokenYou can retrieve a token by executing this curl request:

curl -v -u openbatonOSClient:secret -X POST http://localhost:8080/oauth/token -H

"Accept:application/json" -d "username=admin&password=openbaton&grant_type=password"

Depending on your credentials you may have to change the username and password field in therequest and the host and port.The answer from the orchestrator will look something like this:

{"value": "b2816f07-28ad-4c28-8b03-bba9aeed0612","expiration": "Jul 20, 2016 2:24:57 AM","tokenType": "bearer","refreshToken": {"expiration": "Aug 18, 2016 2:24:57 PM","value": "572a429b-918d-497a-bb70-3e1441bd6263"},"scope": ["read","write"],"additionalInformation": {}}

The value field contains the token. In this case b2816f07-28ad-4c28-8b03-bba9aeed0612.

1

Chapter 2. NFVO information

2.1. Getting the NFVO versionGET request{host}/api/v1/main/version

2.1.1. Example request

$ curl 'http://localhost:8080/api/v1/main/version' -i -H 'Accept: text/plain' -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

2.1.2. Example response

HTTP/1.1 200 OKContent-Type: text/plainContent-Length: 5

3.2.0

2.2. Getting a bash script for the Open Baton CLIThis API call will return a bash script that can be executed and that will set all the requiredenvironment variables necessary to work with the Open Baton CLIGET request{host}/api/v1/main/openbaton-rc

2.2.1. Example request

$ curl 'http://localhost:8080/api/v1/main/openbaton-rc' -i -H 'Accept: application/octet-stream' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'project-id:8a387f1e-9a42-43c7-bab0-3915719c6fca'

2.2.2. Example response

2

HTTP/1.1 200 OKContent-Type: text/plain;charset=ISO-8859-1Content-Length: 331

#!/bin/bash

unset OB_NFVO_IPunset OB_NFVO_PORTunset OB_PROJECT_IDunset OB_USERNAMEunset OB_PASSWORD

export OB_NFVO_IP=192.168.2.45export OB_NFVO_PORT=8080export OB_PROJECT_ID=8a387f1e-9a42-43c7-bab0-3915719c6fcaexport OB_USERNAME=usernameecho -n Insert Open Baton Password:read -s passwordexport OB_PASSWORD=$password

3

Chapter 3. Network Service Descriptor

3.1. OverviewA NSD contains the values which describe a network service like the Virtual Network FunctionDescriptors and dependencies between those.For more details see http://openbaton.github.io/documentation/ns-descriptor.

3.2. Adding a Network Service DescriptorPOST request with NSD as JSON content of the request body{host}/api/v1/ns-descriptors

3.2.1. Request structure

Path Type Description

name String The NSD’s name

vendor String The vendor of the NSD

version String The NSD’s version

vld Array An array ofVirtualLinkDescriptors

vnf_dependency Array An array of VNFDependencies

vnfd Array An array ofVirtualNetworkFunctionDescriptors

hb_version String _

enabled Boolean _

3.2.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors' -i -X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "vnfd" : [ {  "lifecycle_event" : [ {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {

4

  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "serverVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 1,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "server",  "endpoint" : "generic",  "cyclicDependency" : false,  "hb_version" : 0,  "name" : "iperf-server",  "vendor" : "FOKUS",  "version" : "1"  }, {

5

  "lifecycle_event" : [ {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  }, {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "clientVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 2,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "client",  "endpoint" : "generic",  "cyclicDependency" : false,

6

  "hb_version" : 0,  "name" : "iperf-client",  "vendor" : "FOKUS",  "version" : "1"  } ],  "vnf_dependency" : [ ],  "enabled" : false,  "hb_version" : 0,  "name" : "iperf-nsd",  "vendor" : "FOKUS",  "version" : "1",  "vld" : [ ]}'

3.2.3. Example response

HTTP/1.1 201 Created

3.3. Adding a Network Service Descriptor from themarketplacePUT request with the a JSON object in the request body containing a field named link{host}/api/v1/ns-descriptors/marketdownload

3.3.1. Request structure

Path Type Description

link String The link to the NSD in the OpenBaton marketplace

3.3.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/marketdownload' -i -X POST -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "link" : "http://marketplace.openbaton.org:8082/api/v1/nsds/fokus/Iperf/2.1.1-json/json"}'

7

3.3.3. Example response

HTTP/1.1 201 CreatedContent-Type: application/json;charset=UTF-8Content-Length: 6705

{  "id" : "573aa807-b969-4bfd-95fa-f7abbe866bad",  "hb_version" : 0,  "name" : "iperf-nsd",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "1",  "vnffgd" : [ ],  "vld" : [ {  "id" : "129c83ce-8c04-4a24-b54f-eddb64a9dfe4",  "hb_version" : 0,  "extId" : "920c21da-3c04-42f3-b54f-etzb64f7dfe2",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "descriptor_version" : "0.1",  "number_of_endpoints" : 0,  "connection" : [ ],  "vld_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  }  } ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "vnfd" : [ {  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],

8

  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],

9

  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  }, {  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },

10

  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],

11

  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  } ],  "vnf_dependency" : [ ],  "pnfd" : [ ],  "nsd_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  },  "enabled" : false}

3.4. Retrieving all Network Service DescriptorsGET request{host}/api/v1/ns-descriptors

3.4.1. Response structure

Path Type Description

[] Object The array ofNetworkServiceDescriptors

3.4.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

12

3.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 6709

[ {  "id" : "573aa807-b969-4bfd-95fa-f7abbe866bad",  "hb_version" : 0,  "name" : "iperf-nsd",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "1",  "vnffgd" : [ ],  "vld" : [ {  "id" : "129c83ce-8c04-4a24-b54f-eddb64a9dfe4",  "hb_version" : 0,  "extId" : "920c21da-3c04-42f3-b54f-etzb64f7dfe2",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "descriptor_version" : "0.1",  "number_of_endpoints" : 0,  "connection" : [ ],  "vld_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  }  } ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "vnfd" : [ {  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],

13

  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {

14

  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  }, {  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",

15

  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],

16

  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  } ],  "vnf_dependency" : [ ],  "pnfd" : [ ],  "nsd_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  },  "enabled" : false} ]

3.5. Retrieving a Network Service DescriptorGET requestthe id used in the url belongs to the NSD{host}/api/v1/ns-descriptors/{nsdId}

3.5.1. Response structure

Path Type Description

auto_scale_policy Array _

connection_point Array _

enabled Boolean _

hb_version Number _

id String The NSD’s id

17

Path Type Description

monitoring_parameter Array Used for fault management

name String The NSD’s name

nsd_security Object _

pnfd Array _

projectId String The id of the project to whichthis NSD belongs

service_deployment_flavour Array _

vendor String The vendor of the NSD

version String The NSD’s version

vld Array An array ofVirtualLinkDescriptors

vnf_dependency Array An array of VNFDependencies

vnfd Array An array ofVirtualNetworkFunctionDescriptors

vnffgd Array _

3.5.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e'-i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

3.5.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 6705

{  "id" : "573aa807-b969-4bfd-95fa-f7abbe866bad",  "hb_version" : 0,  "name" : "iperf-nsd",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "1",  "vnffgd" : [ ],

18

  "vld" : [ {  "id" : "129c83ce-8c04-4a24-b54f-eddb64a9dfe4",  "hb_version" : 0,  "extId" : "920c21da-3c04-42f3-b54f-etzb64f7dfe2",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "descriptor_version" : "0.1",  "number_of_endpoints" : 0,  "connection" : [ ],  "vld_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  }  } ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "vnfd" : [ {  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],

19

  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  }, {  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",

20

  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,

21

  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]

22

  }  },  "provides" : [ ]  } ],  "vnf_dependency" : [ ],  "pnfd" : [ ],  "nsd_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  },  "enabled" : false}

3.6. Updating a Network Service DescriptorPUT request with updated NSD as JSON content in request bodythe id in the url belongs to the NSD to update{host}/api/v1/ns-descriptors/{nsdId}

3.6.1. Request structure

Path Type Description

enabled Boolean _

hb_version Number _

name String The NSD’s name

vendor String The vendor of the NSD

version String The NSD’s version

vld Array An array ofVirtualLinkDescriptors

vnf_dependency Array An array of VNFDependencies

vnfd Array An array ofVirtualNetworkFunctionDescriptors

3.6.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e'-i -X PUT -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "vnfd" : [ {

23

  "lifecycle_event" : [ {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  }, {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "clientVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 2,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "client",  "endpoint" : "generic",  "cyclicDependency" : false,

24

  "hb_version" : 0,  "name" : "iperf-client",  "vendor" : "FOKUS",  "version" : "1"  }, {  "lifecycle_event" : [ {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "serverVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 1,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,

25

  "vcpus" : 2  } ],  "type" : "server",  "endpoint" : "generic",  "cyclicDependency" : false,  "hb_version" : 0,  "name" : "iperf-server",  "vendor" : "FOKUS",  "version" : "1"  } ],  "vnf_dependency" : [ ],  "enabled" : false,  "hb_version" : 0,  "name" : "iperf-nsd",  "vendor" : "FOKUS",  "version" : "1",  "vld" : [ ]}'

3.6.3. Example response

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 6705

{  "id" : "573aa807-b969-4bfd-95fa-f7abbe866bad",  "hb_version" : 0,  "name" : "iperf-nsd",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "1",  "vnffgd" : [ ],  "vld" : [ {  "id" : "129c83ce-8c04-4a24-b54f-eddb64a9dfe4",  "hb_version" : 0,  "extId" : "920c21da-3c04-42f3-b54f-etzb64f7dfe2",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "descriptor_version" : "0.1",

26

  "number_of_endpoints" : 0,  "connection" : [ ],  "vld_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  }  } ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "vnfd" : [ {  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },

27

  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  }, {  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",

28

  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",

29

  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]  } ],  "vnf_dependency" : [ ],  "pnfd" : [ ],  "nsd_security" : {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  },  "enabled" : false}

30

3.7. Removing a Network Service DescriptorDELETE requestthe id in the url belongs to the NSD to delete{host}/api/v1/ns-descriptors/{nsdId}

3.7.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e'-i -X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization:Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

3.7.2. Example response

HTTP/1.1 204 No Content

3.8. Removing multiple Network Service DescriptorsDELETE requestthe ids in the request body specify the NSDs to delete{host}/api/v1/ns-descriptors/multipledelete

3.8.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/multipledelete' -i -X DELETE -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -d '[ "55555c52-f952-430c-b093-45acb2bbf50e", "5c357f1e-9a42-c4a5-bab0-3916248c6fca" ]'

3.8.2. Example response

HTTP/1.1 204 No Content

31

Chapter 4. Virtual NetworkFunctionDescriptor

4.1. OverviewA VNF Descriptor (VNFD) is a deployment template which describes a VNF in terms of deployment andoperational behaviour requirements. The VNFD also contains connectivity and interface requirementsthat can be used to establish appropriate Virtual Links between the Virtual Network FunctionComponents of the VNF or from the VNF to another one.See also http://openbaton.github.io/documentation/vnf-descriptor.

4.2. Adding a Virtual Network Function DescriptorPOST request with VNFD as JSON content of the request body{host}/api/v1/vnf-descriptors/

4.2.1. Request structure

Path Type Description

configurations Object Configuration object to provideparameters to the NetworkService

cyclicDependency Boolean _

deployment_flavour Array The deployment flavour of thisVNFD

endpoint String The type of Vnfm in charge ofmanaging this VNF

hb_version Number _

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

name String The name of the VNFD

type String The type of the VNFD

vdu Array An aray ofVirtualDeploymentUnits

vendor String The vendor of the VNFD

32

Path Type Description

virtual_link Array Array of VirtualLinks, thatrepresent the type of networkconnectivity mandated by theVNF vendor between two ormore ConnectionPoints

version String The version of the VNFD

4.2.2. Example request

$ curl 'http://localhost:8080/api/v1/vnf-descriptors' -i -X POST -H 'project-id:8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "lifecycle_event" : [ {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "clientVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 2,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],

33

  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "client",  "endpoint" : "generic",  "cyclicDependency" : false,  "hb_version" : 0,  "name" : "iperf-client",  "vendor" : "FOKUS",  "version" : "1"}'

4.2.3. Example response

HTTP/1.1 201 Created

4.3. Retrieving all Virtual Network Function DescriptorsGET request{host}/api/v1/vnf-descriptors/

4.3.1. Response structure

Path Type Description

[] Object The array containing everyVNFD

4.3.2. Example request

$ curl 'http://localhost:8080/api/v1/vnf-descriptors' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

34

4.3.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 5262

[ {  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,

35

  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}, {  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,

36

  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],

37

  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]} ]

4.4. Retrieving a Virtual Network Function DescriptorGET requestthe id in the url belongs to the requested VNFD{host}/api/v1/vnf-descriptors/{vnfdId}

4.4.1. Response structure

38

Path Type Description

auto_scale_policy Array _

configurations Object Configuration object to provideparameters to the NetworkService

connection_point Array _

deployment_flavour Array The deployment flavour of thisVNFD

endpoint String The type of the Vnfm in chargeof managing this VNF

hb_version Number _

id String The VNFD’s id

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

manifest_file String _

manifest_file_security Array _

monitoring_parameter Array Used for fault management

name String The VNFD’s name

projectId String The id of the project to whichthis VNFD belongs

provides Array _

requires Object _

service_deployment_flavour Array _

type String The type of the VNFD

vendor String The vendor of the VNFD

version String The VNFD’s version

virtual_link Array Array of VirtualLinks, thatrepresent the type of networkconnectivity mandated by theVNF vendor between two ormore ConnectionPoints

vld Array An array ofVirtualLinkDescriptors

vnffgd Array _

39

Path Type Description

vnfPackageLocation String The url where the scripts for thelifecycle events are stored

vdu Array An aray ofVirtualDeploymentUnits

vdu_dependency Array _

4.4.2. Example request

$ curl 'http://localhost:8080/api/v1/vnf-descriptors/55553c52-f952-430c-b693-45aab2bbf58e' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization:Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

4.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 1998

{  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],

40

  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}

41

4.5. Updating a Virtual Network Function DescriptorPUT request with updated VNFD as JSON content in request bodythe id in the url belongs to the VNFD that shall be updated{host}/api/v1/vnf-descriptors/{vnfdId}

4.5.1. Request structure

Path Type Description

configurations Object Configuration object to provideparameters to the NetworkService

deployment_flavour Array The deployment flavour of thisVNFD

cyclicDependency Boolean _

endpoint String The type of the Vnfm in chargeof managing this VNF

hb_version Number _

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

name String The name of the VNFD

type String The type of the VNFD

vdu Array An aray ofVirtualDeploymentUnits

vendor String The vendor of the VNFD

version String The version of the VNFD

virtual_link Array Array of VirtualLinks, thatrepresent the type of networkconnectivity mandated by theVNF vendor between two ormore ConnectionPoints

4.5.2. Example request

$ curl 'http://localhost:8080/api/v1/vnf-descriptors/faba910d-449d-4146-b4ea-7373c515aebc' -i -X PUT -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type:application/json' -d '{

42

  "lifecycle_event" : [ {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "clientVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 2,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "client",  "endpoint" : "generic",  "cyclicDependency" : false,

43

  "hb_version" : 0,  "name" : "iperf-client",  "vendor" : "FOKUS",  "version" : "1"}'

4.5.3. Example response

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 1998

{  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"

44

  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}

4.6. Removing a Virtual Network Function DescriptorDELETE requestthe id in the url belongs to the VNFD to be deleted{host}/api/v1/vnf-descriptors/{vnfdId}

4.6.1. Example request

45

$ curl 'http://localhost:8080/api/v1/vnf-descriptors/faba910d-449d-4146-b4ea-7373c515aebc' -i -X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

4.6.2. Example response

HTTP/1.1 204 No Content

4.7. Removing multiple Virtual Network FunctionDescriptorsDELETE requestthe ids in the request body specify the VNFDs to delete{host}/api/v1/vnf-descriptors/multipledelete

4.7.1. Example request

$ curl 'http://localhost:8080/api/v1/vnf-descriptors/multipledelete' -i -X DELETE -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -d '[ "55555c52-f952-430c-b093-45acb2bbf50e", "5c357f1e-9a42-c4a5-bab0-3916248c6fca" ]'

4.7.2. Example response

HTTP/1.1 204 No Content

4.8. Adding a Virtual Network Function Descriptor to aNSDPOST request with VNFD as JSON content of the request bodythe id in the url belongs to the NSD to which the VNFD shall be added{host}/api/v1/ns-descriptors{nsdId}/vnfdescriptors/

4.8.1. Request structure

46

Path Type Description

configurations Object Configuration object to provideparameters to the NetworkService

cyclicDependency Boolean _

deployment_flavour Array The deployment flavour of thisVNFD

endpoint String The type of Vnfm in charge ofmanaging this VNF

hb_version Number _

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

name String The name of the VNFD

type String The type of the VNFD

vdu Array An aray ofVirtualDeploymentUnits

vendor String The vendor of the VNFD

virtual_link Array Array of VirtualLinks, thatrepresent the type of networkconnectivity mandated by theVNF vendor between two ormore ConnectionPoints

version String The version of the VNFD

4.8.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e/vnfdescriptors/' -i -X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H'Content-Type: application/json' -d '{  "lifecycle_event" : [ {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],

47

  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "serverVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 1,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "server",  "endpoint" : "generic",  "cyclicDependency" : false,  "hb_version" : 0,  "name" : "iperf-server",  "vendor" : "FOKUS",  "version" : "1"}'

48

4.8.3. Example response

HTTP/1.1 201 CreatedContent-Type: application/jsonContent-Length: 3258

{  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",

49

  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {

50

  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}

4.9. Retrieving all Virtual Network Function Descriptorsof a NSDGET requestthe id in the url belongs to the NSD from which the VNFDs shall be retrieved{host}/api/v1/ns-descriptors/{nsdId}/vnfdescriptors/

4.9.1. Response structure

Path Type Description

[] Object The array containing the VNFDsof the NSD with the specified id

4.9.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e/vnfdescriptors' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

4.9.3. Example response

HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 5262

[ {

51

  "id" : "90f6f488-ade0-4ae4-976d-9e34553603ca",  "hb_version" : 1,  "name" : "iperf-client",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "FOKUS",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "3add5745-d582-43f4-b643-940c06022f11",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "server_start-client.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]

52

  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "client",  "endpoint" : "generic",  "vnfPackageLocation" : "b42340e7-09c1-4768-ab09-5886ec3e3444",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}, {  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {

53

  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",

54

  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]} ]

4.10. Retrieving a Virtual Network Function Descriptorof a NSDGET requestthe first id in the url belongs to the NSD that contains the VNFDthe second id in the url belongs to the requested VNFD{host}/api/v1/ns-descriptors/{nsdId}/vnfdescriptors/{vnfdId}

4.10.1. Response structure

Path Type Description

auto_scale_policy Array _

configurations Object Configuration object to provideparameters to the NetworkService

55

Path Type Description

connection_point Array _

deployment_flavour Array The deployment flavour of thisVNFD

endpoint String The type of the Vnfm in chargeof managing this VNF

hb_version Number _

id String The VNFD’s id

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

manifest_file String _

manifest_file_security Array _

monitoring_parameter Array Used for fault management

name String The VNFD’s name

projectId String The id of the project to whichthis VNFD belongs

provides Array _

requires Object Describes dependencies to otherVNFD

service_deployment_flavour Array _

type String The type of the VNFD

vendor String The vendor of the VNFD

version String The VNFD’s version

virtual_link Array Array of VirtualLinks, thatrepresent the type of networkconnectivity mandated by theVNF vendor between two ormore ConnectionPoints

vld Array An array ofVirtualLinkDescriptors

vnffgd Array _

vnfPackageLocation String The url where the scripts for thelifecycle events are stored

56

Path Type Description

vdu Array An aray ofVirtualDeploymentUnits

vdu_dependency Array _

4.10.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e/vnfdescriptors/faaa910d-457d-4148-b4ea-7373b515febc' -i -H 'project-id:8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

4.10.3. Example response

HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 3258

{  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",

57

  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {

58

  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}

4.11. Updating a Virtual Network Function Descriptor ofa NSDPUT request with updated VNFD as JSON content in request bodythe first id in the url belongs to the nsd containing the VNFDthe second id in the url belongs to the VNFD that shall be updated{host}/api/v1/ns-descriptors/{nsdId}/vnfdescriptors/{vnfdId}

4.11.1. Request structure

59

Path Type Description

configurations Object Configuration object to provideparameters to the NetworkService

deployment_flavour Array The deployment flavour of thisVNFD

cyclicDependency Boolean _

endpoint String The type of the Vnfm in chargeof managing this VNF

hb_version Number _

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

name String The name of the VNFD

type String The type of the VNFD

vdu Array An aray ofVirtualDeploymentUnits

vendor String The vendor of the VNFD

version String The version of the VNFD

virtual_link Array Array of VirtualLinks, thatrepresent the type of networkconnectivity mandated by theVNF vendor between two ormore ConnectionPoints

4.11.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e/vnfdescriptors/faaa910d-457d-4148-b4ea-7373b515febc' -i -X PUT -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "lifecycle_event" : [ {  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],

60

  "configurations" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "version" : 0,  "name" : "serverVdu1",  "vm_image" : [ "name of an image" ],  "scale_in_out" : 1,  "vnfc" : [ {  "version" : 0,  "connection_point" : [ {  "virtual_link_reference" : "networkA",  "interfaceId" : 0,  "version" : 0  } ]  } ],  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "hb_version" : 0,  "name" : "networkA"  } ],  "deployment_flavour" : [ {  "version" : 0,  "flavour_key" : "m1.small",  "ram" : 2048,  "disk" : 5,  "vcpus" : 2  } ],  "type" : "server",  "endpoint" : "generic",  "cyclicDependency" : false,  "hb_version" : 0,  "name" : "iperf-server",  "vendor" : "FOKUS",  "version" : "1"}'

61

4.11.3. Example response

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 3258

{  "id" : "40f3f488-ade0-4re4-976d-9e34253603aa",  "hb_version" : 1,  "name" : "iperfserver",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "vendor" : "fokus",  "version" : "0.1",  "vnffgd" : [ ],  "vld" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : [ ],  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",

62

  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "vdu_dependency" : [ ],  "deployment_flavour" : [ ],  "manifest_file" : "manifestFile",  "manifest_file_security" : [ {

63

  "id" : "965c21da-3c04-43f3-b54f-eadb34f7dda2",  "version" : 1  } ],  "type" : "server",  "endpoint" : "generic",  "vnfPackageLocation" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "requires" : {  "server" : {  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594",  "version" : 0,  "parameters" : [ "private_floatingIp", "network" ]  }  },  "provides" : [ ]}

4.12. Removing a Virtual Network Function Descriptorfrom a NSDDELETE requestthe first id in the url belongs to the NSD that contains the VNFDthe secind id belongs to the VNFD to be deleted{host}/api/v1/ns-descriptors/{nsdId}/vnfdescriptors/{vnfdId}

4.12.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-descriptors/55555c52-f952-430c-b093-45acb2bbf50e/vnfdescriptors/faaa910d-457d-4148-b4ea-7373b515febc' -i -X DELETE -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

4.12.2. Example response

HTTP/1.1 204 No Content

64

Chapter 5. Network Service Record

5.1. OverviewA Network Service Record is deployed from a NSD.

5.2. Deploying a Network Service Record from anexisting NSDPOST requestthe id in the url belongs to the NSD from which the NSR should be created{host}/api/v1/ns-records/{nsdId}

5.2.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/c60ec37a-654a-4605-93fb-5a1932db6ecf' -i-X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "keys" : [ "keypair1", "keypair2", "keypair3" ],  "configurations" : {  "iperfserver" : {  "version" : 0,  "configurationParameters" : [ {  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  }  },  "vduVimInstances" : {  "clientVdu1" : [ "vim-instance" ],  "serverVdu1" : [ "vim-instance" ]  }}'

5.2.2. Example response

HTTP/1.1 201 CreatedContent-Type: application/jsonContent-Length: 6352

65

{  "id" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : {  "id" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "version" : 0,  "flavour_key" : "flavourKey",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1,  "constituent_vnf" : [ {  "id" : "492da364-25d7-7654-da74-128d8caf4721",  "vnf_reference" : "485139cd-74dc-af3d-7593-12d78c51af12",  "vnf_flavour_id_reference" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "redundancy_model" : "ACTIVE",  "affinity" : "affinity",  "capability" : "capability",  "number_of_instances" : 2  } ]  },  "vendor" : "FOKUS",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "task" : "Onboarding",  "version" : "1.0",  "vlr" : [ ],  "vnfr" : [ {  "id" : "293e6a52-c6df-40c0-8f8a-58911bb9319b",  "hb_version" : 4,  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "deployment_flavour_key" : "m1.small",  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"

66

  },  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "lifecycle_event_history" : [ {  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted tobe deployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"  } ],  "localization" : "berlin",  "monitoring_parameter" : [ ],  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",

67

  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "vendor" : "FOKUS",  "version" : "0.1",  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "parent_ns_id" : "f9ba54f2-a825-47b0-9c3e-e00275faf169",  "descriptor_reference" : "0a60d551-5498-40cc-a0ef-279a10e72228",  "vnfm_id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "connected_external_virtual_link" : [ ],  "vnf_address" : [ "10.253.4.7" ],  "status" : "ACTIVE",  "notification" : [ ],  "audit_log" : "auditLog",  "runtime_policy_info" : [ ],  "name" : "iperfserver",  "type" : "server",  "endpoint" : "generic",  "task" : "start",  "requires" : {  "id" : "fe0c2cb2-e251-415a-b894-d04ddf8970dc",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "requires"  },  "provides" : {  "id" : "5b36d727-0a95-4be0-958e-7c94857d5c70",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],

68

  "name" : "provides"  },  "packageId" : "fcaa8993-b9d0-46c7-a258-85dd847c901f"  } ],  "vnf_dependency" : [ {  "id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "version" : 1,  "target" : "iperfclient",  "parameters" : {  "server" : {  "id" : "76046e27-aade-4f14-ad39-f2976532e5f2",  "version" : 6,  "parameters" : {  "private" : "10.231.5.1"  }  }  },  "vnfcParameters" : {  "server" : {  "vnfcId" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "id" : "01456d77-aade-4f14-ad39-f2976532e5e2",  "version" : 4,  "parameters" : {  "51e0f1a0-46f1-4fd2-8737-4dd51d4b57ed" : {  "id" : "77e44026-b609-41fb-8d24-7acf652c6488",  "version" : 6,  "parameters" : { }  }  }  }  },  "idType" : {  "iperfserver" : "server"  }  } ],  "lifecycle_event" : [ ],  "vnffgr" : [ ],  "pnfr" : [ ],  "faultManagementPolicy" : [ ],  "descriptor_reference" : "c60ec37a-654a-4605-93fb-5a1932db6ecf",  "resource_reservation" : "resourceReservation",  "runtime_policy_info" : "runtimePolicyInfo",  "status" : "ACTIVE",  "notification" : "notification",  "lifecycle_event_history" : [ ],  "audit_log" : "auditLog",  "createdAt" : "2016.08.15 at 14:22:26 CEST",  "keyNames" : [ "keyPair1", "keyPair2" ],

69

  "name" : "An example NSR"}

5.3. Retrieving all Network Service RecordsGET request{host}/api/v1/ns-records/

5.3.1. Response structure

Path Type Description

[] Object The array of NSRs

5.3.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

5.3.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 6356

[ {  "id" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : {  "id" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "version" : 0,  "flavour_key" : "flavourKey",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1,  "constituent_vnf" : [ {  "id" : "492da364-25d7-7654-da74-128d8caf4721",  "vnf_reference" : "485139cd-74dc-af3d-7593-12d78c51af12",  "vnf_flavour_id_reference" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "redundancy_model" : "ACTIVE",  "affinity" : "affinity",

70

  "capability" : "capability",  "number_of_instances" : 2  } ]  },  "vendor" : "FOKUS",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "task" : "Onboarding",  "version" : "1.0",  "vlr" : [ ],  "vnfr" : [ {  "id" : "293e6a52-c6df-40c0-8f8a-58911bb9319b",  "hb_version" : 4,  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "deployment_flavour_key" : "m1.small",  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "lifecycle_event_history" : [ {  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted tobe deployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"  } ],  "localization" : "berlin",

71

  "monitoring_parameter" : [ ],  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "vendor" : "FOKUS",  "version" : "0.1",  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",

72

  "name" : "private",  "connection_points_references" : [ ]  } ],  "parent_ns_id" : "f9ba54f2-a825-47b0-9c3e-e00275faf169",  "descriptor_reference" : "0a60d551-5498-40cc-a0ef-279a10e72228",  "vnfm_id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "connected_external_virtual_link" : [ ],  "vnf_address" : [ "10.253.4.7" ],  "status" : "ACTIVE",  "notification" : [ ],  "audit_log" : "auditLog",  "runtime_policy_info" : [ ],  "name" : "iperfserver",  "type" : "server",  "endpoint" : "generic",  "task" : "start",  "requires" : {  "id" : "fe0c2cb2-e251-415a-b894-d04ddf8970dc",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "requires"  },  "provides" : {  "id" : "5b36d727-0a95-4be0-958e-7c94857d5c70",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "provides"  },  "packageId" : "fcaa8993-b9d0-46c7-a258-85dd847c901f"  } ],  "vnf_dependency" : [ {  "id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "version" : 1,  "target" : "iperfclient",  "parameters" : {  "server" : {  "id" : "76046e27-aade-4f14-ad39-f2976532e5f2",  "version" : 6,  "parameters" : {  "private" : "10.231.5.1"  }  }  },  "vnfcParameters" : {  "server" : {  "vnfcId" : "66046d77-aade-4f14-ad39-f2976532e5f2",

73

  "id" : "01456d77-aade-4f14-ad39-f2976532e5e2",  "version" : 4,  "parameters" : {  "51e0f1a0-46f1-4fd2-8737-4dd51d4b57ed" : {  "id" : "77e44026-b609-41fb-8d24-7acf652c6488",  "version" : 6,  "parameters" : { }  }  }  }  },  "idType" : {  "iperfserver" : "server"  }  } ],  "lifecycle_event" : [ ],  "vnffgr" : [ ],  "pnfr" : [ ],  "faultManagementPolicy" : [ ],  "descriptor_reference" : "c60ec37a-654a-4605-93fb-5a1932db6ecf",  "resource_reservation" : "resourceReservation",  "runtime_policy_info" : "runtimePolicyInfo",  "status" : "ACTIVE",  "notification" : "notification",  "lifecycle_event_history" : [ ],  "audit_log" : "auditLog",  "createdAt" : "2016.08.15 at 14:22:26 CEST",  "keyNames" : [ "keyPair1", "keyPair2" ],  "name" : "An example NSR"} ]

5.4. Retrieving a Network Service RecordGET requestthe id in the url belongs to the NSR that should be retrieved{host}/api/v1/ns-records/{nsrId}

5.4.1. Response structure

Path Type Description

audit_log String _

auto_scale_policy Array _

connection_point Array _

74

Path Type Description

createdAt String The date when the NSR wascreated

descriptor_reference String The reference to the NetworkService Descriptor used toinstantiate this Network Service.

faultManagementPolicy String Used for fault management

id String The id of the NSR

keyNames Array TODO

lifecycle_event Array _

lifecycle_event_history Object _

monitoring_parameter Array Used for fault management

name String The name of the NSR

notification String _

pnfr Array _

projectId String The id of the project to whichthis NSR belongs

resource_reservation String _

runtime_policy_info String _

service_deployment_flavour Object _

status Object The status of the NSR

task String The task currently executed bythe NSR

vendor String The vendor of the NSR

version String The version of the NSR

vlr Array Array of VirtualLinkRecords thatrecord resources used toimplement a virtual link

vnf_dependency Array Array ofVNFRecordDependencies

vnffgr Array _

vnfr Array An array ofVirtualNetworkFunctionRecords

75

5.4.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/66046d77-aade-4f14-ad39-f2976532e5f2' -i-H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

5.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 6352

{  "id" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : {  "id" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "version" : 0,  "flavour_key" : "flavourKey",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1,  "constituent_vnf" : [ {  "id" : "492da364-25d7-7654-da74-128d8caf4721",  "vnf_reference" : "485139cd-74dc-af3d-7593-12d78c51af12",  "vnf_flavour_id_reference" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "redundancy_model" : "ACTIVE",  "affinity" : "affinity",  "capability" : "capability",  "number_of_instances" : 2  } ]  },  "vendor" : "FOKUS",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "task" : "Onboarding",  "version" : "1.0",  "vlr" : [ ],  "vnfr" : [ {  "id" : "293e6a52-c6df-40c0-8f8a-58911bb9319b",  "hb_version" : 4,  "auto_scale_policy" : [ ],  "connection_point" : [ ],

76

  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "deployment_flavour_key" : "m1.small",  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "lifecycle_event_history" : [ {  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted tobe deployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"  } ],  "localization" : "berlin",  "monitoring_parameter" : [ ],  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {

77

  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "vendor" : "FOKUS",  "version" : "0.1",  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "parent_ns_id" : "f9ba54f2-a825-47b0-9c3e-e00275faf169",  "descriptor_reference" : "0a60d551-5498-40cc-a0ef-279a10e72228",  "vnfm_id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "connected_external_virtual_link" : [ ],  "vnf_address" : [ "10.253.4.7" ],  "status" : "ACTIVE",  "notification" : [ ],  "audit_log" : "auditLog",  "runtime_policy_info" : [ ],  "name" : "iperfserver",  "type" : "server",

78

  "endpoint" : "generic",  "task" : "start",  "requires" : {  "id" : "fe0c2cb2-e251-415a-b894-d04ddf8970dc",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "requires"  },  "provides" : {  "id" : "5b36d727-0a95-4be0-958e-7c94857d5c70",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "provides"  },  "packageId" : "fcaa8993-b9d0-46c7-a258-85dd847c901f"  } ],  "vnf_dependency" : [ {  "id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "version" : 1,  "target" : "iperfclient",  "parameters" : {  "server" : {  "id" : "76046e27-aade-4f14-ad39-f2976532e5f2",  "version" : 6,  "parameters" : {  "private" : "10.231.5.1"  }  }  },  "vnfcParameters" : {  "server" : {  "vnfcId" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "id" : "01456d77-aade-4f14-ad39-f2976532e5e2",  "version" : 4,  "parameters" : {  "51e0f1a0-46f1-4fd2-8737-4dd51d4b57ed" : {  "id" : "77e44026-b609-41fb-8d24-7acf652c6488",  "version" : 6,  "parameters" : { }  }  }  }  },  "idType" : {  "iperfserver" : "server"  }

79

  } ],  "lifecycle_event" : [ ],  "vnffgr" : [ ],  "pnfr" : [ ],  "faultManagementPolicy" : [ ],  "descriptor_reference" : "c60ec37a-654a-4605-93fb-5a1932db6ecf",  "resource_reservation" : "resourceReservation",  "runtime_policy_info" : "runtimePolicyInfo",  "status" : "ACTIVE",  "notification" : "notification",  "lifecycle_event_history" : [ ],  "audit_log" : "auditLog",  "createdAt" : "2016.08.15 at 14:22:26 CEST",  "keyNames" : [ "keyPair1", "keyPair2" ],  "name" : "An example NSR"}

5.5. Updating a Network Service RecordPUT request with the updated NSR as JSON content in the request bodythe id in the url belongs to the NSR that shall be updated{host}/api/v1/ns-records/{nsrId}

5.5.1. Request structure

Path Type Description

descriptor_reference String The reference to the NetworkService Descriptor used toinstantiate this Network Service.

name String The name of the NSR

status String The status of the NSR

vendor String The vendor of the NSR

version String The version of the NSR

vlr Array A record of the resources used toimplement a virtual networklink

vnf_dependency Array An array ofVNFRecordDependencies

vnfr Array An array ofVirtualNetworkFunctionRecords

80

5.5.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/66046d77-aade-4f14-ad39-f2976532e5f2' -i-X PUT -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "vendor" : "FOKUS",  "version" : "1.0",  "vlr" : [ ],  "vnfr" : [ ],  "vnf_dependency" : [ ],  "descriptor_reference" : "c60ec37a-654a-4605-93fb-5a1932db6ecf",  "status" : "ACTIVE",  "name" : "An example NSR"}'

5.5.3. Example response

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 6352

{  "id" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "monitoring_parameter" : [ ],  "service_deployment_flavour" : {  "id" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "version" : 0,  "flavour_key" : "flavourKey",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1,  "constituent_vnf" : [ {  "id" : "492da364-25d7-7654-da74-128d8caf4721",  "vnf_reference" : "485139cd-74dc-af3d-7593-12d78c51af12",  "vnf_flavour_id_reference" : "5927dc9a-93cd-28de-2947-d382d8fc3840",  "redundancy_model" : "ACTIVE",  "affinity" : "affinity",  "capability" : "capability",  "number_of_instances" : 2  } ]  },  "vendor" : "FOKUS",

81

  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "task" : "Onboarding",  "version" : "1.0",  "vlr" : [ ],  "vnfr" : [ {  "id" : "293e6a52-c6df-40c0-8f8a-58911bb9319b",  "hb_version" : 4,  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "deployment_flavour_key" : "m1.small",  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "lifecycle_event_history" : [ {  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted tobe deployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"  } ],  "localization" : "berlin",  "monitoring_parameter" : [ ],  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",

82

  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "vendor" : "FOKUS",  "version" : "0.1",  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "parent_ns_id" : "f9ba54f2-a825-47b0-9c3e-e00275faf169",  "descriptor_reference" : "0a60d551-5498-40cc-a0ef-279a10e72228",

83

  "vnfm_id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "connected_external_virtual_link" : [ ],  "vnf_address" : [ "10.253.4.7" ],  "status" : "ACTIVE",  "notification" : [ ],  "audit_log" : "auditLog",  "runtime_policy_info" : [ ],  "name" : "iperfserver",  "type" : "server",  "endpoint" : "generic",  "task" : "start",  "requires" : {  "id" : "fe0c2cb2-e251-415a-b894-d04ddf8970dc",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "requires"  },  "provides" : {  "id" : "5b36d727-0a95-4be0-958e-7c94857d5c70",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "provides"  },  "packageId" : "fcaa8993-b9d0-46c7-a258-85dd847c901f"  } ],  "vnf_dependency" : [ {  "id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "version" : 1,  "target" : "iperfclient",  "parameters" : {  "server" : {  "id" : "76046e27-aade-4f14-ad39-f2976532e5f2",  "version" : 6,  "parameters" : {  "private" : "10.231.5.1"  }  }  },  "vnfcParameters" : {  "server" : {  "vnfcId" : "66046d77-aade-4f14-ad39-f2976532e5f2",  "id" : "01456d77-aade-4f14-ad39-f2976532e5e2",  "version" : 4,  "parameters" : {  "51e0f1a0-46f1-4fd2-8737-4dd51d4b57ed" : {  "id" : "77e44026-b609-41fb-8d24-7acf652c6488",

84

  "version" : 6,  "parameters" : { }  }  }  }  },  "idType" : {  "iperfserver" : "server"  }  } ],  "lifecycle_event" : [ ],  "vnffgr" : [ ],  "pnfr" : [ ],  "faultManagementPolicy" : [ ],  "descriptor_reference" : "c60ec37a-654a-4605-93fb-5a1932db6ecf",  "resource_reservation" : "resourceReservation",  "runtime_policy_info" : "runtimePolicyInfo",  "status" : "ACTIVE",  "notification" : "notification",  "lifecycle_event_history" : [ ],  "audit_log" : "auditLog",  "createdAt" : "2016.08.15 at 14:22:26 CEST",  "keyNames" : [ "keyPair1", "keyPair2" ],  "name" : "An example NSR"}

5.6. Removing a Network Service RecordA NSR can just be removed, if its state is ACTIVE or ERROR.

DELETE requestthe id in the url belongs to the NSR that shall be deleted{host}/api/v1/ns-records/{nsrId}

5.6.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/66046d77-aade-4f14-ad39-f2976532e5f2' -i-X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

5.6.2. Example response

HTTP/1.1 204 No Content

85

5.7. Removing multiple Network Service RecordsDELETE requestthe ids in the request body specify the NSRs to delete{host}/api/v1/ns-records/multipledelete

5.7.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/multipledelete' -i -X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -d '[ "55555c52-f952-430c-b093-45acb2bbf50e", "5c357f1e-9a42-c4a5-bab0-3916248c6fca" ]'

5.7.2. Example response

HTTP/1.1 204 No Content

5.8. Resume a failed Network Service RecordsPOST requestthe id in the url specifies the NSR{host}/api/v1/ns-records/{nsrId}

5.8.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/66046d77-aade-4f14-ad39-f2976532e5f2' -i-X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

5.8.2. Example response

HTTP/1.1 204 No Content

86

Chapter 6. Virtual Network Function Records

6.1. OverviewFollowing instantiation, a Virtualised Network Function Record will be created to index the virtualisedresources allocated to each VNF instance.

6.2. Retrieving all Virtual Network Function Recordsfrom a NSRGET requestthe id in the url belongs to the NSR from which the VNFRs shall be retrieved{host}/api/v1/ns-records/{nsrId}/vnfrecords

6.2.1. Response structure

Path Type Description

[] Object The array of NSRs

6.2.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/5e074545-0a81-4de8-8494-eb67173ec565/vnfrecords/' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

6.2.3. Example response

HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 3950

[ {  "id" : "293e6a52-c6df-40c0-8f8a-58911bb9319b",  "hb_version" : 4,  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "deployment_flavour_key" : "m1.small",  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,

87

  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "lifecycle_event" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  }, {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  } ],  "lifecycle_event_history" : [ {  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted to bedeployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"  } ],  "localization" : "berlin",  "monitoring_parameter" : [ ],  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],

88

  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "vendor" : "FOKUS",  "version" : "0.1",  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "parent_ns_id" : "f9ba54f2-a825-47b0-9c3e-e00275faf169",  "descriptor_reference" : "0a60d551-5498-40cc-a0ef-279a10e72228",  "vnfm_id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "connected_external_virtual_link" : [ ],  "vnf_address" : [ "10.253.4.7" ],  "status" : "ACTIVE",  "notification" : [ ],  "audit_log" : "auditLog",  "runtime_policy_info" : [ ],  "name" : "iperfserver",  "type" : "server",  "endpoint" : "generic",  "task" : "start",  "requires" : {  "id" : "fe0c2cb2-e251-415a-b894-d04ddf8970dc",  "version" : 0,

89

  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "requires"  },  "provides" : {  "id" : "5b36d727-0a95-4be0-958e-7c94857d5c70",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "provides"  },  "packageId" : "fcaa8993-b9d0-46c7-a258-85dd847c901f"} ]

6.3. Retrieving a Virtual Network Function Record froma NSRGET requestthe first id in the url belongs to the NSR from which the VNFR shall be retrievedthe second id in the url specifies the wanted VNFR{host}/api/v1/ns-records/{nsrId}/vnfrecords/{vnfrId}

6.3.1. Response structure

Path Type Description

audit_log String _

auto_scale_policy Array _

configurations Object Configuration object to provideparameters to the NetworkService

connected_external_virtual_link Array _

connection_point Array _

descriptor_reference String The reference to the VNFD usedto instantiate this VNF

deployment_flavour_key String The key representing thedeployment flavour

endpoint String The type of the Vnfm in chargeof managing this VNF

hb_version Number _

90

Path Type Description

id String The id of the VNFR

lifecycle_event Array The lifecycle events that shouldbe executed on the VNFtriggered by the vnfm

lifecycle_event_history Array _

localization String _

monitoring_parameter Array Used for fault management

name String The name of the VNFR

notification String _

parent_ns_id String Reference to the NSRs that thisVNFR is part of

packageId String The ID of the VNFPackage usedto deploy this VNFR

projectId String The id of the project to whichthis VNFR belongs

provides Object _

requires Object _

runtime_policy_info String _

status Object The status of the VNFR

task String _

type String The type of the VNFR

vdu Array An aray ofVirtualDeploymentUnits

vendor String The vendor of the VNFR

version String The version of the VNFR

virtual_link Array Internal Virtual Link instancesused in this VNF

vnf_address Array An array of addresses (e.g.VLAN, IP) configured for themanagement access or otherinternal and external connectioninterface on this VNF

vnfm_id String The identification of the VNFMentity managing this VNF

91

6.3.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/5e074545-0a81-4de8-8494-eb67173ec565/vnfrecords/2135f315-1772-4ad8-85c8-caa209400ef0' -i -H 'project-id:8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

6.3.3. Example response

HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 3946

{  "id" : "293e6a52-c6df-40c0-8f8a-58911bb9319b",  "hb_version" : 4,  "auto_scale_policy" : [ ],  "connection_point" : [ ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "deployment_flavour_key" : "m1.small",  "configurations" : {  "id" : "760583a0-ff99-4754-b1c7-2a7b1cc5d7b3",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ {  "id" : "5969df32-3199-47d6-83cd-0b4da537dd0f",  "version" : 0,  "description" : "Description of the configuration parameter",  "confKey" : "answer",  "value" : "42"  } ],  "name" : "config_name"  },  "lifecycle_event" : [ {  "id" : "556fbc91-6a32-419b-afa4-e7e93acf9977",  "version" : 0,  "event" : "START",  "lifecycle_events" : [ "start-server.sh" ]  }, {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "event" : "INSTANTIATE",  "lifecycle_events" : [ "install.sh" ]  } ],  "lifecycle_event_history" : [ {

92

  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted to bedeployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"  } ],  "localization" : "berlin",  "monitoring_parameter" : [ ],  "vdu" : [ {  "id" : "56ea7355-9261-42e0-8193-53beec9d6514",  "version" : 1,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "name" : "iperf-server",  "vm_image" : [ "ubuntu-14.04-server-cloudimg-amd64-disk1" ],  "parent_vdu" : "28ea7355-9261-42e0-8193-53beec9d6514",  "computation_requirement" : "computationRequirement",  "virtual_memory_resource_element" : "virtualMemoryResourceElement",  "virtual_network_bandwidth_resource" : "virtualNetworkBandwidthResource",  "lifecycle_event" : [ ],  "vdu_constraint" : "vduConstraint",  "high_availability" : {  "resiliencyLevel" : "ACTIVE_STANDBY_STATEFUL",  "geoRedundancy" : true,  "redundancyScheme" : "scheme"  },  "fault_management_policy" : [ ],  "scale_in_out" : 2,  "vnfc" : [ {  "id" : "5e4cc574-4e70-415a-b209-481ad882383e",  "version" : 0,  "connection_point" : [ {  "id" : "5f8cc194-4e70-415a-b569-481cb882383e",  "version" : 0,  "type" : "type",  "virtual_link_reference" : "private",  "floatingIp" : "random",  "interfaceId" : 0  } ]  } ],  "vnfc_instance" : [ ],  "monitoring_parameter" : [ ],  "hostname" : "iperfserver-435",  "vimInstanceName" : [ "vim-instance" ]  } ],  "vendor" : "FOKUS",  "version" : "0.1",  "virtual_link" : [ {  "id" : "b6be79b6-9f7c-494a-8543-7dec75bcfb22",

93

  "hb_version" : 0,  "extId" : "a3ae6958-34dc-305b-6903-3afc54bcad32",  "root_requirement" : "4",  "leaf_requirement" : "8",  "qos" : [ ],  "test_access" : [ ],  "connectivity_type" : "connectivityType",  "name" : "private",  "connection_points_references" : [ ]  } ],  "parent_ns_id" : "f9ba54f2-a825-47b0-9c3e-e00275faf169",  "descriptor_reference" : "0a60d551-5498-40cc-a0ef-279a10e72228",  "vnfm_id" : "46046d37-aade-4f14-ad39-f2976532e4d8",  "connected_external_virtual_link" : [ ],  "vnf_address" : [ "10.253.4.7" ],  "status" : "ACTIVE",  "notification" : [ ],  "audit_log" : "auditLog",  "runtime_policy_info" : [ ],  "name" : "iperfserver",  "type" : "server",  "endpoint" : "generic",  "task" : "start",  "requires" : {  "id" : "fe0c2cb2-e251-415a-b894-d04ddf8970dc",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "requires"  },  "provides" : {  "id" : "5b36d727-0a95-4be0-958e-7c94857d5c70",  "version" : 0,  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "configurationParameters" : [ ],  "name" : "provides"  },  "packageId" : "fcaa8993-b9d0-46c7-a258-85dd847c901f"}

6.4. Deleting a Virtual Network Function Record from aNSRDELETE requestthe first id in the url belongs to the NSR from which the VNFR shall be deleted

94

the second id in the url speciefies the VNFR that shall be deleted{host}/api/v1/ns-records/{nsrId}/vnfrecords/{vnfrId}

6.4.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/5e074545-0a81-4de8-8494-eb67173ec565/vnfrecords/2135f315-1772-4ad8-85c8-caa209400ef0' -i -X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

6.4.2. Example response

HTTP/1.1 204 No Content

6.5. Retrieving a Virtual Network Function Record’slifecycle event historyGET requestthe first id in the url belongs to the NSR that comprises the VNFRthe second id in the url belongs to the VNFR whose history shall be retrieved{host}/api/v1/ns-records/[nsrId}/vnfrecords/{vnfrId}/history

6.5.1. Response structure

Path Type Description

[] Array An array of lifecycle events thatwere executed on this VNFR

6.5.2. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/66046d77-aade-4f14-ad39-f2976532e5f2/vnfrecords/293e6a52-c6df-40c0-8f8a-58911bb9319b/history' -i -H 'project-id:8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

6.5.3. Example response

95

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 246

[ {  "id" : "07c1ac29-0e2e-4d9f-b8a2-2cc1f3684328",  "event" : "GRANTED",  "description" : "All the resources that are contained in this VNFR were granted to bedeployed in the chosen vim(s)",  "executedAt" : "2016.11.08-22:29:59:417-CET"} ]

6.6. Starting a VNFCInstanceVirtualNetworkFunctionRecords contain VDUs which themselves contain VNFCInstances.This API request starts a VNFCInstance.POST request{host}/api/v1/ns-records/{id}/vnfrecords/{idVnf}/vdunits/{idVdu}/vnfcinstances/{idVNFCI}/start

6.6.1. Example request

$ curl 'http://localhost:8080/api/v1/ns-records/5e074545-0a81-4de8-8494-eb67173ec565/vnfrecords/2135f315-1772-4ad8-85c8-caa209400ef0/vdunits/07241c3b-9d50-44ba-a495-9d3b96c226bd/vnfcinstances/eb671c3b-9d50-44ba-0745-9d3b96c24ad8/start' -i -X POST -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json'

6.6.2. Example response

HTTP/1.1 201 Created

6.7. Stopping a VNFCInstanceVirtualNetworkFunctionRecords contain VDUs which themselves contain VNFCInstances.This API request stops a VNFCInstance.POST request{host}/api/v1/ns-records/{id}/vnfrecords/{idVnf}/vdunits/{idVdu}/vnfcinstances/{idVNFCI}/stop

6.7.1. Example request

96

$ curl 'http://localhost:8080/api/v1/ns-records/5e074545-0a81-4de8-8494-eb67173ec565/vnfrecords/2135f315-1772-4ad8-85c8-caa209400ef0/vdunits/07241c3b-9d50-44ba-a495-9d3b96c226bd/vnfcinstances/eb671c3b-9d50-44ba-0745-9d3b96c24ad8/stop' -i -X POST -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json'

6.7.2. Example response

HTTP/1.1 201 Created

97

Chapter 7. VimInstance

7.1. OverviewA Vim Instance is needed to grant access to for example openstack.

7.2. Adding a VimInstancePOST request with a VimInstance as JSON content in the request body{host}/api/v1/datacenters

7.2.1. Request structure

Path Type Description

active Boolean True if the VimInstance is active

authUrl String The key authorisation URL ofthis PoP

keyPair String Open Stack key pair forproviding SSH access to virtualmachines

location Object The location of the data Center

name String The name of the VimInstance

password String The password

tenant String The tenant is a string to refer toa group of users

type String The type of the Vim Instancethat will start the correspondingplugin

username String The user

version Number The version of the VimInstance

7.2.2. Example request

98

$ curl 'http://localhost:8080/api/v1/datacenters' -i -X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "version" : 0,  "name" : "An example of a VimInstance",  "authUrl" : "A Url",  "tenant" : "demo",  "username" : "User",  "password" : "12345",  "keyPair" : "key",  "location" : {  "version" : 0,  "name" : "Berlin",  "latitude" : "52.525876",  "longitude" : "13.314400"  },  "type" : "openstack",  "active" : false}'

7.2.3. Example response

HTTP/1.1 201 CreatedContent-Type: application/jsonContent-Length: 1676

{  "id" : "07241c3b-9d50-44ba-a495-9d3b96c226bd",  "version" : 0,  "name" : "An example of a VimInstance",  "authUrl" : "A Url",  "tenant" : "demo",  "username" : "User",  "password" : "12345",  "keyPair" : "test-key-pair",  "location" : {  "id" : "68374c3b-9d50-44bc-a435-9d3b96c226db",  "version" : 0,  "name" : "Berlin",  "latitude" : "52.525876",  "longitude" : "13.314400"  },  "securityGroups" : [ ],  "flavours" : [ {  "id" : "de00be44-6bac-4e69-8e24-77d82d4b63ce",

99

  "version" : 0,  "flavour_key" : "m1.tiny",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1  } ],  "type" : "openstack",  "images" : [ {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201198771,  "updated" : 1488201198771,  "public" : false  } ],  "networks" : [ {  "id" : "3b772bbb-45fe-4f06-a0e5-c21b9bbe0367",  "version" : 0,  "name" : "private1",  "extId" : "26e791ac-5215-4663-b393-3303e310c42e",  "external" : false,  "shared" : false,  "subnets" : [ {  "id" : "49920742-992c-4097-aa78-0592498b1d40",  "version" : 0,  "name" : "private_subnet",  "extId" : "fa3a5781-dee1-4b96-8aa9-01488a60acaa",  "networkId" : "26e791ac-5215-4663-b393-3303e310c42e",  "cidr" : "192.168.216.0/24",  "gatewayIp" : "192.168.216.1"  } ]  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "active" : false}

7.3. Retrieving all VimInstancesGET request

100

{host}/api/v1/datacenters

7.3.1. Response structure

Path Type Description

[] Object The array of VimInstances

7.3.2. Example request

$ curl 'http://localhost:8080/api/v1/datacenters' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

7.3.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 1685

[ {  "id" : "07241c3b-9d50-44ba-a495-9d3b96c226bd",  "version" : 0,  "name" : "An example of a VimInstance",  "authUrl" : "A Url",  "tenant" : "demo",  "username" : "User",  "password" : "**********",  "keyPair" : "test-key-pair",  "location" : {  "id" : "68374c3b-9d50-44bc-a435-9d3b96c226db",  "version" : 0,  "name" : "Berlin",  "latitude" : "52.525876",  "longitude" : "13.314400"  },  "securityGroups" : [ ],  "flavours" : [ {  "id" : "de00be44-6bac-4e69-8e24-77d82d4b63ce",  "version" : 0,  "flavour_key" : "m1.tiny",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1  } ],

101

  "type" : "openstack",  "images" : [ {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201197588,  "updated" : 1488201197588,  "public" : false  } ],  "networks" : [ {  "id" : "3b772bbb-45fe-4f06-a0e5-c21b9bbe0367",  "version" : 0,  "name" : "private1",  "extId" : "26e791ac-5215-4663-b393-3303e310c42e",  "external" : false,  "shared" : false,  "subnets" : [ {  "id" : "49920742-992c-4097-aa78-0592498b1d40",  "version" : 0,  "name" : "private_subnet",  "extId" : "fa3a5781-dee1-4b96-8aa9-01488a60acaa",  "networkId" : "26e791ac-5215-4663-b393-3303e310c42e",  "cidr" : "192.168.216.0/24",  "gatewayIp" : "192.168.216.1"  } ]  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "active" : false} ]

7.4. Retrieving a VimInstanceGET requestthe id in the url belongs to the VimInstance {host}/api/v1/datacenters/{vId}

7.4.1. Response structure

Path Type Description

active Boolean True if the VimInstance is active

102

Path Type Description

authUrl String The key authorisation URL ofthis PoP

flavours Array _

id String The id of the VimInstance

images Array _

keyPair String OpenStack key pair whichprovides SSH access to thevirtual machines

location Object The location of the data Center

name String The name of the VimInstance

networks Array _

password String The password

projectId String The id of the project to whichthis VimInstance belongs

securityGroups Array _

tenant String The tenant is a string to refer toa group of users

type String The type of the Vim Instancethat will start the correspondingplugin

username String The username

version Number The version of the VimInstance

7.4.2. Example Request

$ curl 'http://localhost:8080/api/v1/datacenters/07241c3b-9d50-44ba-a495-9d3b96c226bd' -i-H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

7.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 1681

103

{  "id" : "07241c3b-9d50-44ba-a495-9d3b96c226bd",  "version" : 0,  "name" : "An example of a VimInstance",  "authUrl" : "A Url",  "tenant" : "demo",  "username" : "User",  "password" : "**********",  "keyPair" : "test-key-pair",  "location" : {  "id" : "68374c3b-9d50-44bc-a435-9d3b96c226db",  "version" : 0,  "name" : "Berlin",  "latitude" : "52.525876",  "longitude" : "13.314400"  },  "securityGroups" : [ ],  "flavours" : [ {  "id" : "de00be44-6bac-4e69-8e24-77d82d4b63ce",  "version" : 0,  "flavour_key" : "m1.tiny",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1  } ],  "type" : "openstack",  "images" : [ {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201198966,  "updated" : 1488201198966,  "public" : false  } ],  "networks" : [ {  "id" : "3b772bbb-45fe-4f06-a0e5-c21b9bbe0367",  "version" : 0,  "name" : "private1",  "extId" : "26e791ac-5215-4663-b393-3303e310c42e",  "external" : false,  "shared" : false,

104

  "subnets" : [ {  "id" : "49920742-992c-4097-aa78-0592498b1d40",  "version" : 0,  "name" : "private_subnet",  "extId" : "fa3a5781-dee1-4b96-8aa9-01488a60acaa",  "networkId" : "26e791ac-5215-4663-b393-3303e310c42e",  "cidr" : "192.168.216.0/24",  "gatewayIp" : "192.168.216.1"  } ]  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "active" : false}

7.5. Updating a VimInstancePUT request with an updated VimInstance as JSON content in the request bodythe id in the url belongs to the VimInstance to update {host}/api/v1/datacenters/{vId}

7.5.1. Request structure

Path Type Description

active Boolean True if the VimInstance is active

authUrl String The key authorisation URL ofthis PoP

location Object The location of the data Center

name String The name of the VimInstance

password String The password

tenant String The tenant is a string to refer toa group of users

type String The type of the Vim Instancethat will start the correspondingplugin

username String The username

version Number The version of the VimInstance

7.5.2. Example request

105

$ curl 'http://localhost:8080/api/v1/datacenters/07241c3b-9d50-44ba-a495-9d3b96c226bd' -i-X PUT -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "version" : 0,  "name" : "An updated VimInstance",  "authUrl" : "A Url",  "tenant" : "demo",  "username" : "User",  "password" : "123456789",  "location" : {  "version" : 0,  "name" : "Berlin",  "latitude" : "52.525876",  "longitude" : "13.314400"  },  "type" : "Type2",  "active" : false}'

7.5.3. Example response

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 1671

{  "id" : "07241c3b-9d50-44ba-a495-9d3b96c226bd",  "version" : 0,  "name" : "An updated VimInstance",  "authUrl" : "A Url",  "tenant" : "demo",  "username" : "User",  "password" : "123456789",  "keyPair" : "test-key-pair",  "location" : {  "id" : "68374c3b-9d50-44bc-a435-9d3b96c226db",  "version" : 0,  "name" : "Berlin",  "latitude" : "52.525876",  "longitude" : "13.314400"  },  "securityGroups" : [ ],  "flavours" : [ {  "id" : "de00be44-6bac-4e69-8e24-77d82d4b63ce",  "version" : 0,

106

  "flavour_key" : "m1.tiny",  "extId" : "1",  "ram" : 512,  "disk" : 1,  "vcpus" : 1  } ],  "type" : "Type2",  "images" : [ {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201198992,  "updated" : 1488201198992,  "public" : false  } ],  "networks" : [ {  "id" : "3b772bbb-45fe-4f06-a0e5-c21b9bbe0367",  "version" : 0,  "name" : "private1",  "extId" : "26e791ac-5215-4663-b393-3303e310c42e",  "external" : false,  "shared" : false,  "subnets" : [ {  "id" : "49920742-992c-4097-aa78-0592498b1d40",  "version" : 0,  "name" : "private_subnet",  "extId" : "fa3a5781-dee1-4b96-8aa9-01488a60acaa",  "networkId" : "26e791ac-5215-4663-b393-3303e310c42e",  "cidr" : "192.168.216.0/24",  "gatewayIp" : "192.168.216.1"  } ]  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "active" : false}

7.6. Removing a VimInstancesDELETE requestthe id in the url belongs to the VimInstance that shall be deleted

107

{host}/api/v1/datacenters/{vId}

7.6.1. Example request

$ curl 'http://localhost:8080/api/v1/datacenters/07241c3b-9d50-44ba-a495-9d3b96c226bd' -i-X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

7.6.2. Example response

HTTP/1.1 204 No Content

108

Chapter 8. VNFPackage

8.1. OverviewA VNFPackage may contain a VNFD, the scripts to be executed, the image file to be used to instantiateVMs or at least links to the places where they can be retrieved.Please look at the documentatoin at http://openbaton.github.io/documentation/vnfpackage/.

8.2. Adding a VNFPackagePOST requestthe request parameter 'file' specifies an archive which is needed to instantiate a VNFPackage from itTo get information about how this archive has to look like please read the documentation about theVNFPackage mentioned in the overview{host}/api/v1/vnf-packages?file=@{archive}

8.3. Adding a VNFPackage from the Open BatonmarketplacePOST request with the a JSON object in the request body containing a field named link{host}/api/v1/vnf-packages/marketdownload

8.3.1. Request structure

Path Type Description

link String The link to the VNFPackage inthe Open Baton marketplace

8.3.2. Example Request

$ curl 'http://localhost:8080/api/v1/vnf-packages/marketdownload' -i -X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "link" : "http://marketplace.openbaton.org:8082/api/v1/vnf-packages/fokus/iperfserver/0.1-tar/tar/"}'

8.3.3. Example response

109

HTTP/1.1 200 OKContent-Type: text/plain;charset=ISO-8859-1Content-Length: 51

{  "id" : "a32340e7-45c1-4768-ab09-5826ec3e6594"}

8.4. Retrieving all VNFPackagesGET request{host}/api/v1/vnf-packages

8.4.1. response structure

Path Type Description

[] Object The Array containing theVNFPackages

8.4.2. Example request

$ curl 'http://localhost:8080/api/v1/vnf-packages' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

8.4.3. Example response

110

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 863

[ {  "id" : "61a40e7c-a424-4d47-8413-532217ddcf4f",  "version" : 2,  "name" : "An updated VNFPackage",  "nfvo_version" : "3.1.0",  "vimTypes" : [ "vim-instance" ],  "imageLink" : "URL to the image file",  "scriptsLink" : "URL to the place where the scripts can be downloaded",  "image" : {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201196735,  "updated" : 1488201196735,  "public" : false  },  "scripts" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "name" : "install.sh"  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca"} ]

8.5. Retrieving a VNFPackageGET requestthe id in the request belongs to the VNFPackage{host}/api/v1/vnf-packages/{vnfpId}

8.5.1. Response structure

Path Type Description

id String The id of the VNFPackage

111

Path Type Description

image Object The image in the VNFPackageused for instantiating the VMs

imageLink String A link to an image that shall beused for instantiating the VMs

name String The name of the VNFPackage

nfvo_version String The NFVO version that supportsthis VNFPackage

projectId String The id of the project to whichthis VNFPackage belongs

scripts Array The scripts that are stored in theVNFPackage

scriptsLink String A link to a git repository, fromwhich the script files can bedownloaded

version Number The version of the VNFPackage

vimTypes Array The types of VIM Instances forthis VNFPackage to use

8.5.2. Example request

$ curl 'http://localhost:8080/api/v1/vnf-packages/61a40e7c-a424-4d47-8413-532217ddcf4f'-i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

8.5.3. Example response

112

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 859

{  "id" : "61a40e7c-a424-4d47-8413-532217ddcf4f",  "version" : 2,  "name" : "An updated VNFPackage",  "nfvo_version" : "3.1.0",  "vimTypes" : [ "vim-instance" ],  "imageLink" : "URL to the image file",  "scriptsLink" : "URL to the place where the scripts can be downloaded",  "image" : {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201197731,  "updated" : 1488201197731,  "public" : false  },  "scripts" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "name" : "install.sh"  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca"}

8.6. Updating a VNFPackagePUT request with the updated VNFPackage as a JSON object in the request bodythe id in the request belongs to the VNFPackage{host}/api/v1/vnf-packages/{vnfpId}

8.6.1. Request structure

113

Path Type Description

image Object The image in the VNFPackageused for instantiating the VMs

imageLink String A link to an image that shall beused for instantiating the VMs

name String The name of the VNFPackage

nfvo_version String The NFVO version that supportsthis VNFPackage

scriptsLink String A link to a git repository, fromwhich the script files can bedownloaded

version Number The version of the VNFPackage

vimTypes Array The types of VIM Instances forthis VNFPackage to use

8.6.2. Example Request

$ curl 'http://localhost:8080/api/v1/vnf-packages/61a40e7c-a424-4d47-8413-532217ddcf4f'-i -X PUT -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "version" : 2,  "name" : "An updated VNFPackage",  "nfvo_version" : "3.1.0",  "vimTypes" : [ "vim-instance" ],  "imageLink" : "URL to the image file",  "scriptsLink" : "URL to the place where the scripts can be downloaded",  "image" : {  "version" : 0,  "name" : "ubuntu_server_image",  "minRam" : 0,  "minDiskSpace" : 0,  "isPublic" : false  }}'

8.6.3. Example response

114

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 859

{  "id" : "61a40e7c-a424-4d47-8413-532217ddcf4f",  "version" : 2,  "name" : "An updated VNFPackage",  "nfvo_version" : "3.1.0",  "vimTypes" : [ "vim-instance" ],  "imageLink" : "URL to the image file",  "scriptsLink" : "URL to the place where the scripts can be downloaded",  "image" : {  "id" : "ab90ae11-267e-4ee6-b623-0d3d42f910ec",  "version" : 0,  "extId" : "30ecc9a1-53bb-451a-a9f3-adf460d4cb94",  "name" : "ImageName",  "minRam" : 0,  "minDiskSpace" : 0,  "minCPU" : "0",  "diskFormat" : "OPTIONAL.OF(QCOW2)",  "containerFormat" : "OPTIONAL.OF(BARE)",  "created" : 1488201198885,  "updated" : 1488201198885,  "public" : false  },  "scripts" : [ {  "id" : "5034fc1a-83ad-23f9-7403-533fed9812ad",  "version" : 0,  "name" : "install.sh"  } ],  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca"}

8.7. Removing a VNFPackageDELETE requestthe id in the request belongs to the VNFPackage that shall be deleted{host}/api/v1/vnf-packages/{vnfpId}

8.7.1. Example request

115

$ curl 'http://localhost:8080/api/v1/vnf-packages/61a40e7c-a424-4d47-8413-532217ddcf4f'-i -X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization:Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

8.7.2. Example response

HTTP/1.1 204 No Content

8.8. Removing multiple VNFPackagesDELETE requestthe ids in the request body specify the VNFPackages to delete{host}/api/v1/vnf-packages/multipledelete

8.8.1. Example request

$ curl 'http://localhost:8080/api/v1/vnf-packages/multipledelete' -i -X DELETE -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -d '[ "55555c52-f952-430c-b093-45acb2bbf50e", "5c357f1e-9a42-c4a5-bab0-3916248c6fca" ]'

8.8.2. Example response

HTTP/1.1 204 No Content

116

Chapter 9. User

9.1. OverviewTo work with the NFVO you have to log in as a user. A user can be assigned to different projects towhich he has access. A user can have the role of an ADMIN, USER or GUEST each of one has differentpermissions.

9.2. Adding a UserPOST request with a User as JSON content in the request body{host}/api/v1/users

9.2.1. Request structure

Path Type Description

email String The user’s email address

enabled Boolean The user can access his accountjust if enabled is true

password String The user’s password

roles Object The user’s roles in projects

username String The user’s name

9.2.2. Example request

$ curl 'http://localhost:8080/api/v1/users' -i -X POST -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d'{"username":"username","password":"supersafe","enabled":true,"email":"[email protected]","roles":[{"role":"ADMIN","project":"MyProject"},{"role":"GUEST","project":"AnotherProject"}]}'

9.2.3. Example response

117

HTTP/1.1 201 CreatedContent-Type: application/jsonContent-Length: 310

{"id":"7a327f1e-5a42-a4a5-aab0-9516248c6fca","username":"username","password":"supersafe","enabled":true,"email":"[email protected]","roles":[{"id":"f9382f4e-9a42-43c7-bab0-3915719c6fca","role":"ADMIN","project":"MyProject"},{"id":"2135f315-1772-4ad8-85c8-caa209400ef0","role":"GUEST","project":"AnotherProject"}]}

9.3. Retrieving all UsersGET request{host}/api/v1/users

9.3.1. response structure

Path Type Description

[] Object The array containing the users

9.3.2. Example request

$ curl 'http://localhost:8080/api/v1/users' -i -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

9.3.3. Example response

118

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 396

[ {  "id" : "7a327f1e-5a42-a4a5-aab0-9516248c6fca",  "username" : "username",  "password" : "supersafe",  "enabled" : true,  "email" : "[email protected]",  "roles" : [ {  "id" : "f9382f4e-9a42-43c7-bab0-3915719c6fca",  "role" : "ADMIN",  "project" : "MyProject"  }, {  "id" : "2135f315-1772-4ad8-85c8-caa209400ef0",  "role" : "GUEST",  "project" : "AnotherProject"  } ]} ]

9.4. Retrieving a UserGET requestthe name in the request is the username of the requested User{host}/api/v1/users/{username}

9.4.1. Response structure

Path Type Description

email String The user’s email address

enabled Boolean The user can access his accountjust if enabled is true

id String The user’s id

password String The user’s password

roles Object The user’s roles in projects

username String The user’s name

9.4.2. Example request

119

$ curl 'http://localhost:8080/api/v1/users/username' -i -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

9.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 392

{  "id" : "7a327f1e-5a42-a4a5-aab0-9516248c6fca",  "username" : "username",  "password" : "supersafe",  "enabled" : true,  "email" : "[email protected]",  "roles" : [ {  "id" : "f9382f4e-9a42-43c7-bab0-3915719c6fca",  "role" : "ADMIN",  "project" : "MyProject"  }, {  "id" : "2135f315-1772-4ad8-85c8-caa209400ef0",  "role" : "GUEST",  "project" : "AnotherProject"  } ]}

9.5. Retrieving the current UserGET request{host}/api/v1/users/current

9.5.1. Response structure

Path Type Description

email String The user’s email address

id String The user’s id

username String The user’s name

password String The user’s password

enabled Boolean The user can access his accountjust if enabled is true

120

Path Type Description

roles Object The user’s roles in projects

9.5.2. Example request

$ curl 'http://localhost:8080/api/v1/users/current' -i -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

9.5.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 392

{  "id" : "7a327f1e-5a42-a4a5-aab0-9516248c6fca",  "username" : "username",  "password" : "supersafe",  "enabled" : true,  "email" : "[email protected]",  "roles" : [ {  "id" : "f9382f4e-9a42-43c7-bab0-3915719c6fca",  "role" : "ADMIN",  "project" : "MyProject"  }, {  "id" : "2135f315-1772-4ad8-85c8-caa209400ef0",  "role" : "GUEST",  "project" : "AnotherProject"  } ]}

9.6. Updating a UserPUT request with the updated User as a JSON object in the request bodythe name in the request is the username of the requested User{host}/api/v1/users/{username}

9.6.1. Request structure

Path Type Description

email String The user’s email address

121

Path Type Description

enabled Boolean The user can access his accountjust if enabled is true

id String The user’s id

password String The user’s password

roles Object The user’s roles in projects

username String The user’s name

9.6.2. Example Request

$ curl 'http://localhost:8080/api/v1/users/username' -i -X PUT -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "id" : "7a327f1e-5a42-a4a5-aab0-9516248c6fca",  "username" : "username",  "password" : "123",  "enabled" : false,  "email" : "[email protected]",  "roles" : [ {  "role" : "ADMIN",  "project" : "MyProject"  }, {  "role" : "GUEST",  "project" : "AnotherProject"  } ]}'

9.6.3. Example response

122

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 392

{  "id" : "7a327f1e-5a42-a4a5-aab0-9516248c6fca",  "username" : "username",  "password" : "supersafe",  "enabled" : true,  "email" : "[email protected]",  "roles" : [ {  "id" : "2135f315-1772-4ad8-85c8-caa209400ef0",  "role" : "GUEST",  "project" : "AnotherProject"  }, {  "id" : "f9382f4e-9a42-43c7-bab0-3915719c6fca",  "role" : "ADMIN",  "project" : "MyProject"  } ]}

9.7. Changing the current User’s passwordPUT request with the a JSON object in the request body containing the fields old_pwd and new_pwd{host}/api/v1/users/changepwd

9.7.1. Request structure

Path Type Description

new_pwd String The user’s new password

old_pwd String The user’s old password

9.7.2. Example Request

$ curl 'http://localhost:8080/api/v1/users/changepwd' -i -X PUT -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "old_pwd" : "thatsTheOldPassword9",  "new_pwd" : "thatsTheNewPassword9"}'

123

9.7.3. Example response

HTTP/1.1 202 Accepted

9.8. Changing a User’s passwordIf you want to change another User’s password, you have to be an adminPUT request with the a JSON object in the request body containing the field new_pwd{host}/api/v1/users/changepwd/{username}

9.8.1. Request structure

Path Type Description

new_pwd String The user’s new password

9.8.2. Example Request

$ curl 'http://localhost:8080/api/v1/users/changepwd/testusername' -i -X PUT -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type:application/json' -d '{  "new_pwd" : "thatsTheNewPassword9"}'

9.8.3. Example response

HTTP/1.1 202 Accepted

9.9. Removing a UserDELETE requestthe id in the request belongs to the User that shall be deleted{host}/api/v1/users/{userId}

9.9.1. Example request

$ curl 'http://localhost:8080/api/v1/users/61a40e7c-a424-4d47-8413-532217ddcf4f' -i -XDELETE -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

124

9.9.2. Example response

HTTP/1.1 204 No Content

125

Chapter 10. Project

10.1. OverviewProjects are used to provide sets of users a separated working environment.

10.2. Adding a ProjectPOST request with a Project as JSON content in the request body{host}/api/v1/projects

10.2.1. Request structure

Path Type Description

description String The project description

name String The project’s name

quota String The project’s quota

10.2.2. Example request

$ curl 'http://localhost:8080/api/v1/projects' -i -X POST -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type: application/json' -d '{  "name" : "MyProject",  "description" : "The project description",  "quota" : {  "version" : 1,  "tenant" : "demo",  "cores" : 8,  "floatingIps" : 10,  "instances" : 10,  "keyPairs" : 3,  "ram" : 2048  }}'

10.2.3. Example response

126

HTTP/1.1 201 CreatedContent-Type: application/jsonContent-Length: 332

{  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "name" : "MyProject",  "description" : "The project description",  "quota" : {  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "version" : 1,  "tenant" : "demo",  "cores" : 8,  "floatingIps" : 10,  "instances" : 10,  "keyPairs" : 3,  "ram" : 2048  }}

10.3. Retrieving all ProjectsGET request{host}/api/v1/projects

10.3.1. response structure

Path Type Description

[] Object The array containing theprojects

10.3.2. Example request

$ curl 'http://localhost:8080/api/v1/projects' -i -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

10.3.3. Example response

127

HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 336

[ {  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "name" : "MyProject",  "description" : "The project description",  "quota" : {  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "version" : 1,  "tenant" : "demo",  "cores" : 8,  "floatingIps" : 10,  "instances" : 10,  "keyPairs" : 3,  "ram" : 2048  }} ]

10.4. Retrieving a ProjectGET requestthe id in the request is the id of the requested Project{host}/api/v1/projects/{projectId}

10.4.1. Response structure

Path Type Description

description String The project description

id String The project’s id

name String The project’s name

quota Object The project’s quota

10.4.2. Example request

$ curl 'http://localhost:8080/api/v1/projects/5c357f1e-9a42-c4a5-bab0-3916248c6fca' -i -H'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

128

10.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 332

{  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "name" : "MyProject",  "description" : "The project description",  "quota" : {  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "version" : 1,  "tenant" : "demo",  "cores" : 8,  "floatingIps" : 10,  "instances" : 10,  "keyPairs" : 3,  "ram" : 2048  }}

10.5. Updating a ProjectPUT request with the updated Project as a JSON object in the request body{host}/api/v1/projects/{projectId}

10.5.1. Request structure

Path Type Description

description String The project description

name String The project’s name

quota Object The project’s quota

10.5.2. Example Request

129

$ curl 'http://localhost:8080/api/v1/projects/5c357f1e-9a42-c4a5-bab0-3916248c6fca' -i -XPUT -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H 'Content-Type:application/json' -d '{  "name" : "MyUpdatedProject",  "description" : "The project description",  "quota" : {  "version" : 1,  "tenant" : "demo",  "cores" : 8,  "floatingIps" : 10,  "instances" : 10,  "keyPairs" : 3,  "ram" : 2048  }}'

10.5.3. Example response

HTTP/1.1 202 AcceptedContent-Type: application/jsonContent-Length: 339

{  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "name" : "MyUpdatedProject",  "description" : "The project description",  "quota" : {  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "version" : 1,  "tenant" : "demo",  "cores" : 8,  "floatingIps" : 10,  "instances" : 10,  "keyPairs" : 3,  "ram" : 2048  }}

10.6. Removing a ProjectDELETE requestthe id in the request belongs to the Project that shall be deleted{host}/api/v1/projects/{projectId}

130

10.6.1. Example request

$ curl 'http://localhost:8080/api/v1/projects/61a40e7c-a424-4d47-8413-532217ddcf4f' -i -XDELETE -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

10.6.2. Example response

HTTP/1.1 204 No Content

10.7. Removing multiple ProjectsDELETE requestthe ids in the request body specify the Projects to delete{host}/api/v1/projects/multipledelete

10.7.1. Example request

$ curl 'http://localhost:8080/api/v1/projects/multipledelete' -i -X DELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -d '[ "3a357f1e-a448-c4a5-f3b0-3c18248c6f92", "5c357f1e-9a42-c4a5-bab0-3916248c6fca" ]'

10.7.2. Example response

HTTP/1.1 204 No Content

131

Chapter 11. Key

11.1. OverviewKeys are objects representing keypairs that can be used to deploy NSRs.

11.2. Importing a KeyPOST request with a Key as JSON content in the request body{host}/api/v1/keys

The Key should contain the name and public key.

11.2.1. Request structure

Path Type Description

name String The Key’s name

publicKey String The public key

11.2.2. Example request

$ curl 'http://localhost:8080/api/v1/keys' -i -X POST -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -H'Content-Type: application/json' -d '{  "name" : "importedKey",  "publicKey" : "-----BEGIN RSA PRIVATE KEY-----\njH4fIILs2Z438S39DB4V6syh2Amge3UBNns329Fh4f8HR4EJG98yse3hpuDOX3i9\n-----END RSA PRIVATEKEY-----\n"}'

11.2.3. Example response

HTTP/1.1 201 Created

11.3. Retrieving all KeysGET request{host}/api/v1/keys

132

11.3.1. response structure

Path Type Description

[] Object The array of Keys

11.3.2. Example request

$ curl 'http://localhost:8080/api/v1/keys' -i -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

11.3.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 724

[ {  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "name" : "keyOne",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "publicKey" : "-----BEGIN RSA PRIVATE KEY-----\njH4fIILs2Z438S39DB4V6syh2Amge3UBNns329Fh4f8HR4EJG98yse3hpuDOX3i9\n-----END RSA PRIVATEKEY-----\n",  "fingerprint" : "42:1e:b0:08:f3:91:8f:41:75:7f:c0:ba:ce:9b:ab:0d:9c:24:13:73"}, {  "id" : "4a317f1e-7a42-c2a5-bab0-3916248c6fca",  "name" : "keyTwo",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "publicKey" : "-----BEGIN RSA PRIVATE KEY-----\njH4fIILs2Z438S39DB4V6syh2Amge3UBNns329Fh4f8HR4EJG98yse3hpuDOX3i9\n-----END RSA PRIVATEKEY-----\n",  "fingerprint" : "42:1e:b0:08:f3:91:8f:41:75:7f:c0:ba:ce:9b:ab:0d:9c:24:13:73"} ]

11.4. Retrieving a KeyGET requestthe id in the request is the id of the requested Key{host}/api/v1/keys/{keyId}

11.4.1. Response structure

133

Path Type Description

fingerprint String The Key’s fingerprint

id String The Key’s id

name String The Key’s name

projectId String The id of the project to whichthis Key belongs

publicKey String Tey public key

11.4.2. Example request

$ curl 'http://localhost:8080/api/v1/keys/5c357f1e-9a42-c4a5-bab0-3916248c6fca' -i -H'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

11.4.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 359

{  "id" : "5c357f1e-9a42-c4a5-bab0-3916248c6fca",  "name" : "keyOne",  "projectId" : "8a387f1e-9a42-43c7-bab0-3915719c6fca",  "publicKey" : "-----BEGIN RSA PRIVATE KEY-----\njH4fIILs2Z438S39DB4V6syh2Amge3UBNns329Fh4f8HR4EJG98yse3hpuDOX3i9\n-----END RSA PRIVATEKEY-----\n",  "fingerprint" : "42:1e:b0:08:f3:91:8f:41:75:7f:c0:ba:ce:9b:ab:0d:9c:24:13:73"}

11.5. Removing a KeyDELETE requestthe id in the request belongs to the Key that shall be deleted{host}/api/v1/keys/{keyId}

11.5.1. Example request

134

$ curl 'http://localhost:8080/api/v1/keys/07241c3b-9d50-44ba-a495-9d3b96c226bd' -i -XDELETE -H 'project-id: 8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearere92dfd35-4a7e-4d33-9592-5f1ac595095e'

11.5.2. Example response

HTTP/1.1 204 No Content

11.6. Removing multiple KeysDELETE requestthe ids in the request body specify the Keys to delete{host}/api/v1/keys/multipledelete

11.6.1. Example request

$ curl 'http://localhost:8080/api/v1/keys/multipledelete' -i -X DELETE -H 'project-id:8a387f1e-9a42-43c7-bab0-3915719c6fca' -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e' -d '[ "55555c52-f952-430c-b093-45acb2bbf50e", "5c357f1e-9a42-c4a5-bab0-3916248c6fca" ]'

11.6.2. Example response

HTTP/1.1 204 No Content

135

Chapter 12. Virtual Network FunctionManager (VNFM)

12.1. Retrieving all registered VNFM endpointsGET request{host}/api/v1/vnfmanagers

12.1.1. response structure

Path Type Description

[] Object The array containing the VNFMendpoints

12.1.2. Example request

$ curl 'http://localhost:8080/api/v1/vnfmanagers' -i -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

12.1.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 321

[ {  "id" : "03e77240-a327-418a-9a1f-2de0bc54400b",  "version" : 0,  "type" : "generic",  "endpointType" : "RABBIT",  "endpoint" : "generic-endpoint",  "description" : "The VNFM able to handle all the VNFs that follow specific conventions,see http://openbaton.github.io/",  "enabled" : true,  "active" : true} ]

12.2. Retrieving a registered VNFM’s endpointGET request

136

the id in the request is the id of the requested VNFM{host}/api/v1/vnfmanagers/{vnfmId}

12.2.1. Response structure

Path Type Description

active Boolean Whether the VNFM is active ornot

description String The VNFM description

enabled Boolean Whether the VNFM is enabled ornot

endpoint String Works like the endpoint’s name

endpointType String The endpoint’s type

id String The endpoint’s id

type String The VNFM’s type

version Number The endpoint’s version

12.2.2. Example request

$ curl 'http://localhost:8080/api/v1/vnfmanagers/03e77240-a327-418a-9a1f-2de0bc54400b' -i-H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

12.2.3. Example response

HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Content-Length: 317

{  "id" : "03e77240-a327-418a-9a1f-2de0bc54400b",  "version" : 0,  "type" : "generic",  "endpointType" : "RABBIT",  "endpoint" : "generic-endpoint",  "description" : "The VNFM able to handle all the VNFs that follow specific conventions,see http://openbaton.github.io/",  "enabled" : true,  "active" : true}

137

12.3. Deleting a registered VNFM from the NFVODELETE requestthe id in the request belongs to the VNFM that shall be deleted{host}/api/v1/vnfmanagers/{vnfmId}

12.3.1. Example request

$ curl 'http://localhost:8080/api/v1/vnfmanagers/03e77240-a327-418a-9a1f-2de0bc54400b' -i-X DELETE -H 'Authorization: Bearer e92dfd35-4a7e-4d33-9592-5f1ac595095e'

12.3.2. Example response

HTTP/1.1 204 No Content

138

Chapter 13. Other Components

13.1. VNFRecordDependencyDescribes dependencies between VNFs. Defined in terms of source and target VNF, i.e. target VNF"depends on" source VNF.

13.2. LifecycleEventDefines fuctional scripts or workflows for specific lifecycle events (e.g. initialization, termination,scaling) of a Network Service.See also http://openbaton.github.io/documentation/vnf-descriptor/.

13.3. Virtual Network Function ManagerThe VNF Manager is responsible for the lifecycle management of VNF instances.See also http://openbaton.github.io/documentation/vnfm-generic/.

13.4. VirtualDeploymentUnitPlease look at the documentation athttp://openbaton.github.io/documentation/vnf-descriptor/and at the specification athttp://www.etsi.org/deliver/etsi_gs/NFV-MAN/001_099/001/01.01.01_60/gs_NFV-MAN001v010101p.pdf

139