Aller au contenu principal

Deploying Your First Virtual Network Function

This guide walks you through creating and deploying a Virtual Network Function instance using the Virtual Network Edge API.

Prerequisites​

Before you begin, ensure you have:

  1. Valid Authentication

    • Bearer token or API key for API access
    • Proper authentication headers configured
  2. Valid Authorization

    • Check for required permissions to be verified before accessing apis
    • If you dont have required authorization , please contact support
  3. Active Project

    • Project ID where you'll deploy the VNF
    • Access permissions to the project
  4. Available Resources

    • Selected VNF model (from catalog)
    • Available zone/POP for deployment
    • Appropriate flavor for your workload
  5. Model Information

    • Virtual Network Function Model ID
    • Image version compatible with your requirements
    • Deployment mode preference (single/dual/cluster)

Step 1: Browse Available VNF Models​

First, discover available VNF models and their specifications.

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/virtualnetworkfunctionmodels' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Accept-Language: en'

Response:

{
"content": [
{
"id": "model-uuid-1",
"name": "Firewall VNF",
"description": "Enterprise firewall solution",
"type": "firewall",
"category": "standalone",
"imageVendor": "Fortinet",
"imageModel": "FortiGate",
"imageVersions": ["7.0.0", "7.2.0", "8.0.0"],
"deploymentModes": ["single", "dual", "cluster"],
"flavors": [
{
"id": "flavor-small",
"name": "Small",
"cpu": 4,
"ram": 8,
"disk": 100,
"dpdk": false
}
],
"zones": [
{
"id": "zone-1",
"name": "Paris POP",
"region": "EU-WEST"
}
]
}
]
}

Step 2: Get Detailed Model Information​

Retrieve detailed specifications for your chosen model.

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/virtualnetworkfunctionmodels/model-uuid-1' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Accept-Language: en'

This returns complete model details including:

  • Available image versions
  • Supported deployment modes
  • Required technical characteristics
  • Available zones and flavors
  • Contract durations

Step 3: Create VNF Instance​

Create a new VNF instance with your desired configuration.

Request:

curl -X POST 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/virtualnetworkfunctions' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "prod-firewall-01",
"description": "Production firewall for branch office",
"virtualNetworkFunctionModelId": "model-uuid-1",
"imageVersion": "7.2.0",
"deploymentMode": "single",
"deploymentCharacteristics": {
"virtualMachineName": "fw-prod-01",
"zoneId": "zone-1",
"flavorId": "flavor-small",
"publicIpAddresses": ["ipv4"],
"customUserData": "optional configuration data"
},
"technicalCharacteristics": [
{
"id": "char-license-key",
"value": "your-license-key-here"
}
],
"predefinedSecurityGroupIds": ["sg-uuid-1"],
"contractDurationId": "duration-uuid-1"
}'

Response (201 Created):

{
"id": "vnf-uuid-1",
"name": "prod-firewall-01",
"description": "Production firewall for branch office",
"projectId": "project-uuid",
"state": "draft",
"virtualNetworkFunctionModelId": "model-uuid-1",
"imageVersion": "7.2.0",
"deploymentMode": "single",
"deploymentCharacteristic": {
"virtualMachineName": "fw-prod-01",
"zoneId": "zone-1",
"flavorId": "flavor-small",
"publicIpAddresses": [
{
"publicIpAddress": "192.0.2.1",
"family": "ipv4"
}
],
"state": "down"
},
"createdDate": "2024-06-24T10:30:00.000Z",
"createdRequester": "siu_12345",
"lastModifiedDate": "2024-06-24T10:30:00.000Z",
"href": "/api/v1/projects/project-uuid/virtualnetworkfunctions/vnf-uuid-1"
}

Step 4: Verify VNF Configuration​

Check your newly created VNF details.

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/virtualnetworkfunctions/vnf-uuid-1' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

The VNF starts in DRAFT state. Review all configuration before deployment.

Steps before Deploying virtualNetworkFunction​

Request:

curl -L -X POST 'https://api.orange.com/evolutionplatform/vnfaaservice/api/v1/projects/:projectId/vnfs/:vnfId/actions/allocateipaddresses' \
-H 'Authorization: Bearer <token>'

Please make sure IP address allocation to the VNE for the required models.

Step 5: Deploy VNF to Infrastructure​

Once satisfied with the configuration, deploy the VNF.

Request:

curl -X POST 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/virtualnetworkfunctions/vnf-uuid-1/actions/deploy' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json'

Response (202 Accepted):

{
"id": "job-uuid-1",
"projectId": "project-uuid",
"type": "deploy",
"startDate": "2024-06-24T10:31:00.000Z",
"state": "processing",
"resourceType": "virtualNetworkFunction",
"resourceId": "vnf-uuid-1",
"messages": [
{
"id": "msg-1",
"type": "informational",
"date": "2024-06-24T10:31:00.000Z",
"message": "VNF deployment initiated"
}
]
}

The API returns a Job ID for tracking asynchronous deployment progress. Status : ACTIVE

Step 6: Monitor Deployment Status​

Track the deployment progress using the Job ID.

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/jobs/job-uuid-1' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Response:

{
"id": "job-uuid-1",
"state": "processing",
"type": "deploy",
"startDate": "2024-06-24T10:31:00.000Z",
"messages": [
{
"type": "informational",
"message": "Creating virtual machine..."
},
{
"type": "informational",
"message": "Configuring network interfaces..."
},
{
"type": "informational",
"message": "Starting VNF services..."
}
]
}

Job States:

  • processing - Deployment in progress
  • succeeded - Deployment completed successfully
  • failed - Deployment encountered an error

Step 7: Access Deployed VNF​

Once deployment completes, check the VNF status.

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/virtualnetworkfunctions/vnf-uuid-1' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Response:

{
"id": "vnf-uuid-1",
"state": "active",
"deploymentCharacteristic": {
"state": "up",
"publicIpAddresses": [
{
"publicIpAddress": "192.0.2.1",
"family": "ipv4"
}
]
}
}

Your VNF is now:

  • State: active
  • VM State: up
  • Accessible: Via the assigned public IP address
  • Ready: For configuration and use

Step 8: Deprovision the VNF​

Deprovisioning removes the technical resources from the infrastructure while keeping the VNF record with your Public Ip addresses. The VNF must be in ACTIVE state before deprovisioning.

Request:

curl -X POST 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/actions/deprovision' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Response (202 Accepted):

The response includes headers to track the async workflow execution:

HeaderDescription
X-Workflow-Execution-HrefURI to poll for deprovision progress
X-Retry-AfterRecommended polling interval in seconds

Track the deprovision workflow using the returned href:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/workflowexecutions/workflow-uuid-1' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Response:

{
"id": "workflow-uuid-1",
"operation": "DEPROVISION_VNF",
"status": "SUCCESS",
"startDate": "2024-06-24T11:00:00",
"endDate": "2024-06-24T11:05:00",
"resourceId": "vnf-uuid-1",
"resourceName": "prod-firewall-01",
"resourceType": "VNF",
"stepExecutions": [
{
"id": "step-1",
"operation": "DEPROVISION_VM",
"status": "SUCCESS",
"startDate": "2024-06-24T11:00:05",
"endDate": "2024-06-24T11:04:50"
}
]
}

VNF state after deprovision: DESIGNED

remarque

After deprovisioning, the VNF record remains and can be re-provisioned using the provision action.

Step 9: Delete the VNF​

Permanently deletes the VNF and all its associated infrastructure resources (if any exist).

Request:

curl -X DELETE 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Response (202 Accepted) — when infrastructure resources exist and must be cleaned up asynchronously:

HeaderDescription
X-Workflow-Execution-HrefURI to track the deletion workflow
X-Retry-AfterRecommended polling interval in seconds

Response (204 No Content) — when no infrastructure resources were provisioned (VNF was in DRAFT or DESIGNED state).

attention

Deletion is irreversible.

Error Codes:

CodeDescription
409A workflow execution is already processing on this VNF — wait for it to complete
404VNF not found
403Access denied

Step 10: Monitor VNF Resources​

Once your VNF is provisioned, you can retrieve real-time and historical metrics for each virtual device. You need the virtualDeviceId from the VNF response (found in the virtualDevices array).

All monitoring endpoints share the same query parameters:

ParameterRequiredDescriptionExample
start✅Start of the time range (ISO 8601)2024-06-24T10:00:00Z
end❌End of the time range (defaults to now)2024-06-24T11:00:00Z
step❌Aggregation interval (m, h, d, w)5m, 1h

The minimum step depends on the period: 1m (≤6h), 5m (≤24h), 15m (≤7d), 1h (≤30d), 1d (longer).

CPU Usage​

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/virtualdevices/device-uuid-1/monitoring/cpu?start=2024-06-24T10:00:00Z&end=2024-06-24T11:00:00Z&step=5m' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Memory Usage​

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/virtualdevices/device-uuid-1/monitoring/memory?start=2024-06-24T10:00:00Z&end=2024-06-24T11:00:00Z&step=5m' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Disk Usage​

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/virtualdevices/device-uuid-1/monitoring/disk?start=2024-06-24T10:00:00Z&end=2024-06-24T11:00:00Z&step=5m' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Disk usage reports bytes/s written to disk per step.

Network Usage​

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/virtualdevices/device-uuid-1/monitoring/network?start=2024-06-24T10:00:00Z&end=2024-06-24T11:00:00Z&step=5m' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Network usage reports traffic exchanged (received + transmitted) in kilobytes per step.

Device Status​

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/virtualdevices/device-uuid-1/monitoring/status?start=2024-06-24T10:00:00Z&end=2024-06-24T11:00:00Z&step=5m' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

All monitoring endpoints return a PrometheusResult response:

{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {
"instance": "device-uuid-1",
"__name__": "cpu_usage_percent"
},
"values": [
["1719223200", "12.5"],
["1719223500", "14.2"],
["1719223800", "11.8"]
]
}
]
}
}

Each entry in values is a pair of [unix_timestamp, sample_value].

List All Workflow Executions for a VNF​

Track the full history of operations (provision, deprovision, delete, etc.) performed on a VNF:

curl -X GET 'https://api.orange.com/evolutionplatform/proxy/vnfaaservice/api/v1/projects/project-uuid/vnfs/vnf-uuid-1/workflowexecutions?sort=-endDate&limit=10' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'X-API-KEY: YOUR_API_KEY'

Response (200 OK):

[
{
"id": "workflow-uuid-1",
"operation": "PROVISION_VNF",
"status": "SUCCESS",
"startDate": "2024-06-24T10:31:00",
"endDate": "2024-06-24T10:45:00",
"resourceId": "vnf-uuid-1",
"resourceName": "prod-firewall-01"
}
]

Response headers include X-Total-Count (total items) and X-Result-Count (returned items) for pagination.

Common Configuration Patterns​

High Availability Deployment​

For production workloads requiring redundancy:

{
"name": "prod-firewall-ha",
"deploymentMode": "dual",
"deploymentCharacteristics": {
"virtualMachineName": "fw-prod",
"zoneId": "zone-1",
"flavorId": "flavor-medium",
"publicIpAddresses": ["ipv4", "ipv6"]
}
}

Multi-Zone Deployment​

For geographic distribution:

{
"name": "distributed-vnf",
"deploymentMode": "cluster",
"deploymentCharacteristics": {
"virtualMachineName": "vnf-cluster",
"zoneId": "zone-1",
"flavorId": "flavor-large",
"publicIpAddresses": ["ipv4"]
}
}

Development/Test Deployment​

For non-production use:

{
"name": "test-vnf",
"deploymentMode": "single",
"deploymentCharacteristics": {
"virtualMachineName": "test-vnf",
"zoneId": "zone-dev",
"flavorId": "flavor-small"
}
}

Troubleshooting​

Deployment Fails​

Check the Job messages for specific error details:

Common Use Cases​

List recent workflow executions for a tenant​

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/vnfaaservice/api/v1/tenants/{tenantId}/workflowexecutions?sort=-endDate&limit=10' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Filter by resource​

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/vnfaaservice/api/v1/tenants/{tenantId}/workflowexecutions?resourceId={vnfId}' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Get a specific workflow execution​

Request:

curl -X GET 'https://api.orange.com/evolutionplatform/vnfaaservice/api/v1/tenants/{tenantId}/workflowexecutions/{workflowExecutionId}' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

API Reference For complete endpoint documentation, see the API Reference.

Tags:ConsoleAPIWorkflowExecution Overview Workflow Execution Attributes Common Use Cases List recent workflow executions for a tenant Filter by resource Get a specific workflow execution

Request:

curl -L 'https://api.orange.com/evolutionplatform/vnfaaservice/api/v1/tenants/:tenantId/workflowexecutions' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>'

Response:

[
{
"id": "string",
"projectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"requestId": "string",
"requesterId": "string",
"operation": "string",
"startDate": "2024-07-29T15:51:28.071Z",
"endDate": "2024-07-29T15:51:28.071Z",
"status": "string",
"messages": [
{
"type": "string",
"date": "2024-07-29T15:51:28.071Z",
"source": "string",
"code": 0,
"message": "string",
"description": "string"
}
],
"stepExecutions": [
{
"id": "string",
"operation": "string",
"startDate": "2024-07-29T15:51:28.071Z",
"endDate": "2024-07-29T15:51:28.071Z",
"status": "string",
"resourceId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"source": "string",
"tries": 0,
"messages": [
{
"type": "string",
"date": "2024-07-29T15:51:28.071Z",
"source": "string",
"code": 0,
"message": "string",
"description": "string"
}
]
}
]
}
]

Common issues:

  • Insufficient zone capacity: Try alternative zone
  • Invalid flavor: Verify flavor availability in zone
  • License issues: Check technical characteristics
  • Network configuration: Validate security groups

VNF Not Accessible​

Verify network configuration:

  1. Check public IP assignment
  2. Verify security group rules (egress/ingress)
  3. Confirm zone connectivity
  4. Test network connectivity from client

Next Steps​

After successful deployment: