{
  "properties": {
    "vnfd-catalog": {
      "type": "object",
      "properties": {
        "schema-version": {
          "type": "string",
          "description": "Schema version for the VNFD. If unspecified, it assumes v3.0",
          "pattern": ""
        },
        "vnfd": {
          "type": "array",
          "additionalProperties": false,
          "items": {
            "type": "object",
            "properties": {
              "logo": {
                "type": "string",
                "description": "Vendor logo for the Virtual Network Function",
                "pattern": ""
              },
              "mgmt-interface": {
                "type": "object",
                "properties": {
                  "dashboard-params": {
                    "type": "object",
                    "properties": {
                      "https": {
                        "type": "boolean",
                        "description": "Pick HTTPS instead of HTTP , Default is false"
                      },
                      "path": {
                        "type": "string",
                        "description": "The HTTP path for the dashboard",
                        "pattern": ""
                      },
                      "port": {
                        "type": "number",
                        "description": "The HTTP port for the dashboard"
                      }
                    },
                    "additionalProperties": false
                  },
                  "ip-address": {
                    "description": "",
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?"
                      },
                      {
                        "type": "string",
                        "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                      }
                    ]
                  },
                  "vdu-id": {
                    "type": "string",
                    "description": ""
                  },
                  "cp": {
                    "type": "string",
                    "description": ""
                  },
                  "port": {
                    "type": "number",
                    "description": "Port for the management interface."
                  }
                },
                "additionalProperties": false
              },
              "operational-status": {
                "description": "The operational status of the VNF\n init                : The VNF has just started.\n running             : The VNF is active in VM\n upgrading           : The VNF is being upgraded (EXPERIMENTAL)\n terminate           : The VNF is being terminated\n terminated          : The VNF is in the terminated state.\n failed              : The VNF  instantiation failed.\n",
                "properties": {
                  "type": {
                    "enum": [
                      "init",
                      "running",
                      "upgrading",
                      "terminate",
                      "terminated",
                      "failed"
                    ]
                  }
                }
              },
              "description": {
                "type": "string",
                "description": "Description of the VNFD.",
                "pattern": ""
              },
              "short-name": {
                "type": "string",
                "description": "Short name to appear as label in the UI",
                "pattern": ""
              },
              "vendor": {
                "type": "string",
                "description": "Vendor of the VNFD.",
                "pattern": ""
              },
              "version": {
                "type": "string",
                "description": "Version of the VNFD",
                "pattern": ""
              },
              "vdu": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "cloud-init-file": {
                      "type": "string",
                      "description": "Name of file with contents of cloud-init script in cloud-config format",
                      "pattern": ""
                    },
                    "name": {
                      "type": "string",
                      "description": "Unique name for the VDU",
                      "pattern": ""
                    },
                    "host-epa": {
                      "type": "object",
                      "properties": {
                        "cpu-core-thread-count": {
                          "type": "integer",
                          "description": "Number of threads per cores on the host."
                        },
                        "om-cpu-model-string": {
                          "type": "string",
                          "description": "OpenMANO CPU model string",
                          "pattern": ""
                        },
                        "cpu-socket-count": {
                          "type": "integer",
                          "description": "Number of sockets on the host."
                        },
                        "cpu-core-count": {
                          "type": "integer",
                          "description": "Number of cores on the host."
                        },
                        "cpu-arch": {
                          "description": "Host CPU architecture.",
                          "properties": {
                            "type": {
                              "enum": [
                                "PREFER_X86",
                                "REQUIRE_X86",
                                "PREFER_X86_64",
                                "REQUIRE_X86_64",
                                "PREFER_I686",
                                "REQUIRE_I686",
                                "PREFER_IA64",
                                "REQUIRE_IA64",
                                "PREFER_ARMV7",
                                "REQUIRE_ARMV7",
                                "PREFER_ARMV8",
                                "REQUIRE_ARMV8"
                              ]
                            }
                          }
                        },
                        "cpu-model": {
                          "description": "Host CPU model. Examples include: SandyBridge,\nIvyBridge",
                          "properties": {
                            "type": {
                              "enum": [
                                "PREFER_WESTMERE",
                                "REQUIRE_WESTMERE",
                                "PREFER_SANDYBRIDGE",
                                "REQUIRE_SANDYBRIDGE",
                                "PREFER_IVYBRIDGE",
                                "REQUIRE_IVYBRIDGE",
                                "PREFER_HASWELL",
                                "REQUIRE_HASWELL",
                                "PREFER_BROADWELL",
                                "REQUIRE_BROADWELL",
                                "PREFER_NEHALEM",
                                "REQUIRE_NEHALEM",
                                "PREFER_PENRYN",
                                "REQUIRE_PENRYN",
                                "PREFER_CONROE",
                                "REQUIRE_CONROE",
                                "PREFER_CORE2DUO",
                                "REQUIRE_CORE2DUO"
                              ]
                            }
                          }
                        },
                        "cpu-feature": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "feature": {
                                "description": "CPU feature.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "PREFER_AES",
                                      "REQUIRE_AES",
                                      "PREFER_CAT",
                                      "REQUIRE_CAT",
                                      "PREFER_CMT",
                                      "REQUIRE_CMT",
                                      "PREFER_DDIO",
                                      "REQUIRE_DDIO",
                                      "REQUIRE_VME",
                                      "PREFER_VME",
                                      "REQUIRE_DE",
                                      "PREFER_DE",
                                      "REQUIRE_PSE",
                                      "PREFER_PSE",
                                      "REQUIRE_TSC",
                                      "PREFER_TSC",
                                      "REQUIRE_MSR",
                                      "PREFER_MSR",
                                      "REQUIRE_PAE",
                                      "PREFER_PAE",
                                      "REQUIRE_MCE",
                                      "PREFER_MCE",
                                      "REQUIRE_CX8",
                                      "PREFER_CX8",
                                      "REQUIRE_APIC",
                                      "PREFER_APIC",
                                      "REQUIRE_SEP",
                                      "PREFER_SEP",
                                      "REQUIRE_MTRR",
                                      "PREFER_MTRR",
                                      "REQUIRE_PGE",
                                      "PREFER_PGE",
                                      "REQUIRE_MCA",
                                      "PREFER_MCA",
                                      "REQUIRE_CMOV",
                                      "PREFER_CMOV",
                                      "REQUIRE_PAT",
                                      "PREFER_PAT",
                                      "REQUIRE_PSE36",
                                      "PREFER_PSE36",
                                      "REQUIRE_CLFLUSH",
                                      "PREFER_CLFLUSH",
                                      "REQUIRE_DTS",
                                      "PREFER_DTS",
                                      "REQUIRE_ACPI",
                                      "PREFER_ACPI",
                                      "REQUIRE_MMX",
                                      "PREFER_MMX",
                                      "REQUIRE_FXSR",
                                      "PREFER_FXSR",
                                      "REQUIRE_SSE",
                                      "PREFER_SSE",
                                      "REQUIRE_SSE2",
                                      "PREFER_SSE2",
                                      "REQUIRE_SS",
                                      "PREFER_SS",
                                      "REQUIRE_HT",
                                      "PREFER_HT",
                                      "REQUIRE_TM",
                                      "PREFER_TM",
                                      "REQUIRE_IA64",
                                      "PREFER_IA64",
                                      "REQUIRE_PBE",
                                      "PREFER_PBE",
                                      "REQUIRE_RDTSCP",
                                      "PREFER_RDTSCP",
                                      "REQUIRE_PNI",
                                      "PREFER_PNI",
                                      "REQUIRE_PCLMULQDQ",
                                      "PREFER_PCLMULQDQ",
                                      "REQUIRE_DTES64",
                                      "PREFER_DTES64",
                                      "REQUIRE_MONITOR",
                                      "PREFER_MONITOR",
                                      "REQUIRE_DS_CPL",
                                      "PREFER_DS_CPL",
                                      "REQUIRE_VMX",
                                      "PREFER_VMX",
                                      "REQUIRE_SMX",
                                      "PREFER_SMX",
                                      "REQUIRE_EST",
                                      "PREFER_EST",
                                      "REQUIRE_TM2",
                                      "PREFER_TM2",
                                      "REQUIRE_SSSE3",
                                      "PREFER_SSSE3",
                                      "REQUIRE_CID",
                                      "PREFER_CID",
                                      "REQUIRE_FMA",
                                      "PREFER_FMA",
                                      "REQUIRE_CX16",
                                      "PREFER_CX16",
                                      "REQUIRE_XTPR",
                                      "PREFER_XTPR",
                                      "REQUIRE_PDCM",
                                      "PREFER_PDCM",
                                      "REQUIRE_PCID",
                                      "PREFER_PCID",
                                      "REQUIRE_DCA",
                                      "PREFER_DCA",
                                      "REQUIRE_SSE4_1",
                                      "PREFER_SSE4_1",
                                      "REQUIRE_SSE4_2",
                                      "PREFER_SSE4_2",
                                      "REQUIRE_X2APIC",
                                      "PREFER_X2APIC",
                                      "REQUIRE_MOVBE",
                                      "PREFER_MOVBE",
                                      "REQUIRE_POPCNT",
                                      "PREFER_POPCNT",
                                      "REQUIRE_TSC_DEADLINE_TIMER",
                                      "PREFER_TSC_DEADLINE_TIMER",
                                      "REQUIRE_XSAVE",
                                      "PREFER_XSAVE",
                                      "REQUIRE_AVX",
                                      "PREFER_AVX",
                                      "REQUIRE_F16C",
                                      "PREFER_F16C",
                                      "REQUIRE_RDRAND",
                                      "PREFER_RDRAND",
                                      "REQUIRE_FSGSBASE",
                                      "PREFER_FSGSBASE",
                                      "REQUIRE_BMI1",
                                      "PREFER_BMI1",
                                      "REQUIRE_HLE",
                                      "PREFER_HLE",
                                      "REQUIRE_AVX2",
                                      "PREFER_AVX2",
                                      "REQUIRE_SMEP",
                                      "PREFER_SMEP",
                                      "REQUIRE_BMI2",
                                      "PREFER_BMI2",
                                      "REQUIRE_ERMS",
                                      "PREFER_ERMS",
                                      "REQUIRE_INVPCID",
                                      "PREFER_INVPCID",
                                      "REQUIRE_RTM",
                                      "PREFER_RTM",
                                      "REQUIRE_MPX",
                                      "PREFER_MPX",
                                      "REQUIRE_RDSEED",
                                      "PREFER_RDSEED",
                                      "REQUIRE_ADX",
                                      "PREFER_ADX",
                                      "REQUIRE_SMAP",
                                      "PREFER_SMAP"
                                    ]
                                  }
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "om-cpu-feature": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "feature": {
                                "type": "string",
                                "description": "CPU feature",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "cpu-vendor": {
                          "description": "Host CPU Vendor.",
                          "properties": {
                            "type": {
                              "enum": [
                                "PREFER_INTEL",
                                "REQUIRE_INTEL",
                                "PREFER_AMD",
                                "REQUIRE_AMD"
                              ]
                            }
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the VDU.",
                      "pattern": ""
                    },
                    "monitoring-param": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "interface-name-ref": {
                            "type": "string",
                            "description": "Reference to a VDU interface name. Applicable only when the nfvi-metric\nrefers to an interface and not to the VM"
                          },
                          "id": {
                            "type": "string",
                            "description": "The unique id of the monitoring param at VDU level",
                            "pattern": ""
                          },
                          "nfvi-metric": {
                            "description": "The associated NFVI metric to be monitored",
                            "properties": {
                              "type": {
                                "enum": [
                                  "cpu_utilization",
                                  "average_memory_utilization",
                                  "disk_read_ops",
                                  "disk_write_ops",
                                  "disk_read_bytes",
                                  "disk_write_bytes",
                                  "packets_sent",
                                  "packets_received",
                                  "packets_in_dropped",
                                  "packets_out_dropped"
                                ]
                              }
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "vdu-configuration": {
                      "type": "object",
                      "properties": {
                        "execution-environment-list": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "connection-point-ref": {
                                "type": "string",
                                "description": "String representing a leaf reference to the particular external connection point\nThis field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name\n",
                                "pattern": ""
                              },
                              "helm-chart": {
                                "type": "string",
                                "description": "Helm chart that models the execution environment, in any of the following ways:\n- <helm-repo>/<helm-chart>\n- <helm-chart folder name under helm-charts folder in the package>\n- <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>\n- <URL_where_to_fetch_chart>\n",
                                "pattern": ""
                              },
                              "juju": {
                                "type": "object",
                                "properties": {
                                  "charm": {
                                    "type": "string",
                                    "description": "Juju charm to use with the VNF or VDU.",
                                    "pattern": ""
                                  },
                                  "proxy": {
                                    "type": "boolean",
                                    "description": "Is this a proxy charm?"
                                  },
                                  "cloud": {
                                    "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                                    "properties": {
                                      "type": {
                                        "enum": [
                                          "lxd",
                                          "k8s"
                                        ]
                                      }
                                    }
                                  }
                                },
                                "additionalProperties": false
                              },
                              "id": {
                                "type": "string",
                                "description": "Execution environment identifier.",
                                "pattern": ""
                              },
                              "metric-service": {
                                "type": "string",
                                "description": "Service name in the execution environment. For helm charts, it will be\nthe name of the kubernetes service used by the exporter to expose metrics\nto the OSM collector.\n",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "juju": {
                          "type": "object",
                          "properties": {
                            "charm": {
                              "type": "string",
                              "description": "Juju charm to use with the VNF or VDU.",
                              "pattern": ""
                            },
                            "proxy": {
                              "type": "boolean",
                              "description": "Is this a proxy charm?"
                            },
                            "cloud": {
                              "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "lxd",
                                    "k8s"
                                  ]
                                }
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "config-primitive": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "user-defined-script": {
                                "type": "string",
                                "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                                "pattern": ""
                              },
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment"
                              },
                              "execution-environment-primitive": {
                                "type": "string",
                                "description": "Name of the primitive in the execution enviroment. If not explicit,\nthe leaf 'name' will be used as the name of the primitive.",
                                "pattern": ""
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the config primitive.",
                                "pattern": ""
                              },
                              "parameter": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "parameter-pool": {
                                      "type": "string",
                                      "description": "NSD parameter pool name to use for this parameter",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name of the parameter.",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "description": "Data type associated with the name.",
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      }
                                    },
                                    "read-only": {
                                      "type": "boolean",
                                      "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values."
                                    },
                                    "default-value": {
                                      "type": "string",
                                      "description": "The default value for this field",
                                      "pattern": ""
                                    },
                                    "hidden": {
                                      "type": "boolean",
                                      "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values."
                                    },
                                    "mandatory": {
                                      "type": "boolean",
                                      "description": "Is this field mandatory"
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "initial-config-primitive": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "user-defined-script": {
                                "type": "string",
                                "description": "A user defined script.",
                                "pattern": ""
                              },
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment"
                              },
                              "seq": {
                                "type": "integer",
                                "description": "Sequence number for the configuration primitive."
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the configuration primitive in the execution environment.",
                                "pattern": ""
                              },
                              "parameter": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "value": {
                                      "type": "string",
                                      "description": "Value associated with the name.",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "description": "Data type associated with the value.",
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      }
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name of the parameter.",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "terminate-config-primitive": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "user-defined-script": {
                                "type": "string",
                                "description": "A user defined script.",
                                "pattern": ""
                              },
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment"
                              },
                              "seq": {
                                "type": "integer",
                                "description": "Sequence number for the configuration primitive."
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the configuration primitive in the execution environment.",
                                "pattern": ""
                              },
                              "parameter": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "value": {
                                      "type": "string",
                                      "description": "Value associated with the name.",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "description": "Data type associated with the value.",
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      }
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name of the parameter.",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "script": {
                          "type": "object",
                          "properties": {
                            "script-type": {
                              "description": "Script type - currently supported - Scripts confirming to Rift CA plugin",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "rift"
                                  ]
                                }
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "config-access": {
                          "type": "object",
                          "properties": {
                            "ssh-access": {
                              "type": "object",
                              "properties": {
                                "default-user": {
                                  "type": "string",
                                  "description": "Default user for ssh",
                                  "pattern": ""
                                },
                                "required": {
                                  "type": "boolean",
                                  "description": "whether ssh access is needed or not"
                                }
                              },
                              "additionalProperties": false
                            }
                          },
                          "additionalProperties": false
                        },
                        "metrics": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment getting that metric"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the metric, as defined in the Juju charm.",
                                "pattern": ""
                              },
                              "execution-environment-metric": {
                                "type": "string",
                                "description": "Metric in the execution environment referenced by execution-environment-ref",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "hypervisor-epa": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "description": "Specifies the type of hypervisor.\nKVM: KVM\nXEN: XEN",
                          "properties": {
                            "type": {
                              "enum": [
                                "PREFER_KVM",
                                "REQUIRE_KVM"
                              ]
                            }
                          }
                        },
                        "version": {
                          "type": "string",
                          "description": "",
                          "pattern": ""
                        }
                      },
                      "additionalProperties": false
                    },
                    "interface": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "virtual-interface": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "description": "Specifies the type of virtual interface\nbetween VM and host.\nPARAVIRT        : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).\nVIRTIO          : Deprecated! Use the traditional VIRTIO interface.\nPCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.\nSR-IOV          : Use SR-IOV interface.\nE1000           : Emulate E1000 interface.\nRTL8139         : Emulate RTL8139 interface.\nPCNET           : Emulate PCNET interface.\nOM-MGMT         : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "PARAVIRT",
                                      "OM-MGMT",
                                      "PCI-PASSTHROUGH",
                                      "SR-IOV",
                                      "VIRTIO",
                                      "E1000",
                                      "RTL8139",
                                      "PCNET"
                                    ]
                                  }
                                }
                              },
                              "bandwidth": {
                                "type": "integer",
                                "description": "Aggregate bandwidth of the NIC."
                              },
                              "vpci": {
                                "type": "string",
                                "description": "Specifies the virtual PCI address. Expressed in\nthe following format dddd:dd:dd.d. For example\n0000:00:12.0. This information can be used to\npass as metadata during the VM creation.",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          },
                          "mgmt-interface": {
                            "type": "boolean",
                            "description": "Flag to indicate that this is the mgmt interface\nto be used for VDU configuration"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the interface. Note that this\nname has only local significance to the VDU.",
                            "pattern": ""
                          },
                          "external-connection-point-ref": {
                            "type": "string",
                            "description": "Leaf Ref to the particular external connection point"
                          },
                          "type": {
                            "description": "Type of the Interface",
                            "properties": {
                              "type": {
                                "enum": [
                                  "INTERNAL",
                                  "EXTERNAL"
                                ]
                              }
                            }
                          },
                          "mac-address": {
                            "type": "string",
                            "description": "MAC address of the interface.\nSome VNFs require a specific MAC address to be configured\nin the interface. While this is not recommended at all in\nNFV environments, this parameter exists to allow those\nscenarios.\nThis parameter will be likely deprecated in the future.",
                            "pattern": ""
                          },
                          "position": {
                            "type": "integer",
                            "description": "Explicit Position of the interface within the list"
                          },
                          "internal-connection-point-ref": {
                            "type": "string",
                            "description": "Leaf Ref to the particular internal connection point"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "guest-epa": {
                      "type": "object",
                      "properties": {
                        "cpu-thread-pinning-policy": {
                          "description": "CPU thread pinning policy describes how to\nplace the guest CPUs when the host supports\nhyper threads:\nAVOID   : Avoids placing a guest on a host\n          with threads.\nSEPARATE: Places vCPUs on separate cores,\n          and avoids placing two vCPUs on\n          two threads of same core.\nISOLATE : Places each vCPU on a different core,\n          and places no vCPUs from a different\n          guest on the same core.\nPREFER  : Attempts to place vCPUs on threads\n          of the same core.",
                          "properties": {
                            "type": {
                              "enum": [
                                "AVOID",
                                "SEPARATE",
                                "ISOLATE",
                                "PREFER"
                              ]
                            }
                          }
                        },
                        "mem-quota": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "integer",
                              "description": "Defines the maximum allocation. The value 0 indicates that usage is not limited.\nThis parameter ensures that the instance never uses more than the defined amount of resource."
                            },
                            "shares": {
                              "type": "integer",
                              "description": "Number of shares allocated.\nSpecifies the proportional weighted share for the domain.\nIf this element is omitted, the service defaults to the OS provided defaults"
                            },
                            "reserve": {
                              "type": "integer",
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources."
                            }
                          },
                          "additionalProperties": false
                        },
                        "mempage-size": {
                          "description": "Memory page allocation size. If a VM requires\nhugepages, it should choose LARGE or SIZE_2MB\nor SIZE_1GB. If the VM prefers hugepages it\nshould choose PREFER_LARGE.\nLARGE        : Require hugepages (either 2MB or 1GB)\nSMALL        : Doesn't require hugepages\nSIZE_2MB     : Requires 2MB hugepages\nSIZE_1GB     : Requires 1GB hugepages\nPREFER_LARGE : Application prefers hugepages",
                          "properties": {
                            "type": {
                              "enum": [
                                "LARGE",
                                "SMALL",
                                "SIZE_2MB",
                                "SIZE_1GB",
                                "PREFER_LARGE"
                              ]
                            }
                          }
                        },
                        "cpu-pinning-policy": {
                          "description": "CPU pinning policy describes association\nbetween virtual CPUs in guest and the\nphysical CPUs in the host.\nDEDICATED : Virtual CPUs are pinned to\n            physical CPUs\nSHARED    : Multiple VMs may share the\n            same physical CPUs.\nANY       : Any policy is acceptable for the VM",
                          "properties": {
                            "type": {
                              "enum": [
                                "DEDICATED",
                                "SHARED",
                                "ANY"
                              ]
                            }
                          }
                        },
                        "trusted-execution": {
                          "type": "boolean",
                          "description": "This VM should be allocated from trusted pool"
                        },
                        "numa-node-policy": {
                          "type": "object",
                          "properties": {
                            "node-cnt": {
                              "type": "number",
                              "description": "The number of NUMA nodes to expose to the VM."
                            },
                            "node": {
                              "type": "array",
                              "additionalProperties": false,
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "description": "NUMA node identification. Typically\nit's 0 or 1"
                                  },
                                  "paired-threads": {
                                    "type": "object",
                                    "properties": {
                                      "num-paired-threads": {
                                        "type": "number",
                                        "description": ""
                                      },
                                      "paired-thread-ids": {
                                        "type": "array",
                                        "additionalProperties": false,
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "thread-b": {
                                              "type": "number",
                                              "description": ""
                                            },
                                            "thread-a": {
                                              "type": "number",
                                              "description": ""
                                            }
                                          },
                                          "additionalProperties": false
                                        }
                                      }
                                    },
                                    "additionalProperties": false
                                  },
                                  "memory-mb": {
                                    "type": "integer",
                                    "description": "Memory size expressed in MB\nfor this NUMA node."
                                  },
                                  "vcpu": {
                                    "type": "array",
                                    "additionalProperties": false,
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "description": "List of VCPUs ids to allocate on\nthis NUMA node"
                                        }
                                      },
                                      "additionalProperties": false
                                    }
                                  },
                                  "num-cores": {
                                    "type": "number",
                                    "description": ""
                                  },
                                  "num-threads": {
                                    "type": "number",
                                    "description": ""
                                  }
                                },
                                "additionalProperties": false
                              }
                            },
                            "mem-policy": {
                              "description": "This policy specifies how the memory should\nbe allocated in a multi-node scenario.\nSTRICT    : The memory must be allocated\n            strictly from the memory attached\n            to the NUMA node.\nPREFERRED : The memory should be allocated\n            preferentially from the memory\n            attached to the NUMA node",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "STRICT",
                                    "PREFERRED"
                                  ]
                                }
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "numa-unaware": {
                          "type": "array",
                          "description": "",
                          "items": [
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "disk-io-quota": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "integer",
                              "description": "Defines the maximum allocation. The value 0 indicates that usage is not limited.\nThis parameter ensures that the instance never uses more than the defined amount of resource."
                            },
                            "shares": {
                              "type": "integer",
                              "description": "Number of shares allocated.\nSpecifies the proportional weighted share for the domain.\nIf this element is omitted, the service defaults to the OS provided defaults"
                            },
                            "reserve": {
                              "type": "integer",
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources."
                            }
                          },
                          "additionalProperties": false
                        },
                        "vif-quota": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "integer",
                              "description": "Defines the maximum allocation. The value 0 indicates that usage is not limited.\nThis parameter ensures that the instance never uses more than the defined amount of resource."
                            },
                            "shares": {
                              "type": "integer",
                              "description": "Number of shares allocated.\nSpecifies the proportional weighted share for the domain.\nIf this element is omitted, the service defaults to the OS provided defaults"
                            },
                            "reserve": {
                              "type": "integer",
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources."
                            }
                          },
                          "additionalProperties": false
                        },
                        "pcie-device": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "count": {
                                "type": "integer",
                                "description": "Number of devices to attach to the VM."
                              },
                              "device-id": {
                                "type": "string",
                                "description": "Device identifier.",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "cpu-quota": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "integer",
                              "description": "Defines the maximum allocation. The value 0 indicates that usage is not limited.\nThis parameter ensures that the instance never uses more than the defined amount of resource."
                            },
                            "shares": {
                              "type": "integer",
                              "description": "Number of shares allocated.\nSpecifies the proportional weighted share for the domain.\nIf this element is omitted, the service defaults to the OS provided defaults"
                            },
                            "reserve": {
                              "type": "integer",
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources."
                            }
                          },
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    },
                    "vm-flavor": {
                      "type": "object",
                      "properties": {
                        "vcpu-count": {
                          "type": "number",
                          "description": "Number of VCPUs for the VM."
                        },
                        "memory-mb": {
                          "type": "integer",
                          "description": "Amount of memory in MB."
                        },
                        "storage-gb": {
                          "type": "integer",
                          "description": "Amount of disk space in GB."
                        }
                      },
                      "additionalProperties": false
                    },
                    "vswitch-epa": {
                      "type": "object",
                      "properties": {
                        "ovs-acceleration": {
                          "description": "Specifies Open vSwitch acceleration mode.\nMANDATORY: OVS acceleration is required\nPREFERRED: OVS acceleration is preferred",
                          "properties": {
                            "type": {
                              "enum": [
                                "MANDATORY",
                                "PREFERRED",
                                "DISABLED"
                              ]
                            }
                          }
                        },
                        "ovs-offload": {
                          "description": "Specifies Open vSwitch hardware offload mode.\nMANDATORY: OVS offload is required\nPREFERRED: OVS offload is preferred",
                          "properties": {
                            "type": {
                              "enum": [
                                "MANDATORY",
                                "PREFERRED",
                                "DISABLED"
                              ]
                            }
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "image-checksum": {
                      "type": "string",
                      "description": "Image md5sum for the software image.\nThe md5sum, if provided, along with the image name uniquely\nidentifies an image uploaded to the CAL.\n",
                      "pattern": ""
                    },
                    "volumes": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "device-type": {
                            "description": "The type of device as exposed to guest",
                            "properties": {
                              "type": {
                                "enum": [
                                  "disk",
                                  "cdrom",
                                  "floppy",
                                  "lun"
                                ]
                              }
                            }
                          },
                          "size": {
                            "type": "integer",
                            "description": "Size of disk in GB"
                          },
                          "image": {
                            "type": "string",
                            "description": "Image name for the software image.\nIf the image name is found within the VNF package it will\nbe uploaded to all VIM accounts during onboarding process.\nOtherwise, the image must be added to the VIM account with\nthe same name as entered here.\n",
                            "pattern": ""
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the disk-volumes, e.g. vda, vdb etc",
                            "pattern": ""
                          },
                          "device-bus": {
                            "description": "Type of disk-bus on which this disk is exposed to guest",
                            "properties": {
                              "type": {
                                "enum": [
                                  "ide",
                                  "usb",
                                  "virtio",
                                  "scsi"
                                ]
                              }
                            }
                          },
                          "description": {
                            "type": "string",
                            "description": "Description for Volume",
                            "pattern": ""
                          },
                          "image-checksum": {
                            "type": "string",
                            "description": "Image md5sum for the software image.\nThe md5sum, if provided, along with the image name uniquely\nidentifies an image uploaded to the CAL.\n",
                            "pattern": ""
                          },
                          "ephemeral": {
                            "type": "array",
                            "description": "",
                            "items": [
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "Number of instances of VDU"
                    },
                    "image": {
                      "type": "string",
                      "description": "Image name for the software image.\nIf the image name is found within the VNF package it will\nbe uploaded to all VIM accounts during onboarding process.\nOtherwise, the image must be added to the VIM account with\nthe same name as entered here.\n",
                      "pattern": ""
                    },
                    "mgmt-vpci": {
                      "type": "string",
                      "description": "Specifies the virtual PCI address. Expressed in\nthe following format dddd:dd:dd.d. For example\n0000:00:12.0. This information can be used to\npass as metadata during the VM creation.",
                      "pattern": ""
                    },
                    "supplemental-boot-data": {
                      "type": "object",
                      "properties": {
                        "boot-data-drive": {
                          "type": "boolean",
                          "description": "Some VIMs implement additional drives to host config-files or meta-data"
                        }
                      },
                      "additionalProperties": false
                    },
                    "pdu-type": {
                      "type": "string",
                      "description": "Type of PDU. If this field exists, the deployment unit must be\nunderstood as a PDU, not as a VDU. This field is used to identify\nthe category of PDU instances to be used at instantiation time. For\nthe instantiation to be successful, there must be available\nPDU instances of this type in the selected datacenter.",
                      "pattern": ""
                    },
                    "alarm": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "vnf-monitoring-param-ref": {
                            "type": "string",
                            "description": "Reference to the VNF level monitoring parameter\nthat is aggregated"
                          },
                          "operation": {
                            "description": "The relational operator used to define whether an alarm should be\ntriggered in certain scenarios, such as if the metric statistic\ngoes above or below a specified value.",
                            "properties": {
                              "type": {
                                "enum": [
                                  "GE",
                                  "LE",
                                  "GT",
                                  "LT",
                                  "EQ"
                                ]
                              }
                            }
                          },
                          "actions": {
                            "type": "object",
                            "properties": {
                              "ok": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "description": "",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              },
                              "alarm": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "description": "",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              },
                              "insufficient-data": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string",
                                      "description": "",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          },
                          "statistic": {
                            "description": "The type of metric statistic that is tracked by this alarm",
                            "properties": {
                              "type": {
                                "enum": [
                                  "AVERAGE",
                                  "MINIMUM",
                                  "MAXIMUM",
                                  "COUNT",
                                  "SUM"
                                ]
                              }
                            }
                          },
                          "enabled": {
                            "type": "boolean",
                            "description": "This flag indicates whether the alarm has been enabled or\ndisabled."
                          },
                          "description": {
                            "type": "string",
                            "description": "A description of this alarm",
                            "pattern": ""
                          },
                          "repeat": {
                            "type": "boolean",
                            "description": "This flag indicates whether the alarm should be repeatedly emitted\nwhile the associated threshold has been crossed."
                          },
                          "alarm-id": {
                            "type": "string",
                            "description": "This field is reserved for the identifier assigned by the VIM provider",
                            "pattern": ""
                          },
                          "value": {
                            "type": "integer",
                            "description": "This value defines the threshold that, if crossed, will trigger\nthe alarm."
                          },
                          "period": {
                            "type": "integer",
                            "description": "The period defines the length of time (seconds) that the metric\ndata are collected over in oreder to evaluate the chosen\nstatistic."
                          },
                          "evaluations": {
                            "type": "integer",
                            "description": "Defines the length of time (seconds) in which metric data are\ncollected in order to evaluate the chosen statistic."
                          },
                          "name": {
                            "type": "string",
                            "description": "A human readable string to identify the alarm",
                            "pattern": ""
                          },
                          "vdur-id": {
                            "type": "string",
                            "description": "The identifier of the VDUR that the alarm is associated with",
                            "pattern": ""
                          },
                          "severity": {
                            "description": "A measure of the importance or urgency of the alarm",
                            "properties": {
                              "type": {
                                "enum": [
                                  "LOW",
                                  "MODERATE",
                                  "CRITICAL"
                                ]
                              }
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "internal-connection-point": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Identifier for the internal connection points",
                            "pattern": ""
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the connection point",
                            "pattern": ""
                          },
                          "type": {
                            "description": "Type of the connection point.",
                            "properties": {
                              "type": {
                                "enum": [
                                  "VPORT"
                                ]
                              }
                            }
                          },
                          "short-name": {
                            "type": "string",
                            "description": "Short name to appear as label in the UI",
                            "pattern": ""
                          },
                          "internal-vld-ref": {
                            "type": "string",
                            "description": ""
                          },
                          "port-security-enabled": {
                            "type": "boolean",
                            "description": "Enables the port security for the port."
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique id for the VDU",
                      "pattern": ""
                    },
                    "cloud-init": {
                      "type": "string",
                      "description": "Contents of cloud-init script, provided inline, in cloud-config format",
                      "pattern": ""
                    },
                    "alternative-images": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "vim-type": {
                            "type": "string",
                            "description": "VIM type: openvim, openstack, vmware, aws, etc.",
                            "pattern": ""
                          },
                          "image": {
                            "type": "string",
                            "description": "Image name for the software image.\nIf the image name is found within the VNF package it will\nbe uploaded to all VIM accounts during onboarding process.\nOtherwise, the image must be added to the VIM account with\nthe same name as entered here.\n",
                            "pattern": ""
                          },
                          "image-checksum": {
                            "type": "string",
                            "description": "Image md5sum for the software image.\nThe md5sum, if provided, along with the image name uniquely\nidentifies an image uploaded to the CAL.\n",
                            "pattern": ""
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              },
              "vdu-dependency": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "vdu-depends-on-ref": {
                      "type": "string",
                      "description": "Reference to the VDU on which\nthe source VDU depends."
                    },
                    "vdu-source-ref": {
                      "type": "string",
                      "description": ""
                    }
                  },
                  "additionalProperties": false
                }
              },
              "service-function-chain": {
                "description": "Type of node in Service Function Chaining Architecture",
                "properties": {
                  "type": {
                    "enum": [
                      "UNAWARE",
                      "CLASSIFIER",
                      "SF",
                      "SFF"
                    ]
                  }
                }
              },
              "monitoring-param": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "value-type": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "INT",
                            "DECIMAL",
                            "STRING"
                          ]
                        }
                      }
                    },
                    "vnf-metric": {
                      "type": "object",
                      "properties": {
                        "vnf-metric-name-ref": {
                          "type": "string",
                          "description": ""
                        }
                      },
                      "additionalProperties": false
                    },
                    "json-query-params": {
                      "type": "object",
                      "properties": {
                        "json-path": {
                          "type": "string",
                          "description": "The jsonpath to use to extract value from JSON structure",
                          "pattern": ""
                        },
                        "object-path": {
                          "type": "string",
                          "description": "The objectpath to use to extract value from JSON structure",
                          "pattern": ""
                        }
                      },
                      "additionalProperties": false
                    },
                    "numeric-constraints": {
                      "type": "object",
                      "properties": {
                        "min-value": {
                          "type": "integer",
                          "description": "Minimum value for the parameter"
                        },
                        "max-value": {
                          "type": "integer",
                          "description": "Maximum value for the parameter"
                        }
                      },
                      "additionalProperties": false
                    },
                    "text-constraints": {
                      "type": "object",
                      "properties": {
                        "max-length": {
                          "type": "number",
                          "description": "Maximum string length for the parameter"
                        },
                        "min-length": {
                          "type": "number",
                          "description": "Minimum string length for the parameter"
                        }
                      },
                      "additionalProperties": false
                    },
                    "units": {
                      "type": "string",
                      "description": "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)",
                      "pattern": ""
                    },
                    "group-tag": {
                      "type": "string",
                      "description": "A tag to group monitoring parameters",
                      "pattern": ""
                    },
                    "description": {
                      "type": "string",
                      "description": "",
                      "pattern": ""
                    },
                    "vdu-monitoring-param": {
                      "type": "object",
                      "properties": {
                        "vdu-ref": {
                          "type": "string",
                          "description": ""
                        },
                        "vdu-monitoring-param-ref": {
                          "type": "string",
                          "description": ""
                        }
                      },
                      "additionalProperties": false
                    },
                    "aggregation-type": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "AVERAGE",
                            "MINIMUM",
                            "MAXIMUM",
                            "COUNT",
                            "SUM"
                          ]
                        }
                      }
                    },
                    "http-endpoint-ref": {
                      "type": "string",
                      "description": ""
                    },
                    "vdu-metric": {
                      "type": "object",
                      "properties": {
                        "vdu-metric-name-ref": {
                          "type": "string",
                          "description": ""
                        },
                        "vdu-ref": {
                          "type": "string",
                          "description": ""
                        }
                      },
                      "additionalProperties": false
                    },
                    "id": {
                      "type": "string",
                      "description": "",
                      "pattern": ""
                    },
                    "name": {
                      "type": "string",
                      "description": "",
                      "pattern": ""
                    },
                    "widget-type": {
                      "description": "Defines the UI Display variant of measured counters.",
                      "properties": {
                        "type": {
                          "enum": [
                            "COUNTER",
                            "GAUGE",
                            "TEXTBOX",
                            "SLIDER",
                            "HISTOGRAM",
                            "BAR"
                          ]
                        }
                      }
                    },
                    "value-decimal": {
                      "type": "integer",
                      "description": "Current value for a decimal parameter"
                    },
                    "value-string": {
                      "type": "string",
                      "description": "Current value for a string parameter",
                      "pattern": ""
                    },
                    "json-query-method": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "NAMEKEY",
                            "JSONPATH",
                            "OBJECTPATH"
                          ]
                        }
                      }
                    },
                    "value-integer": {
                      "type": "integer",
                      "description": "Current value for an integer parameter"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "vnf-configuration": {
                "type": "object",
                "properties": {
                  "execution-environment-list": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "connection-point-ref": {
                          "type": "string",
                          "description": "String representing a leaf reference to the particular external connection point\nThis field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name\n",
                          "pattern": ""
                        },
                        "helm-chart": {
                          "type": "string",
                          "description": "Helm chart that models the execution environment, in any of the following ways:\n- <helm-repo>/<helm-chart>\n- <helm-chart folder name under helm-charts folder in the package>\n- <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>\n- <URL_where_to_fetch_chart>\n",
                          "pattern": ""
                        },
                        "juju": {
                          "type": "object",
                          "properties": {
                            "charm": {
                              "type": "string",
                              "description": "Juju charm to use with the VNF or VDU.",
                              "pattern": ""
                            },
                            "proxy": {
                              "type": "boolean",
                              "description": "Is this a proxy charm?"
                            },
                            "cloud": {
                              "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "lxd",
                                    "k8s"
                                  ]
                                }
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "id": {
                          "type": "string",
                          "description": "Execution environment identifier.",
                          "pattern": ""
                        },
                        "metric-service": {
                          "type": "string",
                          "description": "Service name in the execution environment. For helm charts, it will be\nthe name of the kubernetes service used by the exporter to expose metrics\nto the OSM collector.\n",
                          "pattern": ""
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "juju": {
                    "type": "object",
                    "properties": {
                      "charm": {
                        "type": "string",
                        "description": "Juju charm to use with the VNF or VDU.",
                        "pattern": ""
                      },
                      "proxy": {
                        "type": "boolean",
                        "description": "Is this a proxy charm?"
                      },
                      "cloud": {
                        "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                        "properties": {
                          "type": {
                            "enum": [
                              "lxd",
                              "k8s"
                            ]
                          }
                        }
                      }
                    },
                    "additionalProperties": false
                  },
                  "config-primitive": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "user-defined-script": {
                          "type": "string",
                          "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                          "pattern": ""
                        },
                        "execution-environment-ref": {
                          "type": "string",
                          "description": "Leaf reference to the particular execution environment"
                        },
                        "execution-environment-primitive": {
                          "type": "string",
                          "description": "Name of the primitive in the execution enviroment. If not explicit,\nthe leaf 'name' will be used as the name of the primitive.",
                          "pattern": ""
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the config primitive.",
                          "pattern": ""
                        },
                        "parameter": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "parameter-pool": {
                                "type": "string",
                                "description": "NSD parameter pool name to use for this parameter",
                                "pattern": ""
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the parameter.",
                                "pattern": ""
                              },
                              "data-type": {
                                "description": "Data type associated with the name.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                }
                              },
                              "read-only": {
                                "type": "boolean",
                                "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values."
                              },
                              "default-value": {
                                "type": "string",
                                "description": "The default value for this field",
                                "pattern": ""
                              },
                              "hidden": {
                                "type": "boolean",
                                "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values."
                              },
                              "mandatory": {
                                "type": "boolean",
                                "description": "Is this field mandatory"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "initial-config-primitive": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "user-defined-script": {
                          "type": "string",
                          "description": "A user defined script.",
                          "pattern": ""
                        },
                        "execution-environment-ref": {
                          "type": "string",
                          "description": "Leaf reference to the particular execution environment"
                        },
                        "seq": {
                          "type": "integer",
                          "description": "Sequence number for the configuration primitive."
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the configuration primitive in the execution environment.",
                          "pattern": ""
                        },
                        "parameter": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string",
                                "description": "Value associated with the name.",
                                "pattern": ""
                              },
                              "data-type": {
                                "description": "Data type associated with the value.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                }
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the parameter.",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "terminate-config-primitive": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "user-defined-script": {
                          "type": "string",
                          "description": "A user defined script.",
                          "pattern": ""
                        },
                        "execution-environment-ref": {
                          "type": "string",
                          "description": "Leaf reference to the particular execution environment"
                        },
                        "seq": {
                          "type": "integer",
                          "description": "Sequence number for the configuration primitive."
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the configuration primitive in the execution environment.",
                          "pattern": ""
                        },
                        "parameter": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string",
                                "description": "Value associated with the name.",
                                "pattern": ""
                              },
                              "data-type": {
                                "description": "Data type associated with the value.",
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                }
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the parameter.",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "script": {
                    "type": "object",
                    "properties": {
                      "script-type": {
                        "description": "Script type - currently supported - Scripts confirming to Rift CA plugin",
                        "properties": {
                          "type": {
                            "enum": [
                              "rift"
                            ]
                          }
                        }
                      }
                    },
                    "additionalProperties": false
                  },
                  "relation": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "entities": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "endpoint": {
                                "type": "string",
                                "description": "Endpoint name defining the relation.",
                                "pattern": ""
                              },
                              "id": {
                                "type": "string",
                                "description": "A string, reference to the element id in the descriptor.\nIt could be a vnfd-id or a vdu-id in a VNFD,\nor a nsd-id or member-vnf-index in a NSD.",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the relation.",
                          "pattern": ""
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "metrics": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "execution-environment-ref": {
                          "type": "string",
                          "description": "Leaf reference to the particular execution environment getting that metric"
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the metric, as defined in the Juju charm.",
                          "pattern": ""
                        },
                        "execution-environment-metric": {
                          "type": "string",
                          "description": "Metric in the execution environment referenced by execution-environment-ref",
                          "pattern": ""
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "config-access": {
                    "type": "object",
                    "properties": {
                      "ssh-access": {
                        "type": "object",
                        "properties": {
                          "default-user": {
                            "type": "string",
                            "description": "Default user for ssh",
                            "pattern": ""
                          },
                          "required": {
                            "type": "boolean",
                            "description": "whether ssh access is needed or not"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "ip-profiles": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "description": {
                      "type": "string",
                      "description": "Description for IP profile",
                      "pattern": ""
                    },
                    "ip-profile-params": {
                      "type": "object",
                      "properties": {
                        "dhcp-params": {
                          "type": "object",
                          "properties": {
                            "count": {
                              "type": "integer",
                              "description": "Size of the DHCP pool associated with DHCP domain"
                            },
                            "start-address": {
                              "description": "Start IP address of the IP-Address range associated with DHCP domain",
                              "oneOf": [
                                {
                                  "type": "string",
                                  "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?"
                                },
                                {
                                  "type": "string",
                                  "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                                }
                              ]
                            },
                            "enabled": {
                              "type": "boolean",
                              "description": "This flag indicates if DHCP is enabled or not"
                            }
                          },
                          "additionalProperties": false
                        },
                        "ip-version": {
                          "description": "",
                          "properties": {
                            "type": {
                              "enum": [
                                "unknown",
                                "ipv4",
                                "ipv6"
                              ]
                            }
                          }
                        },
                        "gateway-address": {
                          "description": "IP Address of the default gateway associated with IP Profile",
                          "oneOf": [
                            {
                              "type": "string",
                              "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?"
                            },
                            {
                              "type": "string",
                              "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                            }
                          ]
                        },
                        "subnet-prefix-pool": {
                          "type": "string",
                          "description": "VIM Specific reference to pre-created subnet prefix",
                          "pattern": ""
                        },
                        "subnet-address": {
                          "description": "Subnet IP prefix associated with IP Profile",
                          "oneOf": [
                            {
                              "type": "string",
                              "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))"
                            },
                            {
                              "type": "string",
                              "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)"
                            }
                          ]
                        },
                        "security-group": {
                          "type": "string",
                          "description": "Name of the security group",
                          "pattern": ""
                        },
                        "dns-server": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "address": {
                                "description": "List of DNS Servers associated with IP Profile",
                                "oneOf": [
                                  {
                                    "type": "string",
                                    "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?"
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                                  }
                                ]
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the IP-Profile",
                      "pattern": ""
                    }
                  },
                  "additionalProperties": false
                }
              },
              "connection-point": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Identifier for the internal connection points",
                      "pattern": ""
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the connection point",
                      "pattern": ""
                    },
                    "type": {
                      "description": "Type of the connection point.",
                      "properties": {
                        "type": {
                          "enum": [
                            "VPORT"
                          ]
                        }
                      }
                    },
                    "short-name": {
                      "type": "string",
                      "description": "Short name to appear as label in the UI",
                      "pattern": ""
                    },
                    "internal-vld-ref": {
                      "type": "string",
                      "description": "Reference to an internal VLD of the VNF. This field is\noptional. It allows exposing an internal VLD through a\nconnection point. When building a NS, this VNF CP might be\nconnected to a NS VLD, then both VLDs (the i-VLD of the VNF and the\nVLD of the NS) will become the same network and the IP profile will\nbe the one configured at NS level."
                    },
                    "port-security-enabled": {
                      "type": "boolean",
                      "description": "Enables the port security for the port."
                    }
                  },
                  "additionalProperties": false
                }
              },
              "kdu": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Unique name for the KDU",
                      "pattern": ""
                    },
                    "kdu-configuration": {
                      "type": "object",
                      "properties": {
                        "execution-environment-list": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "connection-point-ref": {
                                "type": "string",
                                "description": "String representing a leaf reference to the particular external connection point\nThis field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name\n",
                                "pattern": ""
                              },
                              "helm-chart": {
                                "type": "string",
                                "description": "Helm chart that models the execution environment, in any of the following ways:\n- <helm-repo>/<helm-chart>\n- <helm-chart folder name under helm-charts folder in the package>\n- <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>\n- <URL_where_to_fetch_chart>\n",
                                "pattern": ""
                              },
                              "juju": {
                                "type": "object",
                                "properties": {
                                  "charm": {
                                    "type": "string",
                                    "description": "Juju charm to use with the VNF or VDU.",
                                    "pattern": ""
                                  },
                                  "proxy": {
                                    "type": "boolean",
                                    "description": "Is this a proxy charm?"
                                  },
                                  "cloud": {
                                    "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                                    "properties": {
                                      "type": {
                                        "enum": [
                                          "lxd",
                                          "k8s"
                                        ]
                                      }
                                    }
                                  }
                                },
                                "additionalProperties": false
                              },
                              "id": {
                                "type": "string",
                                "description": "Execution environment identifier.",
                                "pattern": ""
                              },
                              "metric-service": {
                                "type": "string",
                                "description": "Service name in the execution environment. For helm charts, it will be\nthe name of the kubernetes service used by the exporter to expose metrics\nto the OSM collector.\n",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "juju": {
                          "type": "object",
                          "properties": {
                            "charm": {
                              "type": "string",
                              "description": "Juju charm to use with the VNF or VDU.",
                              "pattern": ""
                            },
                            "proxy": {
                              "type": "boolean",
                              "description": "Is this a proxy charm?"
                            },
                            "cloud": {
                              "description": "Type of cloud where the charm will be deployed. It only\napplies to proxy charms (not native)",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "lxd",
                                    "k8s"
                                  ]
                                }
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "config-primitive": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "user-defined-script": {
                                "type": "string",
                                "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                                "pattern": ""
                              },
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment"
                              },
                              "execution-environment-primitive": {
                                "type": "string",
                                "description": "Name of the primitive in the execution enviroment. If not explicit,\nthe leaf 'name' will be used as the name of the primitive.",
                                "pattern": ""
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the config primitive.",
                                "pattern": ""
                              },
                              "parameter": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "parameter-pool": {
                                      "type": "string",
                                      "description": "NSD parameter pool name to use for this parameter",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name of the parameter.",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "description": "Data type associated with the name.",
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      }
                                    },
                                    "read-only": {
                                      "type": "boolean",
                                      "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values."
                                    },
                                    "default-value": {
                                      "type": "string",
                                      "description": "The default value for this field",
                                      "pattern": ""
                                    },
                                    "hidden": {
                                      "type": "boolean",
                                      "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values."
                                    },
                                    "mandatory": {
                                      "type": "boolean",
                                      "description": "Is this field mandatory"
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "initial-config-primitive": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "user-defined-script": {
                                "type": "string",
                                "description": "A user defined script.",
                                "pattern": ""
                              },
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment"
                              },
                              "seq": {
                                "type": "integer",
                                "description": "Sequence number for the configuration primitive."
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the configuration primitive in the execution environment.",
                                "pattern": ""
                              },
                              "parameter": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "value": {
                                      "type": "string",
                                      "description": "Value associated with the name.",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "description": "Data type associated with the value.",
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      }
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name of the parameter.",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "blacklist-config-primitive": {
                          "type": "array",
                          "items": [
                            {
                              "properties": {
                                "type": {
                                  "enum": [
                                    "upgrade",
                                    "rollback"
                                  ]
                                }
                              }
                            }
                          ]
                        },
                        "terminate-config-primitive": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "user-defined-script": {
                                "type": "string",
                                "description": "A user defined script.",
                                "pattern": ""
                              },
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment"
                              },
                              "seq": {
                                "type": "integer",
                                "description": "Sequence number for the configuration primitive."
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the configuration primitive in the execution environment.",
                                "pattern": ""
                              },
                              "parameter": {
                                "type": "array",
                                "additionalProperties": false,
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "value": {
                                      "type": "string",
                                      "description": "Value associated with the name.",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "description": "Data type associated with the value.",
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      }
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name of the parameter.",
                                      "pattern": ""
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "script": {
                          "type": "object",
                          "properties": {
                            "script-type": {
                              "description": "Script type - currently supported - Scripts confirming to Rift CA plugin",
                              "properties": {
                                "type": {
                                  "enum": [
                                    "rift"
                                  ]
                                }
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "additionalProperties": false,
                        "config-access": {
                          "type": "object",
                          "properties": {
                            "ssh-access": {
                              "type": "object",
                              "properties": {
                                "default-user": {
                                  "type": "string",
                                  "description": "Default user for ssh",
                                  "pattern": ""
                                },
                                "required": {
                                  "type": "boolean",
                                  "description": "whether ssh access is needed or not"
                                }
                              },
                              "additionalProperties": false
                            }
                          },
                          "additionalProperties": false
                        },
                        "metrics": {
                          "type": "array",
                          "additionalProperties": false,
                          "items": {
                            "type": "object",
                            "properties": {
                              "execution-environment-ref": {
                                "type": "string",
                                "description": "Leaf reference to the particular execution environment getting that metric"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the metric, as defined in the Juju charm.",
                                "pattern": ""
                              },
                              "execution-environment-metric": {
                                "type": "string",
                                "description": "Metric in the execution environment referenced by execution-environment-ref",
                                "pattern": ""
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "helm-chart": {
                      "type": "string",
                      "description": "Helm chart that models the KDU, in any of the following ways:\n- <helm-repo>/<helm-chart>\n- <helm-chart folder under k8s_models folder in the package>\n- <helm-chart tgz file (w/ or w/o extension) under k8s_models folder in the package>\n- <URL_where_to_fetch_chart>\n",
                      "pattern": ""
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the KDU.",
                      "pattern": ""
                    },
                    "juju-bundle": {
                      "type": "string",
                      "description": "Juju bundle that models the KDU, in any of the following ways:\n- <juju-repo>/<juju-bundle>\n- <juju-bundle folder under k8s_models folder in the package>\n- <juju-bundle tgz file (w/ or w/o extension) under k8s_models folder in the package>\n- <URL_where_to_fetch_juju_bundle>\n",
                      "pattern": ""
                    },
                    "service": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "external-connection-point-ref": {
                            "type": "string",
                            "description": "Leaf Ref to the particular external connection point"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the Kubernetes service exposed by he KDU model",
                            "pattern": ""
                          },
                          "mgmt-service": {
                            "type": "boolean",
                            "description": "Flag to indicate that this Kubernetes service is a mgmt service\nto be used for KDU configuration. Defaults to false (if no present).\nAll services with mgmt-service set to true will be passed to the execution\nenvironment in charge of the KDU configuration."
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              },
              "k8s-cluster": {
                "type": "object",
                "properties": {
                  "cni": {
                    "type": "array",
                    "items": [
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "calico",
                              "flannel",
                              "multus"
                            ]
                          }
                        }
                      }
                    ]
                  },
                  "version": {
                    "type": "array",
                    "items": [
                      {
                        "type": "string",
                        "pattern": ""
                      }
                    ]
                  },
                  "additionalProperties": false,
                  "nets": {
                    "type": "array",
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Internal identifier for the K8s cluster network in this VNF",
                          "pattern": ""
                        },
                        "external-connection-point-ref": {
                          "type": "string",
                          "description": "Leaf Ref to the particular external connection point"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": false
              },
              "placement-groups": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "requirement": {
                      "type": "string",
                      "description": "This is free text space used to describe the intent/rationale\nbehind this placement group. This is for human consumption only",
                      "pattern": ""
                    },
                    "member-vdus": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "member-vdu-ref": {
                            "type": "string",
                            "description": ""
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "strategy": {
                      "description": "Strategy associated with this placement group\n  Following values are possible\n    - COLOCATION: Colocation strategy imply intent to share the physical\n                  infrastructure (hypervisor/network) among all members\n                  of this group.\n    - ISOLATION: Isolation strategy imply intent to not share the physical\n                 infrastructure (hypervisor/network) among the members\n                 of this group.\n  ",
                      "properties": {
                        "type": {
                          "enum": [
                            "COLOCATION",
                            "ISOLATION"
                          ]
                        }
                      }
                    },
                    "name": {
                      "type": "string",
                      "description": "Place group construct to define the compute resource placement strategy\nin cloud environment",
                      "pattern": ""
                    }
                  },
                  "additionalProperties": false
                }
              },
              "internal-vld": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "root-bandwidth": {
                      "type": "integer",
                      "description": "For ELAN this is the aggregate bandwidth."
                    },
                    "internal-connection-point": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "ip-address": {
                            "description": "IP address of the internal connection point",
                            "oneOf": [
                              {
                                "type": "string",
                                "pattern": "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?"
                              },
                              {
                                "type": "string",
                                "pattern": "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                              }
                            ]
                          },
                          "id-ref": {
                            "type": "string",
                            "description": "Reference to the internal connection point id"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "vim-network-name": {
                      "type": "string",
                      "description": "Name of network in VIM account. This is used to indicate\n pre-provisioned network name in cloud account.",
                      "pattern": ""
                    },
                    "leaf-bandwidth": {
                      "type": "integer",
                      "description": "For ELAN this is the bandwidth of branches."
                    },
                    "id": {
                      "type": "string",
                      "description": "Identifier for the VLD",
                      "pattern": ""
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the internal VLD",
                      "pattern": ""
                    },
                    "type": {
                      "description": "",
                      "properties": {
                        "type": {
                          "enum": [
                            "ELAN",
                            "ELINE",
                            "L3"
                          ]
                        }
                      }
                    },
                    "short-name": {
                      "type": "string",
                      "description": "Short name to appear as label in the UI",
                      "pattern": ""
                    },
                    "ip-profile-ref": {
                      "type": "string",
                      "description": "Named reference to IP-profile object",
                      "pattern": ""
                    },
                    "description": {
                      "type": "string",
                      "description": "",
                      "pattern": ""
                    },
                    "provider-network": {
                      "type": "object",
                      "properties": {
                        "segmentation_id": {
                          "type": "integer",
                          "description": "ID of segregated virtual networks"
                        },
                        "physical-network": {
                          "type": "string",
                          "description": "Name of the physical network on which the provider\nnetwork is built.",
                          "pattern": ""
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                }
              },
              "service-function-type": {
                "type": "string",
                "description": "Type of Service Function.\nNOTE: This needs to map with Service Function Type in ODL to\nsupport VNFFG. Service Function Type is mandatory param in ODL\nSFC. This is temporarily set to string for ease of use",
                "pattern": ""
              },
              "id": {
                "type": "string",
                "description": "Identifier for the VNFD.",
                "pattern": ""
              },
              "name": {
                "type": "string",
                "description": "VNFD name.",
                "pattern": ""
              },
              "http-endpoint": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "password": {
                      "type": "string",
                      "description": "The HTTP basic auth password",
                      "pattern": ""
                    },
                    "path": {
                      "type": "string",
                      "description": "The HTTP path on the management server",
                      "pattern": ""
                    },
                    "port": {
                      "type": "number",
                      "description": "The HTTP port to connect to"
                    },
                    "https": {
                      "type": "boolean",
                      "description": "Pick HTTPS instead of HTTP , Default is false"
                    },
                    "method": {
                      "description": "Method that the URI should perform.\nDeafult action is GET.",
                      "properties": {
                        "type": {
                          "enum": [
                            "POST",
                            "PUT",
                            "GET",
                            "DELETE",
                            "OPTIONS",
                            "PATCH"
                          ]
                        }
                      }
                    },
                    "polling-interval-secs": {
                      "type": "number",
                      "description": "The HTTP polling interval in seconds"
                    },
                    "username": {
                      "type": "string",
                      "description": "The HTTP basic auth username",
                      "pattern": ""
                    },
                    "headers": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string",
                            "description": "HTTP header value",
                            "pattern": ""
                          },
                          "key": {
                            "type": "string",
                            "description": "HTTP header key",
                            "pattern": ""
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              },
              "scaling-group-descriptor": {
                "type": "array",
                "additionalProperties": false,
                "items": {
                  "type": "object",
                  "properties": {
                    "min-instance-count": {
                      "type": "integer",
                      "description": "Minimum instances of the scaling group which are allowed.\nThese instances are created by default when the network service\nis instantiated."
                    },
                    "scaling-policy": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "cooldown-time": {
                            "type": "integer",
                            "description": "The duration after a scaling-in/scaling-out action has been\ntriggered, for which there will be no further optional"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the scaling policy",
                            "pattern": ""
                          },
                          "enabled": {
                            "type": "boolean",
                            "description": "Specifies if the scaling policy can be applied"
                          },
                          "scale-out-operation-type": {
                            "description": "Operation to be applied to check between scaling criterias to\ncheck if the scale out threshold condition has been met.\nDefauls to OR",
                            "properties": {
                              "type": {
                                "enum": [
                                  "AND",
                                  "OR"
                                ]
                              }
                            }
                          },
                          "scale-in-operation-type": {
                            "description": "Operation to be applied to check between scaling criterias to\ncheck if the scale in threshold condition has been met.\nDefaults to AND",
                            "properties": {
                              "type": {
                                "enum": [
                                  "AND",
                                  "OR"
                                ]
                              }
                            }
                          },
                          "scaling-type": {
                            "description": "Type of scaling",
                            "properties": {
                              "type": {
                                "enum": [
                                  "manual",
                                  "automatic"
                                ]
                              }
                            }
                          },
                          "threshold-time": {
                            "type": "integer",
                            "description": "The duration for which the criteria must hold true"
                          },
                          "scaling-criteria": {
                            "type": "array",
                            "additionalProperties": false,
                            "items": {
                              "type": "object",
                              "properties": {
                                "vnf-monitoring-param-ref": {
                                  "type": "string",
                                  "description": "Reference to the VNF level monitoring parameter\nthat is aggregated"
                                },
                                "scale-in-threshold": {
                                  "type": "integer",
                                  "description": "Value below which scale-in requests are generated"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "",
                                  "pattern": ""
                                },
                                "scale-out-relational-operation": {
                                  "description": "The relational operator used to compare the monitoring param\nagainst the scale-out-threshold.",
                                  "properties": {
                                    "type": {
                                      "enum": [
                                        "GE",
                                        "LE",
                                        "GT",
                                        "LT",
                                        "EQ"
                                      ]
                                    }
                                  }
                                },
                                "scale-in-relational-operation": {
                                  "description": "The relational operator used to compare the monitoring param\nagainst the scale-in-threshold.",
                                  "properties": {
                                    "type": {
                                      "enum": [
                                        "GE",
                                        "LE",
                                        "GT",
                                        "LT",
                                        "EQ"
                                      ]
                                    }
                                  }
                                },
                                "scale-out-threshold": {
                                  "type": "integer",
                                  "description": "Value above which scale-out requests are generated"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of this scaling group.",
                      "pattern": ""
                    },
                    "max-instance-count": {
                      "type": "integer",
                      "description": "Maximum instances of this scaling group that are allowed\nin a single network service. The network service scaling\nwill fail, when the number of service group instances\nexceed the max-instance-count specified."
                    },
                    "scaling-config-action": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "vnf-config-primitive-name-ref": {
                            "type": "string",
                            "description": "Reference to the VNF config primitive"
                          },
                          "trigger": {
                            "description": "scaling trigger",
                            "properties": {
                              "type": {
                                "enum": [
                                  "pre-scale-in",
                                  "post-scale-in",
                                  "pre-scale-out",
                                  "post-scale-out"
                                ]
                              }
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "vdu": {
                      "type": "array",
                      "additionalProperties": false,
                      "items": {
                        "type": "object",
                        "properties": {
                          "vdu-id-ref": {
                            "type": "string",
                            "description": "Reference to the VDU id"
                          },
                          "count": {
                            "type": "integer",
                            "description": "count of this VDU id within this scaling group.\nThe count allows to define the number of instances\nwhen a scaling action targets this scaling group"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": false
                }
              }
            },
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    }
  },
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Generated by pyang from module vnfd",
  "additionalProperties": false,
  "title": "vnfd"
}