Newer
Older
"description": "Location of the MEC application instance. See note 5 and note 6.",
"$ref": "#/components/schemas/LocationInformation"
},
"mcioInfo": {
"type": "array",
"description": "Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7.",
"items": {
"$ref": "#/components/schemas/McioInfo"
}
},
"description": "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'"
},
"OperationalState": {
"type": "string",
"description": "Operational state is applicable in the instantiation state INSTANTIATED",
},
"AppInstanceInfo.links": {
"properties": {
"self": {
"type": "object",
"description": "Self referring URI.",
"$ref": "#/components/schemas/LinkType"
},
"instantiate": {
"type": "object",
"description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance in NOT_INSTANTIATED state). See note 3.",
"$ref": "#/components/schemas/LinkType"
},
"terminate": {
"type": "object",
"description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state).",
"$ref": "#/components/schemas/LinkType"
},
"operate": {
"type": "object",
"description": "Link to the \"operate\" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state).",
"$ref": "#/components/schemas/LinkType"
},
"configure_platform_for_app": {
"type": "object",
"description": "Link to the \"configure_platform_for_app\" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state). See note 4",
"$ref": "#/components/schemas/LinkType"
}
},
"description": "Links to resources related to this resource."
},
"LcmOperation": {
"enum": ["INSTATIATE", "OPERATE", "TERMINATE"],
"type": "string",
"description": "Type of the actual LCM operation represented by this application instance LCM operation occurrence",
},
"AppLcmOpOccNotification": {
"required": [
"id",
"notificationType",
"operationType",
"operationState",
"subscriptionId",
"timeStamp",
"appLcmOpOccId",
"appInstanceId",
"_links"
],
"properties": {
"id": {
"description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value."
},
"notificationType": {
"type": "string",
"description": "Discriminator for the different notification types. Shall be set to \"AppLcmOpOccStateChangeSubscription\" for this notification type."
},
"operationType": {
"type": "string",
"description": "Type of the LCM operation represented by this application instance LCM operation occurrence.",
"enum": ["INSTANTIATE", "OPERATE", "TERMINATE"]
},
"operationState": {
"type": "string",
"enum": [
"STARTING",
"PROCESSING",
"COMPLETED",
"FAILED",
"FAILED_TEMP"
]
},
"subscriptionId": {
"type": "string",
"description": "Identifier of the subscription related to this notification."
},
"timeStamp": {
"type": "object",
"description": "Date and time of the notification generation.",
"$ref": "#/components/schemas/TimeStamp"
},
"appLcmOpOccId": {
"type": "string",
"description": "Identifier of application lifecycle management operation occurrence."
},
"appInstanceId": {
"type": "string",
"description": "Identifier of application instance."
},
"_links": {
"$ref": "#/components/schemas/AppLcmOpOccNotification.links"
}
},
"description": "'This data type represents a notification related to state changes of an application LCM operation occurrence which informs the subscribers'"
"AppInstanceIdentifierCreationNotification": {
"title": "AppInstanceIdentifierCreationNotification",
"required": [
"id",
"notificationType",
"subscriptionId",
"timeStamp",
"appInstanceId",
"_links"
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value."
},
"notificationType": {
"type": "string",
"description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierCreationSubscription\" for this notification type."
},
"subscriptionId": {
"type": "string",
"description": "Identifier of the subscription related to this notification."
"type": "object",
"description": "Date and time of the notification generation.",
"$ref": "#/components/schemas/TimeStamp"
},
"appInstanceId": {
"type": "string",
"description": "The created application instance Identifier."
"type": "object",
"description": "Links to resources related to this notification.",
"$ref": "#/components/schemas/Notification._links"
}
}
},
"Notification._links": {
"type": "object",
"required": ["subscription", "appInstance"],
"properties": {
"subscription": {
"type": "object",
"description": "A link to the related subscription.",
"$ref": "#/components/schemas/LinkType"
},
"appInstance": {
"type": "object",
"description": "Link to the resource representing the created application instance.",
"$ref": "#/components/schemas/LinkType"
}
}
},
"AppInstanceIdentifierDeletionNotification": {
"title": "AppInstanceIdentifierDeletionNotification",
"required": [
"id",
"notificationType",
"subscriptionId",
"timeStamp",
"appInstanceId",
"_links"
],
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value."
},
"notificationType": {
"type": "string",
"description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierDeletionSubscription\" for this notification type."
},
"subscriptionId": {
"type": "string",
"description": "Identifier of the subscription related to this notification."
"type": "object",
"description": "Date and time of the notification generation.",
"$ref": "#/components/schemas/TimeStamp"
},
"appInstanceId": {
"type": "string",
"description": "The deleted application instance Identifier."
"type": "object",
"description": "Links to resources related to this notification.",
"$ref": "#/components/schemas/Notification._links"
}
}
},
"AppLcmOpOccNotification.links": {
"required": ["appInstance", "subscription", "appLcmOpOcc"],
"properties": {
"appInstance": {
"$ref": "#/components/schemas/LinkType"
},
"subscription": {
"$ref": "#/components/schemas/LinkType"
},
"appLcmOpOcc": {
"$ref": "#/components/schemas/LinkType"
},
"description": "Links to resources related to this resource."
},
"InstantiateAppRequest": {
"properties": {
"locationConstraints": {
"type": "object",
"description": "Defines the location constraints for the application instance to be created. See note 3.",
"$ref": "#/components/schemas/LocationConstraints"
},
"selectedMECHostInfo": {
"items": {
"$ref": "#/components/schemas/MECHostInformation"
},
"description": "Describes the information of selected host for the application instance. See note 2.\n"
},
"vimConnectionInfo": {
"items": {
"$ref": "#/components/schemas/VimConnectionInfo"
},
"description": "Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links. This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2."
},
"virtualComputeDescriptor": {
"type": "object",
"items": {
"$ref": "#/components/schemas/VirtualComputeDescriptor"
},
"description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM to realize the application\ninstance to be created. See note 1 and note 4.\n"
},
"osContainerDescriptor": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OsContainerDescriptor"
},
"description": "Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the \nsame host and same network namespace. See note 1, note 4 and note 5.\n"
},
"virtualStorageDescriptor": {
"type": "array",
"$ref": "#/components/schemas/VirtualStorageDescriptor"
"description": "Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1.\n"
},
"appTermCandsForCoord": {
"type": "object",
"items": {
"$ref": "#/components/schemas/AppTermCandsForCoord"
},
"description": "Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3."
},
"description": "NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD.\nNOTE 2: This field applies to Mm3 reference point only.\nNOTE 3: This field applies to Mm1 reference point only.\nNOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present.\nNOTE 5: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n"
},
"AppTermCandsForCoord": {
"type": "object",
"properties": {
"terminationOptions": {
"type": "array",
"description": "Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members.",
"items": {
"$ref": "#/components/schemas/AppTermCandsForCoord.terminationOptions"
}
}
}
},
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
"VirtualStorageDescriptor": {
"type": "object",
"required": ["id", "typeOfStorage"],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier of this VirtualStorageDesc in the VNFD."
},
"typeOfStorage": {
"type": "string",
"description": "Type of virtualised storage resource.",
"enum": ["BLOCK", "OBJECT", "FILE"]
},
"blockStorageData": {
"type": "object",
"$ref": "#/components/schemas/BlockStorageData",
"description": "Details of block storage."
},
"objectStorageData": {
"type": "object",
"$ref": "#/components/schemas/ObjectStorageData",
"description": "Details of object storage."
},
"fileStorageData": {
"type": "object",
"$ref": "#/components/schemas/FileStorageData",
"description": "Details of file storage."
},
"nfviMaintenanceInfo": {
"type": "object",
"$ref": "#/components/schemas/NfviMaintenanceInfo",
"description": "Information on the rules to be observed during NFVI operation and maintenance."
},
"perVnfcInstance": {
"type": "boolean",
"description": "Indicates whether the virtual storage resource shall be instantiated per VNFC instance."
}
}
},
"NfviMaintenanceInfo": {
"type": "object",
"required": ["impactNotificationLeadTime"],
"properties": {
"impactNotificationLeadTime": {
"type": "number",
"description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group."
},
"isImpactMitigationRequested": {
"type": "boolean",
"description": "When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact."
},
"supportedMigrationType": {
"type": "array",
"description": "Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1.",
"items": {
"type": "string",
"enum": ["NO_MIGRATION", "OFFLINE_MIGRATION", "LIVE_MIGRATION"]
}
},
"maxUndetectableInterruptionTime": {
"type": "number",
"description": "Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1)"
},
"minRecoveryTimeBetweenImpacts": {
"type": "number",
"description": "When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.)"
},
"maxNumberOfImpactedInstances": {
"type": "object",
"$ref": "#/components/schemas/MaxNumberOfImpactedInstances",
"description": "When present, specifies for different group sizes the maximum number of instances that can be impacted simultaneously within the group of virtualised resources without losing functionality. Zero cardinality indicates no constraint (see note 2). MaxNumberOfImpactedInstances is defined in clause 7.1.8.18. See note 3."
},
"minNumberOfPreservedInstances": {
"type": "object",
"$ref": "#/components/schemas/MinNumberOfPreservedInstances",
"description": "When present, specifies for different group sizes the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources. Zero cardinality indicates no constraint (see note 2). MinNumberOfPreservedInstances is defined in clause 7.1.8.22.See note 3."
}
},
"description": "NOTE 1: When the maximum undetectable interruption time is specified it constrains the live migration. If it cannot be\nguaranteed on an NFVI that the interruption caused by the live migration will be less than the indicated\nmaximum undetectable interruption time, then life migration should be downgraded according to the order of preference.\nNOTE 2: Impacts to instances of the group happening within the minimum recovery time are considered simultaneous\nimpacts.\nNOTE 3: Either \"maxNumberOfImpactedInstances\" or \"minNumberOfPreservedInstances\" may be provided, but not both\n"
},
"MaxNumberOfImpactedInstances": {
"type": "object",
"required": ["maxNumberOfImpactedInstances"],
"properties": {
"groupSize": {
"type": "integer",
"description": "Determines the size of the group for which the maxNumberOfImpactedInstances is specified."
},
"maxNumberOfImpactedInstances": {
"type": "integer",
"description": "The maximum number of instances that can be impacted simultaneously within the group of the specified size."
}
},
"description": "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form an ascending ordered list of groupSizes. \nNOTE 2: The number of instances in the group for which the maxNumberOfImpactedInstances is specified may be equal to groupSize or less. When the number of instances is less than \n the groupSize, it shall be at least 1 if this is the first groupSize in the ordered list of groupSizes, or it shall be greater by at least 1 than the previous groupSize in the ordered list of groupSizes.\n"
},
"CommunicationInterface": {
"type": "object",
"properties": {
"ipAddresses": {
"type": "array",
"description": "Entry point information of the service as one or more pairs of IP address and port.",
"items": {
"$ref": "#/components/schemas/ipAddresses"
}
}
}
},
"ipAddresses": {
"type": "object",
"required": ["host", "port"],
"properties": {
"host": {
"type": "string",
"description": "Host portion of the address."
},
"port": {
"type": "integer",
"description": "Port portion of the address."
}
}
},
"MinNumberOfPreservedInstances": {
"type": "object",
"required": ["minNumberOfPreservedInstances"],
"properties": {
"groupSize": {
"type": "integer",
"description": "When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited."
},
"minNumberOfPreservedInstances": {
"type": "integer",
"description": "The minimum number of instances which need to be preserved simultaneously within the group of the specified size."
}
},
"description": "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form \n an ascending ordered list of groupSizes. \nNOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal \n to groupSize or less.\n"
},
"FileStorageData": {
"type": "object",
"required": [
"sizeOfStorage",
"fileSystemProtocol",
"intVirtualLinkDesc"
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
"properties": {
"sizeOfStorage": {
"type": "number",
"description": "Size of virtualised storage resource in GB."
},
"fileSystemProtocol": {
"type": "string",
"description": "The shared file system protocol (e.g. NFS, CIFS)."
},
"intVirtualLinkDesc": {
"type": "object",
"$ref": "#/components/schemas/VnfVirtualLinkDesc",
"description": "Reference of the internal VLD which this file storage connects to."
}
}
},
"VnfVirtualLinkDesc": {
"type": "object",
"required": [
"virtualLinkDescId",
"virtualLinkDescFlavour",
"connectivityType"
],
"properties": {
"virtualLinkDescId": {
"type": "string",
"description": "Unique identifier of this internal VLD in VNFD."
},
"virtualLinkDescFlavour": {
"type": "array",
"description": "Describes a specific flavour of the VL with specific bitrate requirements.",
"items": {
"$ref": "#/components/schemas/VirtualLinkDescFlavour"
}
},
"connectivityType": {
"type": "object",
"description": "See clause 7.1.7.3.",
"$ref": "#/components/schemas/ConnectivityType"
},
"testAccess": {
"type": "array",
"description": "Specifies test access facilities expected on the VL.",
"items": {
"type": "string",
"example": "passive monitoring"
}
},
"description": {
"type": "string",
"description": "Provides human-readable information on the purpose of the VL.",
"example": "control plane traffic"
},
"monitoringParameter": {
"type": "array",
"description": "Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM.",
"items": {
"$ref": "#/components/schemas/MonitoringParameter"
}
},
"nfviMaintenanceInfo": {
"type": "object",
"description": "When present, provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance (e.g. NFVI resource upgrades). NfviMaintenanceInfo is defined in clause 7.1.8.17.",
"$ref": "#/components/schemas/NfviMaintenanceInfo"
},
"externallyManaged": {
"type": "string",
"description": "Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed.",
"enum": ["REQUIRED", "ALLOWED"],
"default": "ALLOWED"
}
}
},
"ConnectivityType": {
"type": "object",
"required": ["layerProtocol"],
"properties": {
"layerProtocol": {
"type": "array",
"description": "Specifies the protocols that the VL uses See note 1 and note 2.\n",
"items": {
"type": "string",
"enum": [
"Ethernet",
"MPLS",
"ODU2",
"IPV4",
"IPV6",
"Pseudo-Wire",
"Etc"
]
},
"minItems": 1
},
"flowPattern": {
"type": "string",
"description": "Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.)."
}
},
"description": "NOTE 1 The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers. \nNOTE 2 If more than 1 values are present, the first value represents the highest layer protocol data, and the last value represents the lowest layer protocol data. \n"
},
"VirtualLinkDescFlavour": {
"type": "object",
"required": ["flavourId"],
"properties": {
"flavourId": {
"type": "string",
"description": "Identifies a flavour within a VnfVirtualLinkDesc."
},
"qos": {
"type": "object",
"$ref": "#/components/schemas/QoS",
"description": "QoS of the VL."
}
}
},
"QoS": {
"type": "object",
"required": ["latency", "packetDelayVariation"],
"properties": {
"latency": {
"type": "number",
"description": "Latency of the VL in milliseconds."
},
"packetDelayVariation": {
"type": "number",
"description": "Packet delay variation of the VL in milliseconds."
},
"packetLossRatio": {
"type": "number",
"description": "Packet loss ratio of the VL in percentage."
}
}
},
"ObjectStorageData": {
"type": "object",
"properties": {
"maxSizeOfStorage": {
"type": "number",
"description": "Max size of virtualised storage resource in GB."
}
}
},
"AppTermCandsForCoord.terminationOptions": {
"type": "object",
"required": ["appInstIdTerminationCands"],
"properties": {
"appInstIdTerminationCands": {
"type": "array",
"description": "List of application instance identifiers, constituting a candidate set for termination.",
"items": {
"type": "string"
}
}
},
"LinkType": {
"title": "LinkType",
"type": "object",
"properties": {
"href": {
"type": "string",
"description": "URI referring to a resource"
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
"OsContainerDescriptor": {
"title": "OsContainerDescriptor",
"type": "object",
"required": ["osContainerDescId", "name", "description", "swImageDesc"],
"properties": {
"osContainerDescId": {
"type": "string",
"description": "Unique identifier of this OsContainerDesc in the VNFD."
},
"name": {
"type": "string",
"description": "Human readable name of this OS container."
},
"description": {
"type": "string",
"description": "Human readable description of this OS container."
},
"requestedCpuResources": {
"type": "integer",
"description": "Number of CPU resources requested for the container (e.g. in milli-CPU-s)."
},
"requestedMemoryResources": {
"type": "number",
"description": "Amount of memory resources requested for the container (e.g. in MB)."
},
"requestedEphemeralStorageResources": {
"type": "number",
"description": "Size of ephemeral storage resources requested for the container (e.g. in GB)."
},
"extendedResourceRequests": {
"type": "array",
"items": {
"$ref": "#/components/schemas/KeyValuePairs"
},
"description": "An array of key-value pairs of extended resources required by the container see note."
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
},
"cpuResourceLimit": {
"type": "integer",
"description": "Number of CPU resources the container can maximally use (e.g. in milli-CPU)."
},
"memoryResourceLimit": {
"type": "number",
"description": "Amount of memory resources the container can maximally use (e.g. in MB)."
},
"ephemeralStorageResourceLimit": {
"type": "number",
"description": "Size of ephemeral storage resources the container can maximally use (e.g. in GB)."
},
"hugePageResources": {
"type": "object",
"description": "Specifies HugePages resources requested for the container, which the container can maximally use.",
"additionalProperties": {
"type": "string"
}
},
"cpuPinningRequirements": {
"type": "object",
"$ref": "#/components/schemas/VirtualCpuPinningData",
"description": "Requirements for CPU pinning configuration for this OS container."
},
"swImageDesc": {
"type": "object",
"$ref": "#/components/schemas/SwImageDesc",
"description": "Describes the software image realizing this OS container."
},
"bootData": {
"type": "string",
"description": "Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent."
},
"monitoringParameters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MonitoringParameter"
},
"description": "Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM."
}
}
},
"MonitoringParameter": {
"type": "object",
"required": ["monitoringParameterId", "performanceMetric"],
"properties": {
"monitoringParameterId": {
"type": "string",
"description": "Unique identifier of the monitoring parameter."
},
"name": {
"type": "string",
"description": "Human readable name of the monitoring parameter."
},
"performanceMetric": {
"type": "string",
"description": "Specifies the virtualised resource performance metric."
},
"collectionPeriod": {
"type": "string",
"description": "An attribute that describes the periodicity at which to collect the performance information."
}
}
},
"VirtualComputeDescriptor": {
"title": "VirtualComputeDescriptor",
"type": "object",
"required": ["virtualComputeDescId", "virtualMemory", "virtualCpu"],
"properties": {
"virtualComputeDescId": {
"type": "string",
"description": "Unique identifier of this VirtualComputeDesc in the VNFD."
},
"logicalNode": {
"type": "array",
"description": "The logical node requirements.",
"items": {
"$ref": "#/components/schemas/LogicalNodeRequirements"
}
},
"requestAdditionalCapabilities": {
"type": "array",
"description": "Specifies requirements for additional capabilities. These may be for a range of purposes. One example is acceleration related capabilities. See clause 7.1.9.5.",
"items": {
"$ref": "#/components/schemas/RequestedAdditionalCapabilityData"
}
},
"computeRequirements": {
"description": "Specifies compute requirements.",
"type": "array",
"items": {
"type": "string",
"format": "not-specified"
}
},
"virtualMemory": {
"type": "object",
"description": "The virtual memory of the virtualised compute. See clause 7.1.9.3.2.",
"$ref": "#/components/schemas/VirtualMemoryData"
},
"virtualCpu": {
"type": "object",
"description": "The virtual CPU(s) of the virtualised compute. See clause 7.1.9.2.3.",
"$ref": "#/components/schemas/VirtualCpuData"
},
"virtualDisk": {
"type": "array",
"description": "The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3.",
"items": {
"$ref": "#/components/schemas/BlockStorageData"
}
}
}
},
"BlockStorageData": {
"type": "object",
"required": ["sizeOfStorage"],
"properties": {
"sizeOfStorage": {
"type": "number",
"description": "Size of virtualised storage resource in GB."
},
"vduStorageRequirements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/KeyValuePairs"
"description": "An array of key-value pairs that articulate the storage deployment requirements."
},
"rdmaEnabled": {
"type": "boolean",
"description": "Indicate if the storage support RDMA."
},
"swImageDesc": {
"type": "object",
"$ref": "#/components/schemas/SwImageDesc",
"description": "References the software image to be loaded on the VirtualStorage resource created\nbased on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note.\n"
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
}
}
},
"SwImageDesc": {
"type": "object",
"required": ["id", "name", "version", "containerFormat", "swImage"],
"properties": {
"id": {
"type": "string",
"description": "The identifier of this software image."
},
"name": {
"type": "string",
"description": "The name of this software image."
},
"version": {
"type": "string",
"description": "The version of this software image."
},
"checksum": {
"$ref": "#/components/schemas/ChecksumData",
"description": "The checksum of the software image file. See note 3."
},
"containerFormat": {
"type": "string",
"description": "The container format describes the container file format in which software image is provided."
},
"diskFormat": {
"type": "string",
"description": "The disk format of a software image is the format of the underlying disk image. See note 1."
},
"minDisk": {
"type": "number",
"description": "The minimal disk size requirement for this software image. The value of the \"size of storage\" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1."
},
"minRam": {
"type": "number",
"description": "The minimal RAM requirement for this software image. The value of the \"size\" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2."
},
"size": {
"type": "number",
"description": "The size of this software image file. See note 3."
},
"swImage": {
"type": "object",
"$ref": "#/components/schemas/SwImageDesc",
"description": "This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL."
},
"operatingSystem": {
"type": "string",
"description": "Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used."
},
"supportedVirtualisationEnvironment": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image."
}
},
"description": "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise.\nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise.\nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n"
},
"ChecksumData": {
"type": "object",
"required": ["algorithm", "hash"],
"properties": {
"algorithm": {
"type": "string",
"description": "Specifies the algorithm used to obtain the checksum value. See note."
},
"hash": {
"type": "string",
"description": "Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers.\n"
}
},
"description": "NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2].\n"
},
"LogicalNodeRequirements": {
"type": "object",
"required": ["id", "logicalNodeRequirementDetail"],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Identifies this set of logical node requirements"
},
"logicalNodeRequirementDetail": {
"description": "The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node.\n",
"type": "array",
"items": {
"type": "string",
"format": "not-specified"
}
}
}
},
"RequestedAdditionalCapabilityData": {
"type": "object",
"required": [
"requestedAdditionalCapabilityName",
"supportMandatory",
"targetPerformanceParameters"
],
"properties": {
"requestedAdditionalCapabilityName": {
"type": "string",
"description": "Specifies a requested additional capability for the VDU"
},
"supportMandatory": {
"type": "boolean",
"description": "Indicates whether the requested additional capability is mandatory for successful operation"
},
"minRequestedAdditionalCapabilityVersion": {
"type": "string",
"description": "Specifies the minimum version of the requested additional capability"
},
"preferredRequestedAdditionalCapabilityVersion": {
"type": "string",
"description": "Specifies the preferred version of the requested additional capability"
},
"targetPerformanceParameters": {
"type": "array",
"description": "Specifies specific attributes, dependent on the requested additional capability type.",
"items": {
"$ref": "#/components/schemas/KeyValuePairs"
"KeyValuePairs": {
"description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n",
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"VirtualMemoryData": {
"type": "object",
"required": ["virtualMemSize"],
"properties": {
"virtualMemSize": {
"type": "number",
"description": "Amount of virtual memory in MB."
},
"virtualMemOversubscriptionPolicy": {
"type": "string",
"description": "The memory core oversubscription policy in terms of virtual memory to physical memory\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n"
},
"vduMemRequirements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/KeyValuePairs"
},
"description": "Array of key-value pair requirements on the memory for the VDU."
},
"numaEnabled": {
"type": "boolean",
"description": "Specifies the memory allocation to be cognisant of the relevant process/core allocation."
},
"hugePagesRequirements": {
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
"description": "Specifies requirements on the huge pages resources for the virtual memory."
}
}
},
"VirtualCpuData": {
"type": "object",
"required": ["numVirtualCpu"],
"properties": {
"cpuArchitecture": {
"type": "string",
"description": "CPU architecture type. Examples are x86, ARM."
},
"numVirtualCpu": {
"type": "integer",
"description": "Number of virtual CPUs."
},
"virtualCpuClock": {
"type": "number",
"description": "Minimum virtual CPU clock rate (e.g. in MHz)."
},
"virtualCpuOversubscriptionPolicy": {
"type": "string",
"description": "The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads."
},
"vduCpuRequirements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/KeyValuePairs"
},
"description": "Array of key-value pair requirements on the Compute (CPU) for the VDU."
},
"virtualCpuPinning": {
"$ref": "#/components/schemas/VirtualCpuPinningData"
}
}
},
"VirtualCpuPinningData": {
"type": "object",
"properties": {
"virtualCpuPinningPolicy": {
"type": "string",
"description": "Indicates the policy for CPU pinning.",
"enum": ["STATIC", "DYNAMIC"]
},