{
  "properties": {
    "vnfd-catalog": {
      "properties": {
        "schema-version": {
          "description": "Schema version for the VNFD. If unspecified, it assumes v3.0",
          "type": "string",
          "pattern": ""
        },
        "vnfd": {
          "items": {
            "properties": {
              "vdu-dependency": {
                "items": {
                  "properties": {
                    "vdu-depends-on-ref": {
                      "description": "Reference to the VDU on which\nthe source VDU depends.",
                      "type": "string"
                    },
                    "vdu-source-ref": {
                      "description": "",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "http-endpoint": {
                "items": {
                  "properties": {
                    "method": {
                      "properties": {
                        "type": {
                          "enum": [
                            "POST",
                            "PUT",
                            "GET",
                            "DELETE",
                            "OPTIONS",
                            "PATCH"
                          ]
                        }
                      },
                      "description": "Method that the URI should perform.\nDeafult action is GET."
                    },
                    "password": {
                      "description": "The HTTP basic auth password",
                      "type": "string",
                      "pattern": ""
                    },
                    "polling-interval-secs": {
                      "description": "The HTTP polling interval in seconds",
                      "type": "number"
                    },
                    "path": {
                      "description": "The HTTP path on the management server",
                      "type": "string",
                      "pattern": ""
                    },
                    "headers": {
                      "items": {
                        "properties": {
                          "key": {
                            "description": "HTTP header key",
                            "type": "string",
                            "pattern": ""
                          },
                          "value": {
                            "description": "HTTP header value",
                            "type": "string",
                            "pattern": ""
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "port": {
                      "description": "The HTTP port to connect to",
                      "type": "number"
                    },
                    "https": {
                      "description": "Pick HTTPS instead of HTTP , Default is false",
                      "type": "boolean"
                    },
                    "username": {
                      "description": "The HTTP basic auth username",
                      "type": "string",
                      "pattern": ""
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "monitoring-param": {
                "items": {
                  "properties": {
                    "numeric-constraints": {
                      "properties": {
                        "min-value": {
                          "description": "Minimum value for the parameter",
                          "type": "integer"
                        },
                        "max-value": {
                          "description": "Maximum value for the parameter",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "widget-type": {
                      "properties": {
                        "type": {
                          "enum": [
                            "COUNTER",
                            "GAUGE",
                            "TEXTBOX",
                            "SLIDER",
                            "HISTOGRAM",
                            "BAR"
                          ]
                        }
                      },
                      "description": "Defines the UI Display variant of measured counters."
                    },
                    "text-constraints": {
                      "properties": {
                        "max-length": {
                          "description": "Maximum string length for the parameter",
                          "type": "number"
                        },
                        "min-length": {
                          "description": "Minimum string length for the parameter",
                          "type": "number"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "vnf-metric": {
                      "properties": {
                        "vnf-metric-name-ref": {
                          "description": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "aggregation-type": {
                      "properties": {
                        "type": {
                          "enum": [
                            "AVERAGE",
                            "MINIMUM",
                            "MAXIMUM",
                            "COUNT",
                            "SUM"
                          ]
                        }
                      },
                      "description": ""
                    },
                    "vdu-metric": {
                      "properties": {
                        "vdu-ref": {
                          "description": "",
                          "type": "string"
                        },
                        "vdu-metric-name-ref": {
                          "description": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "units": {
                      "description": "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)",
                      "type": "string",
                      "pattern": ""
                    },
                    "value-decimal": {
                      "description": "Current value for a decimal parameter",
                      "type": "integer"
                    },
                    "value-type": {
                      "properties": {
                        "type": {
                          "enum": [
                            "INT",
                            "DECIMAL",
                            "STRING"
                          ]
                        }
                      },
                      "description": ""
                    },
                    "value-string": {
                      "description": "Current value for a string parameter",
                      "type": "string",
                      "pattern": ""
                    },
                    "id": {
                      "description": "",
                      "type": "string",
                      "pattern": ""
                    },
                    "description": {
                      "description": "",
                      "type": "string",
                      "pattern": ""
                    },
                    "http-endpoint-ref": {
                      "description": "",
                      "type": "string"
                    },
                    "vdu-monitoring-param": {
                      "properties": {
                        "vdu-monitoring-param-ref": {
                          "description": "",
                          "type": "string"
                        },
                        "vdu-ref": {
                          "description": "",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "name": {
                      "description": "",
                      "type": "string",
                      "pattern": ""
                    },
                    "json-query-method": {
                      "properties": {
                        "type": {
                          "enum": [
                            "NAMEKEY",
                            "JSONPATH",
                            "OBJECTPATH"
                          ]
                        }
                      },
                      "description": ""
                    },
                    "value-integer": {
                      "description": "Current value for an integer parameter",
                      "type": "integer"
                    },
                    "json-query-params": {
                      "properties": {
                        "object-path": {
                          "description": "The objectpath to use to extract value from JSON structure",
                          "type": "string",
                          "pattern": ""
                        },
                        "json-path": {
                          "description": "The jsonpath to use to extract value from JSON structure",
                          "type": "string",
                          "pattern": ""
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "group-tag": {
                      "description": "A tag to group monitoring parameters",
                      "type": "string",
                      "pattern": ""
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "mgmt-interface": {
                "properties": {
                  "cp": {
                    "description": "",
                    "type": "string"
                  },
                  "port": {
                    "description": "Port for the management interface.",
                    "type": "number"
                  },
                  "vdu-id": {
                    "description": "",
                    "type": "string"
                  },
                  "ip-address": {
                    "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}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                      }
                    ],
                    "description": ""
                  },
                  "dashboard-params": {
                    "properties": {
                      "path": {
                        "description": "The HTTP path for the dashboard",
                        "type": "string",
                        "pattern": ""
                      },
                      "port": {
                        "description": "The HTTP port for the dashboard",
                        "type": "number"
                      },
                      "https": {
                        "description": "Pick HTTPS instead of HTTP , Default is false",
                        "type": "boolean"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "service-function-chain": {
                "properties": {
                  "type": {
                    "enum": [
                      "UNAWARE",
                      "CLASSIFIER",
                      "SF",
                      "SFF"
                    ]
                  }
                },
                "description": "Type of node in Service Function Chaining Architecture"
              },
              "vendor": {
                "description": "Vendor of the VNFD.",
                "type": "string",
                "pattern": ""
              },
              "k8s-cluster": {
                "properties": {
                  "cni": {
                    "items": [
                      {
                        "properties": {
                          "type": {
                            "enum": [
                              "calico",
                              "flannel",
                              "multus"
                            ]
                          }
                        }
                      }
                    ],
                    "type": "array"
                  },
                  "nets": {
                    "items": {
                      "properties": {
                        "id": {
                          "description": "Internal identifier for the K8s cluster network in this VNF",
                          "type": "string",
                          "pattern": ""
                        },
                        "external-connection-point-ref": {
                          "description": "Leaf Ref to the particular external connection point",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "version": {
                    "items": [
                      {
                        "type": "string",
                        "pattern": ""
                      }
                    ],
                    "type": "array"
                  },
                  "additionalProperties": false
                },
                "type": "object",
                "additionalProperties": false
              },
              "service-function-type": {
                "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",
                "type": "string",
                "pattern": ""
              },
              "logo": {
                "description": "Vendor logo for the Virtual Network Function",
                "type": "string",
                "pattern": ""
              },
              "kdu": {
                "items": {
                  "properties": {
                    "helm-chart": {
                      "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",
                      "type": "string",
                      "pattern": ""
                    },
                    "name": {
                      "description": "Unique name for the KDU",
                      "type": "string",
                      "pattern": ""
                    },
                    "description": {
                      "description": "Description of the KDU.",
                      "type": "string",
                      "pattern": ""
                    },
                    "juju-bundle": {
                      "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",
                      "type": "string",
                      "pattern": ""
                    },
                    "kdu-configuration": {
                      "properties": {
                        "juju": {
                          "properties": {
                            "charm": {
                              "description": "Juju charm to use with the VNF or VDU.",
                              "type": "string",
                              "pattern": ""
                            },
                            "proxy": {
                              "description": "Is this a proxy charm?",
                              "type": "boolean"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "blacklist-config-primitive": {
                          "items": [
                            {
                              "properties": {
                                "type": {
                                  "enum": [
                                    "upgrade",
                                    "rollback"
                                  ]
                                }
                              }
                            }
                          ],
                          "type": "array"
                        },
                        "initial-config-primitive": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the configuration primitive.",
                                "type": "string",
                                "pattern": ""
                              },
                              "user-defined-script": {
                                "description": "A user defined script.",
                                "type": "string",
                                "pattern": ""
                              },
                              "parameter": {
                                "items": {
                                  "properties": {
                                    "value": {
                                      "description": "Value associated with the name.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "description": "Name of the parameter.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      },
                                      "description": "Data type associated with the value."
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              },
                              "seq": {
                                "description": "Sequence number for the configuration primitive.",
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "config-access": {
                          "properties": {
                            "ssh-access": {
                              "properties": {
                                "required": {
                                  "description": "whether ssh access is needed or not",
                                  "type": "boolean"
                                },
                                "default-user": {
                                  "description": "Default user for ssh",
                                  "type": "string",
                                  "pattern": ""
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "additionalProperties": false,
                        "script": {
                          "properties": {
                            "script-type": {
                              "properties": {
                                "type": {
                                  "enum": [
                                    "rift"
                                  ]
                                }
                              },
                              "description": "Script type - currently supported - Scripts confirming to Rift CA plugin"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "config-primitive": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the config primitive.",
                                "type": "string",
                                "pattern": ""
                              },
                              "user-defined-script": {
                                "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                                "type": "string",
                                "pattern": ""
                              },
                              "parameter": {
                                "items": {
                                  "properties": {
                                    "hidden": {
                                      "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
                                      "type": "boolean"
                                    },
                                    "read-only": {
                                      "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values.",
                                      "type": "boolean"
                                    },
                                    "parameter-pool": {
                                      "description": "NSD parameter pool name to use for this parameter",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "description": "Name of the parameter.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "mandatory": {
                                      "description": "Is this field mandatory",
                                      "type": "boolean"
                                    },
                                    "data-type": {
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      },
                                      "description": "Data type associated with the name."
                                    },
                                    "default-value": {
                                      "description": "The default value for this field",
                                      "type": "string",
                                      "pattern": ""
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "metrics": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the metric, as defined in the Juju charm.",
                                "type": "string",
                                "pattern": ""
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "terminate-config-primitive": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the configuration primitive.",
                                "type": "string",
                                "pattern": ""
                              },
                              "user-defined-script": {
                                "description": "A user defined script.",
                                "type": "string",
                                "pattern": ""
                              },
                              "parameter": {
                                "items": {
                                  "properties": {
                                    "value": {
                                      "description": "Value associated with the name.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "description": "Name of the parameter.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      },
                                      "description": "Data type associated with the value."
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              },
                              "seq": {
                                "description": "Sequence number for the configuration primitive.",
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "short-name": {
                "description": "Short name to appear as label in the UI",
                "type": "string",
                "pattern": ""
              },
              "ip-profiles": {
                "items": {
                  "properties": {
                    "name": {
                      "description": "Name of the IP-Profile",
                      "type": "string",
                      "pattern": ""
                    },
                    "description": {
                      "description": "Description for IP profile",
                      "type": "string",
                      "pattern": ""
                    },
                    "ip-profile-params": {
                      "properties": {
                        "subnet-prefix-pool": {
                          "description": "VIM Specific reference to pre-created subnet prefix",
                          "type": "string",
                          "pattern": ""
                        },
                        "subnet-address": {
                          "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}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)"
                            }
                          ],
                          "description": "Subnet IP prefix associated with IP Profile"
                        },
                        "dhcp-params": {
                          "properties": {
                            "count": {
                              "description": "Size of the DHCP pool associated with DHCP domain",
                              "type": "integer"
                            },
                            "start-address": {
                              "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}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                                }
                              ],
                              "description": "Start IP address of the IP-Address range associated with DHCP domain"
                            },
                            "enabled": {
                              "description": "This flag indicates if DHCP is enabled or not",
                              "type": "boolean"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "ip-version": {
                          "properties": {
                            "type": {
                              "enum": [
                                "unknown",
                                "ipv4",
                                "ipv6"
                              ]
                            }
                          },
                          "description": ""
                        },
                        "gateway-address": {
                          "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}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                            }
                          ],
                          "description": "IP Address of the default gateway associated with IP Profile"
                        },
                        "dns-server": {
                          "items": {
                            "properties": {
                              "address": {
                                "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}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                                  }
                                ],
                                "description": "List of DNS Servers associated with IP Profile"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "security-group": {
                          "description": "Name of the security group",
                          "type": "string",
                          "pattern": ""
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "internal-vld": {
                "items": {
                  "properties": {
                    "id": {
                      "description": "Identifier for the VLD",
                      "type": "string",
                      "pattern": ""
                    },
                    "short-name": {
                      "description": "Short name to appear as label in the UI",
                      "type": "string",
                      "pattern": ""
                    },
                    "description": {
                      "description": "",
                      "type": "string",
                      "pattern": ""
                    },
                    "type": {
                      "properties": {
                        "type": {
                          "enum": [
                            "ELAN",
                            "ELINE"
                          ]
                        }
                      },
                      "description": ""
                    },
                    "leaf-bandwidth": {
                      "description": "For ELAN this is the bandwidth of branches.",
                      "type": "integer"
                    },
                    "vim-network-name": {
                      "description": "Name of network in VIM account. This is used to indicate\n pre-provisioned network name in cloud account.",
                      "type": "string",
                      "pattern": ""
                    },
                    "name": {
                      "description": "Name of the internal VLD",
                      "type": "string",
                      "pattern": ""
                    },
                    "provider-network": {
                      "properties": {
                        "physical-network": {
                          "description": "Name of the physical network on which the provider\nnetwork is built.",
                          "type": "string",
                          "pattern": ""
                        },
                        "segmentation_id": {
                          "description": "ID of segregated virtual networks",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "ip-profile-ref": {
                      "description": "Named reference to IP-profile object",
                      "type": "string",
                      "pattern": ""
                    },
                    "internal-connection-point": {
                      "items": {
                        "properties": {
                          "id-ref": {
                            "description": "Reference to the internal connection point id",
                            "type": "string"
                          },
                          "ip-address": {
                            "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}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"
                              }
                            ],
                            "description": "IP address of the internal connection point"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "root-bandwidth": {
                      "description": "For ELAN this is the aggregate bandwidth.",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "placement-groups": {
                "items": {
                  "properties": {
                    "name": {
                      "description": "Place group construct to define the compute resource placement strategy\nin cloud environment",
                      "type": "string",
                      "pattern": ""
                    },
                    "requirement": {
                      "description": "This is free text space used to describe the intent/rationale\nbehind this placement group. This is for human consumption only",
                      "type": "string",
                      "pattern": ""
                    },
                    "member-vdus": {
                      "items": {
                        "properties": {
                          "member-vdu-ref": {
                            "description": "",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "strategy": {
                      "properties": {
                        "type": {
                          "enum": [
                            "COLOCATION",
                            "ISOLATION"
                          ]
                        }
                      },
                      "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  "
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "vnf-configuration": {
                "properties": {
                  "juju": {
                    "properties": {
                      "charm": {
                        "description": "Juju charm to use with the VNF or VDU.",
                        "type": "string",
                        "pattern": ""
                      },
                      "proxy": {
                        "description": "Is this a proxy charm?",
                        "type": "boolean"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "initial-config-primitive": {
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Name of the configuration primitive.",
                          "type": "string",
                          "pattern": ""
                        },
                        "user-defined-script": {
                          "description": "A user defined script.",
                          "type": "string",
                          "pattern": ""
                        },
                        "parameter": {
                          "items": {
                            "properties": {
                              "value": {
                                "description": "Value associated with the name.",
                                "type": "string",
                                "pattern": ""
                              },
                              "name": {
                                "description": "Name of the parameter.",
                                "type": "string",
                                "pattern": ""
                              },
                              "data-type": {
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                },
                                "description": "Data type associated with the value."
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "seq": {
                          "description": "Sequence number for the configuration primitive.",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "config-access": {
                    "properties": {
                      "ssh-access": {
                        "properties": {
                          "required": {
                            "description": "whether ssh access is needed or not",
                            "type": "boolean"
                          },
                          "default-user": {
                            "description": "Default user for ssh",
                            "type": "string",
                            "pattern": ""
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "relation": {
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Name of the relation.",
                          "type": "string",
                          "pattern": ""
                        },
                        "entities": {
                          "items": {
                            "properties": {
                              "id": {
                                "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.",
                                "type": "string",
                                "pattern": ""
                              },
                              "endpoint": {
                                "description": "Endpoint name defining the relation.",
                                "type": "string",
                                "pattern": ""
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "script": {
                    "properties": {
                      "script-type": {
                        "properties": {
                          "type": {
                            "enum": [
                              "rift"
                            ]
                          }
                        },
                        "description": "Script type - currently supported - Scripts confirming to Rift CA plugin"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "config-primitive": {
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Name of the config primitive.",
                          "type": "string",
                          "pattern": ""
                        },
                        "user-defined-script": {
                          "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                          "type": "string",
                          "pattern": ""
                        },
                        "parameter": {
                          "items": {
                            "properties": {
                              "hidden": {
                                "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
                                "type": "boolean"
                              },
                              "read-only": {
                                "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values.",
                                "type": "boolean"
                              },
                              "parameter-pool": {
                                "description": "NSD parameter pool name to use for this parameter",
                                "type": "string",
                                "pattern": ""
                              },
                              "name": {
                                "description": "Name of the parameter.",
                                "type": "string",
                                "pattern": ""
                              },
                              "mandatory": {
                                "description": "Is this field mandatory",
                                "type": "boolean"
                              },
                              "data-type": {
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                },
                                "description": "Data type associated with the name."
                              },
                              "default-value": {
                                "description": "The default value for this field",
                                "type": "string",
                                "pattern": ""
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "metrics": {
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Name of the metric, as defined in the Juju charm.",
                          "type": "string",
                          "pattern": ""
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  },
                  "terminate-config-primitive": {
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Name of the configuration primitive.",
                          "type": "string",
                          "pattern": ""
                        },
                        "user-defined-script": {
                          "description": "A user defined script.",
                          "type": "string",
                          "pattern": ""
                        },
                        "parameter": {
                          "items": {
                            "properties": {
                              "value": {
                                "description": "Value associated with the name.",
                                "type": "string",
                                "pattern": ""
                              },
                              "name": {
                                "description": "Name of the parameter.",
                                "type": "string",
                                "pattern": ""
                              },
                              "data-type": {
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "STRING",
                                      "INTEGER",
                                      "BOOLEAN"
                                    ]
                                  }
                                },
                                "description": "Data type associated with the value."
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "seq": {
                          "description": "Sequence number for the configuration primitive.",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "connection-point": {
                "items": {
                  "properties": {
                    "id": {
                      "description": "Identifier for the internal connection points",
                      "type": "string",
                      "pattern": ""
                    },
                    "short-name": {
                      "description": "Short name to appear as label in the UI",
                      "type": "string",
                      "pattern": ""
                    },
                    "port-security-enabled": {
                      "description": "Enables the port security for the port.",
                      "type": "boolean"
                    },
                    "type": {
                      "properties": {
                        "type": {
                          "enum": [
                            "VPORT"
                          ]
                        }
                      },
                      "description": "Type of the connection point."
                    },
                    "internal-vld-ref": {
                      "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.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the connection point",
                      "type": "string",
                      "pattern": ""
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "operational-status": {
                "properties": {
                  "type": {
                    "enum": [
                      "init",
                      "running",
                      "upgrading",
                      "terminate",
                      "terminated",
                      "failed"
                    ]
                  }
                },
                "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"
              },
              "id": {
                "description": "Identifier for the VNFD.",
                "type": "string",
                "pattern": ""
              },
              "description": {
                "description": "Description of the VNFD.",
                "type": "string",
                "pattern": ""
              },
              "scaling-group-descriptor": {
                "items": {
                  "properties": {
                    "vdu": {
                      "items": {
                        "properties": {
                          "count": {
                            "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",
                            "type": "integer"
                          },
                          "vdu-id-ref": {
                            "description": "Reference to the VDU id",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "scaling-config-action": {
                      "items": {
                        "properties": {
                          "vnf-config-primitive-name-ref": {
                            "description": "Reference to the VNF config primitive",
                            "type": "string"
                          },
                          "trigger": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "pre-scale-in",
                                  "post-scale-in",
                                  "pre-scale-out",
                                  "post-scale-out"
                                ]
                              }
                            },
                            "description": "scaling trigger"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "name": {
                      "description": "Name of this scaling group.",
                      "type": "string",
                      "pattern": ""
                    },
                    "scaling-policy": {
                      "items": {
                        "properties": {
                          "scaling-criteria": {
                            "items": {
                              "properties": {
                                "scale-out-relational-operation": {
                                  "properties": {
                                    "type": {
                                      "enum": [
                                        "GE",
                                        "LE",
                                        "GT",
                                        "LT",
                                        "EQ"
                                      ]
                                    }
                                  },
                                  "description": "The relational operator used to compare the monitoring param\nagainst the scale-out-threshold."
                                },
                                "vnf-monitoring-param-ref": {
                                  "description": "Reference to the VNF level monitoring parameter\nthat is aggregated",
                                  "type": "string"
                                },
                                "scale-in-threshold": {
                                  "description": "Value below which scale-in requests are generated",
                                  "type": "integer"
                                },
                                "name": {
                                  "description": "",
                                  "type": "string",
                                  "pattern": ""
                                },
                                "scale-in-relational-operation": {
                                  "properties": {
                                    "type": {
                                      "enum": [
                                        "GE",
                                        "LE",
                                        "GT",
                                        "LT",
                                        "EQ"
                                      ]
                                    }
                                  },
                                  "description": "The relational operator used to compare the monitoring param\nagainst the scale-in-threshold."
                                },
                                "scale-out-threshold": {
                                  "description": "Value above which scale-out requests are generated",
                                  "type": "integer"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array",
                            "additionalProperties": false
                          },
                          "enabled": {
                            "description": "Specifies if the scaling policy can be applied",
                            "type": "boolean"
                          },
                          "scale-out-operation-type": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "AND",
                                  "OR"
                                ]
                              }
                            },
                            "description": "Operation to be applied to check between scaling criterias to\ncheck if the scale out threshold condition has been met.\nDefauls to OR"
                          },
                          "name": {
                            "description": "Name of the scaling policy",
                            "type": "string",
                            "pattern": ""
                          },
                          "scaling-type": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "manual",
                                  "automatic"
                                ]
                              }
                            },
                            "description": "Type of scaling"
                          },
                          "scale-in-operation-type": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "AND",
                                  "OR"
                                ]
                              }
                            },
                            "description": "Operation to be applied to check between scaling criterias to\ncheck if the scale in threshold condition has been met.\nDefaults to AND"
                          },
                          "cooldown-time": {
                            "description": "The duration after a scaling-in/scaling-out action has been\ntriggered, for which there will be no further optional",
                            "type": "integer"
                          },
                          "threshold-time": {
                            "description": "The duration for which the criteria must hold true",
                            "type": "integer"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "min-instance-count": {
                      "description": "Minimum instances of the scaling group which are allowed.\nThese instances are created by default when the network service\nis instantiated.",
                      "type": "integer"
                    },
                    "max-instance-count": {
                      "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.",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              },
              "name": {
                "description": "VNFD name.",
                "type": "string",
                "pattern": ""
              },
              "version": {
                "description": "Version of the VNFD",
                "type": "string",
                "pattern": ""
              },
              "vdu": {
                "items": {
                  "properties": {
                    "interface": {
                      "items": {
                        "properties": {
                          "internal-connection-point-ref": {
                            "description": "Leaf Ref to the particular internal connection point",
                            "type": "string"
                          },
                          "virtual-interface": {
                            "properties": {
                              "bandwidth": {
                                "description": "Aggregate bandwidth of the NIC.",
                                "type": "integer"
                              },
                              "vpci": {
                                "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.",
                                "type": "string",
                                "pattern": ""
                              },
                              "type": {
                                "properties": {
                                  "type": {
                                    "enum": [
                                      "PARAVIRT",
                                      "OM-MGMT",
                                      "PCI-PASSTHROUGH",
                                      "SR-IOV",
                                      "VIRTIO",
                                      "E1000",
                                      "RTL8139",
                                      "PCNET"
                                    ]
                                  }
                                },
                                "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"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "INTERNAL",
                                  "EXTERNAL"
                                ]
                              }
                            },
                            "description": "Type of the Interface"
                          },
                          "external-connection-point-ref": {
                            "description": "Leaf Ref to the particular external connection point",
                            "type": "string"
                          },
                          "position": {
                            "description": "Explicit Position of the interface within the list",
                            "type": "integer"
                          },
                          "name": {
                            "description": "Name of the interface. Note that this\nname has only local significance to the VDU.",
                            "type": "string",
                            "pattern": ""
                          },
                          "mac-address": {
                            "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.",
                            "type": "string",
                            "pattern": ""
                          },
                          "mgmt-interface": {
                            "description": "Flag to indicate that this is the mgmt interface\nto be used for VDU configuration",
                            "type": "boolean"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "image-checksum": {
                      "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",
                      "type": "string",
                      "pattern": ""
                    },
                    "mgmt-vpci": {
                      "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.",
                      "type": "string",
                      "pattern": ""
                    },
                    "monitoring-param": {
                      "items": {
                        "properties": {
                          "id": {
                            "description": "The unique id of the monitoring param at VDU level",
                            "type": "string",
                            "pattern": ""
                          },
                          "nfvi-metric": {
                            "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"
                                ]
                              }
                            },
                            "description": "The associated NFVI metric to be monitored"
                          },
                          "interface-name-ref": {
                            "description": "Reference to a VDU interface name. Applicable only when the nfvi-metric\nrefers to an interface and not to the VM",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "cloud-init": {
                      "description": "Contents of cloud-init script, provided inline, in cloud-config format",
                      "type": "string",
                      "pattern": ""
                    },
                    "vm-flavor": {
                      "properties": {
                        "storage-gb": {
                          "description": "Amount of disk space in GB.",
                          "type": "integer"
                        },
                        "memory-mb": {
                          "description": "Amount of memory in MB.",
                          "type": "integer"
                        },
                        "vcpu-count": {
                          "description": "Number of VCPUs for the VM.",
                          "type": "number"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "internal-connection-point": {
                      "items": {
                        "properties": {
                          "id": {
                            "description": "Identifier for the internal connection points",
                            "type": "string",
                            "pattern": ""
                          },
                          "short-name": {
                            "description": "Short name to appear as label in the UI",
                            "type": "string",
                            "pattern": ""
                          },
                          "port-security-enabled": {
                            "description": "Enables the port security for the port.",
                            "type": "boolean"
                          },
                          "type": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "VPORT"
                                ]
                              }
                            },
                            "description": "Type of the connection point."
                          },
                          "internal-vld-ref": {
                            "description": "",
                            "type": "string"
                          },
                          "name": {
                            "description": "Name of the connection point",
                            "type": "string",
                            "pattern": ""
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "guest-epa": {
                      "properties": {
                        "mem-quota": {
                          "properties": {
                            "limit": {
                              "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.",
                              "type": "integer"
                            },
                            "shares": {
                              "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",
                              "type": "integer"
                            },
                            "reserve": {
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "vif-quota": {
                          "properties": {
                            "limit": {
                              "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.",
                              "type": "integer"
                            },
                            "shares": {
                              "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",
                              "type": "integer"
                            },
                            "reserve": {
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "disk-io-quota": {
                          "properties": {
                            "limit": {
                              "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.",
                              "type": "integer"
                            },
                            "shares": {
                              "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",
                              "type": "integer"
                            },
                            "reserve": {
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "cpu-quota": {
                          "properties": {
                            "limit": {
                              "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.",
                              "type": "integer"
                            },
                            "shares": {
                              "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",
                              "type": "integer"
                            },
                            "reserve": {
                              "description": "Defines the guaranteed minimum reservation.\nIf needed, the machine will definitely get allocated the reserved amount of resources.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "pcie-device": {
                          "items": {
                            "properties": {
                              "count": {
                                "description": "Number of devices to attach to the VM.",
                                "type": "integer"
                              },
                              "device-id": {
                                "description": "Device identifier.",
                                "type": "string",
                                "pattern": ""
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "mempage-size": {
                          "properties": {
                            "type": {
                              "enum": [
                                "LARGE",
                                "SMALL",
                                "SIZE_2MB",
                                "SIZE_1GB",
                                "PREFER_LARGE"
                              ]
                            }
                          },
                          "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"
                        },
                        "numa-node-policy": {
                          "properties": {
                            "node-cnt": {
                              "description": "The number of NUMA nodes to expose to the VM.",
                              "type": "number"
                            },
                            "node": {
                              "items": {
                                "properties": {
                                  "id": {
                                    "description": "NUMA node identification. Typically\nit's 0 or 1",
                                    "type": "integer"
                                  },
                                  "num-threads": {
                                    "description": "",
                                    "type": "number"
                                  },
                                  "paired-threads": {
                                    "properties": {
                                      "paired-thread-ids": {
                                        "items": {
                                          "properties": {
                                            "thread-b": {
                                              "description": "",
                                              "type": "number"
                                            },
                                            "thread-a": {
                                              "description": "",
                                              "type": "number"
                                            }
                                          },
                                          "type": "object",
                                          "additionalProperties": false
                                        },
                                        "type": "array",
                                        "additionalProperties": false
                                      },
                                      "num-paired-threads": {
                                        "description": "",
                                        "type": "number"
                                      }
                                    },
                                    "type": "object",
                                    "additionalProperties": false
                                  },
                                  "vcpu": {
                                    "items": {
                                      "properties": {
                                        "id": {
                                          "description": "List of VCPUs ids to allocate on\nthis NUMA node",
                                          "type": "integer"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array",
                                    "additionalProperties": false
                                  },
                                  "memory-mb": {
                                    "description": "Memory size expressed in MB\nfor this NUMA node.",
                                    "type": "integer"
                                  },
                                  "num-cores": {
                                    "description": "",
                                    "type": "number"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "type": "array",
                              "additionalProperties": false
                            },
                            "mem-policy": {
                              "properties": {
                                "type": {
                                  "enum": [
                                    "STRICT",
                                    "PREFERRED"
                                  ]
                                }
                              },
                              "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"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "cpu-pinning-policy": {
                          "properties": {
                            "type": {
                              "enum": [
                                "DEDICATED",
                                "SHARED",
                                "ANY"
                              ]
                            }
                          },
                          "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"
                        },
                        "trusted-execution": {
                          "description": "This VM should be allocated from trusted pool",
                          "type": "boolean"
                        },
                        "cpu-thread-pinning-policy": {
                          "properties": {
                            "type": {
                              "enum": [
                                "AVOID",
                                "SEPARATE",
                                "ISOLATE",
                                "PREFER"
                              ]
                            }
                          },
                          "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."
                        },
                        "numa-unaware": {
                          "items": [
                            {
                              "type": "null"
                            }
                          ],
                          "description": "",
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "supplemental-boot-data": {
                      "properties": {
                        "boot-data-drive": {
                          "description": "Some VIMs implement additional drives to host config-files or meta-data",
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "count": {
                      "description": "Number of instances of VDU",
                      "type": "integer"
                    },
                    "volumes": {
                      "items": {
                        "properties": {
                          "image": {
                            "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",
                            "type": "string",
                            "pattern": ""
                          },
                          "description": {
                            "description": "Description for Volume",
                            "type": "string",
                            "pattern": ""
                          },
                          "ephemeral": {
                            "items": [
                              {
                                "type": "null"
                              }
                            ],
                            "description": "",
                            "type": "array"
                          },
                          "size": {
                            "description": "Size of disk in GB",
                            "type": "integer"
                          },
                          "device-type": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "disk",
                                  "cdrom",
                                  "floppy",
                                  "lun"
                                ]
                              }
                            },
                            "description": "The type of device as exposed to guest"
                          },
                          "name": {
                            "description": "Name of the disk-volumes, e.g. vda, vdb etc",
                            "type": "string",
                            "pattern": ""
                          },
                          "image-checksum": {
                            "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",
                            "type": "string",
                            "pattern": ""
                          },
                          "device-bus": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "ide",
                                  "usb",
                                  "virtio",
                                  "scsi"
                                ]
                              }
                            },
                            "description": "Type of disk-bus on which this disk is exposed to guest"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "image": {
                      "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",
                      "type": "string",
                      "pattern": ""
                    },
                    "host-epa": {
                      "properties": {
                        "cpu-feature": {
                          "items": {
                            "properties": {
                              "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"
                                    ]
                                  }
                                },
                                "description": "CPU feature."
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "cpu-arch": {
                          "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"
                              ]
                            }
                          },
                          "description": "Host CPU architecture."
                        },
                        "om-cpu-feature": {
                          "items": {
                            "properties": {
                              "feature": {
                                "description": "CPU feature",
                                "type": "string",
                                "pattern": ""
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "cpu-vendor": {
                          "properties": {
                            "type": {
                              "enum": [
                                "PREFER_INTEL",
                                "REQUIRE_INTEL",
                                "PREFER_AMD",
                                "REQUIRE_AMD"
                              ]
                            }
                          },
                          "description": "Host CPU Vendor."
                        },
                        "cpu-socket-count": {
                          "description": "Number of sockets on the host.",
                          "type": "integer"
                        },
                        "cpu-model": {
                          "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"
                              ]
                            }
                          },
                          "description": "Host CPU model. Examples include: SandyBridge,\nIvyBridge"
                        },
                        "cpu-core-thread-count": {
                          "description": "Number of threads per cores on the host.",
                          "type": "integer"
                        },
                        "cpu-core-count": {
                          "description": "Number of cores on the host.",
                          "type": "integer"
                        },
                        "om-cpu-model-string": {
                          "description": "OpenMANO CPU model string",
                          "type": "string",
                          "pattern": ""
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "vswitch-epa": {
                      "properties": {
                        "ovs-acceleration": {
                          "properties": {
                            "type": {
                              "enum": [
                                "MANDATORY",
                                "PREFERRED",
                                "DISABLED"
                              ]
                            }
                          },
                          "description": "Specifies Open vSwitch acceleration mode.\nMANDATORY: OVS acceleration is required\nPREFERRED: OVS acceleration is preferred"
                        },
                        "ovs-offload": {
                          "properties": {
                            "type": {
                              "enum": [
                                "MANDATORY",
                                "PREFERRED",
                                "DISABLED"
                              ]
                            }
                          },
                          "description": "Specifies Open vSwitch hardware offload mode.\nMANDATORY: OVS offload is required\nPREFERRED: OVS offload is preferred"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "alternative-images": {
                      "items": {
                        "properties": {
                          "vim-type": {
                            "description": "VIM type: openvim, openstack, vmware, aws, etc.",
                            "type": "string",
                            "pattern": ""
                          },
                          "image-checksum": {
                            "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",
                            "type": "string",
                            "pattern": ""
                          },
                          "image": {
                            "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",
                            "type": "string",
                            "pattern": ""
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "id": {
                      "description": "Unique id for the VDU",
                      "type": "string",
                      "pattern": ""
                    },
                    "cloud-init-file": {
                      "description": "Name of file with contents of cloud-init script in cloud-config format",
                      "type": "string",
                      "pattern": ""
                    },
                    "hypervisor-epa": {
                      "properties": {
                        "type": {
                          "properties": {
                            "type": {
                              "enum": [
                                "PREFER_KVM",
                                "REQUIRE_KVM"
                              ]
                            }
                          },
                          "description": "Specifies the type of hypervisor.\nKVM: KVM\nXEN: XEN"
                        },
                        "version": {
                          "description": "",
                          "type": "string",
                          "pattern": ""
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "description": {
                      "description": "Description of the VDU.",
                      "type": "string",
                      "pattern": ""
                    },
                    "alarm": {
                      "items": {
                        "properties": {
                          "value": {
                            "description": "This value defines the threshold that, if crossed, will trigger\nthe alarm.",
                            "type": "integer"
                          },
                          "statistic": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "AVERAGE",
                                  "MINIMUM",
                                  "MAXIMUM",
                                  "COUNT",
                                  "SUM"
                                ]
                              }
                            },
                            "description": "The type of metric statistic that is tracked by this alarm"
                          },
                          "enabled": {
                            "description": "This flag indicates whether the alarm has been enabled or\ndisabled.",
                            "type": "boolean"
                          },
                          "vnf-monitoring-param-ref": {
                            "description": "Reference to the VNF level monitoring parameter\nthat is aggregated",
                            "type": "string"
                          },
                          "evaluations": {
                            "description": "Defines the length of time (seconds) in which metric data are\ncollected in order to evaluate the chosen statistic.",
                            "type": "integer"
                          },
                          "severity": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "LOW",
                                  "MODERATE",
                                  "CRITICAL"
                                ]
                              }
                            },
                            "description": "A measure of the importance or urgency of the alarm"
                          },
                          "actions": {
                            "properties": {
                              "insufficient-data": {
                                "items": {
                                  "properties": {
                                    "url": {
                                      "description": "",
                                      "type": "string",
                                      "pattern": ""
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              },
                              "alarm": {
                                "items": {
                                  "properties": {
                                    "url": {
                                      "description": "",
                                      "type": "string",
                                      "pattern": ""
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              },
                              "ok": {
                                "items": {
                                  "properties": {
                                    "url": {
                                      "description": "",
                                      "type": "string",
                                      "pattern": ""
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "repeat": {
                            "description": "This flag indicates whether the alarm should be repeatedly emitted\nwhile the associated threshold has been crossed.",
                            "type": "boolean"
                          },
                          "alarm-id": {
                            "description": "This field is reserved for the identifier assigned by the VIM provider",
                            "type": "string",
                            "pattern": ""
                          },
                          "vdur-id": {
                            "description": "The identifier of the VDUR that the alarm is associated with",
                            "type": "string",
                            "pattern": ""
                          },
                          "description": {
                            "description": "A description of this alarm",
                            "type": "string",
                            "pattern": ""
                          },
                          "name": {
                            "description": "A human readable string to identify the alarm",
                            "type": "string",
                            "pattern": ""
                          },
                          "operation": {
                            "properties": {
                              "type": {
                                "enum": [
                                  "GE",
                                  "LE",
                                  "GT",
                                  "LT",
                                  "EQ"
                                ]
                              }
                            },
                            "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."
                          },
                          "period": {
                            "description": "The period defines the length of time (seconds) that the metric\ndata are collected over in oreder to evaluate the chosen\nstatistic.",
                            "type": "integer"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array",
                      "additionalProperties": false
                    },
                    "pdu-type": {
                      "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.",
                      "type": "string",
                      "pattern": ""
                    },
                    "name": {
                      "description": "Unique name for the VDU",
                      "type": "string",
                      "pattern": ""
                    },
                    "vdu-configuration": {
                      "properties": {
                        "juju": {
                          "properties": {
                            "charm": {
                              "description": "Juju charm to use with the VNF or VDU.",
                              "type": "string",
                              "pattern": ""
                            },
                            "proxy": {
                              "description": "Is this a proxy charm?",
                              "type": "boolean"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "initial-config-primitive": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the configuration primitive.",
                                "type": "string",
                                "pattern": ""
                              },
                              "user-defined-script": {
                                "description": "A user defined script.",
                                "type": "string",
                                "pattern": ""
                              },
                              "parameter": {
                                "items": {
                                  "properties": {
                                    "value": {
                                      "description": "Value associated with the name.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "description": "Name of the parameter.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      },
                                      "description": "Data type associated with the value."
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              },
                              "seq": {
                                "description": "Sequence number for the configuration primitive.",
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "config-access": {
                          "properties": {
                            "ssh-access": {
                              "properties": {
                                "required": {
                                  "description": "whether ssh access is needed or not",
                                  "type": "boolean"
                                },
                                "default-user": {
                                  "description": "Default user for ssh",
                                  "type": "string",
                                  "pattern": ""
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "script": {
                          "properties": {
                            "script-type": {
                              "properties": {
                                "type": {
                                  "enum": [
                                    "rift"
                                  ]
                                }
                              },
                              "description": "Script type - currently supported - Scripts confirming to Rift CA plugin"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "config-primitive": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the config primitive.",
                                "type": "string",
                                "pattern": ""
                              },
                              "user-defined-script": {
                                "description": "A user defined script. If user defined script is defined,\nthe script will be executed using bash",
                                "type": "string",
                                "pattern": ""
                              },
                              "parameter": {
                                "items": {
                                  "properties": {
                                    "hidden": {
                                      "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
                                      "type": "boolean"
                                    },
                                    "read-only": {
                                      "description": "The value should be dimmed by the UI.\nOnly applies to parameters with default values.",
                                      "type": "boolean"
                                    },
                                    "parameter-pool": {
                                      "description": "NSD parameter pool name to use for this parameter",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "description": "Name of the parameter.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "mandatory": {
                                      "description": "Is this field mandatory",
                                      "type": "boolean"
                                    },
                                    "data-type": {
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      },
                                      "description": "Data type associated with the name."
                                    },
                                    "default-value": {
                                      "description": "The default value for this field",
                                      "type": "string",
                                      "pattern": ""
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "metrics": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the metric, as defined in the Juju charm.",
                                "type": "string",
                                "pattern": ""
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        },
                        "terminate-config-primitive": {
                          "items": {
                            "properties": {
                              "name": {
                                "description": "Name of the configuration primitive.",
                                "type": "string",
                                "pattern": ""
                              },
                              "user-defined-script": {
                                "description": "A user defined script.",
                                "type": "string",
                                "pattern": ""
                              },
                              "parameter": {
                                "items": {
                                  "properties": {
                                    "value": {
                                      "description": "Value associated with the name.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "name": {
                                      "description": "Name of the parameter.",
                                      "type": "string",
                                      "pattern": ""
                                    },
                                    "data-type": {
                                      "properties": {
                                        "type": {
                                          "enum": [
                                            "STRING",
                                            "INTEGER",
                                            "BOOLEAN"
                                          ]
                                        }
                                      },
                                      "description": "Data type associated with the value."
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array",
                                "additionalProperties": false
                              },
                              "seq": {
                                "description": "Sequence number for the configuration primitive.",
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "description": "Generated by pyang from module vnfd",
  "type": "object",
  "title": "vnfd",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "additionalProperties": false
}