/* Copyright 2020 Whitestack LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ module kdu { yang-version 1.1; namespace "urn:etsi:osm:yang:augments:kdu"; prefix "kdu"; import etsi-nfv-vnfd { prefix vnfd; } import common-augments { prefix common; } grouping extended-ext-cpd { leaf k8s-cluster-net { description "Reference to the K8s cluster network to which CPs instantiated from this external CP Descriptor (CPD) connect."; type leafref { path "/vnfd:vnfd/kdu:k8s-cluster/kdu:nets/kdu:id"; } } } grouping extended-kdu-configuration { container kdu-configuration { uses common:vnfc-configuration; uses common:vdu-config-access; leaf-list blacklist-config-primitive { description "List of blacklisted config primitives from the list of default kdu config primitives"; type enumeration { enum upgrade; enum rollback; } } } } grouping extended-kdu { list kdu { description "List of K8s Deployment Units"; key "name"; leaf name { description "Unique name for the KDU"; type string; } leaf description { description "Description of the KDU."; type string; } choice kdu-model { description "Indicates the KDU model, either as a helm-chart or as a juju-bundle."; case helm-chart { leaf helm-chart { description "Helm chart that models the KDU, in any of the following ways: - / - - - "; type string; } leaf helm-version { description "Helm version to use for this helm-chart, v3 by default"; type enumeration { enum v2; enum v3; } default v3; } } case juju-bundle { leaf juju-bundle { description "Juju bundle that models the KDU, in any of the following ways: - / - - - "; type string; } } } uses extended-kdu-configuration; } container k8s-cluster { leaf-list version { description "List of supported K8s versions. The cluster where the KDUs will be deployed will have to match one of these versions."; type string; } leaf-list cni { description "List of supported CNI plugins. The cluster where the KDUs will be deployed will have to use one of these CNI plugins."; type enumeration { enum calico; enum flannel; enum multus; } } list nets { description "List of required networks in the K8s cluster. The cluster where the KDUs will be deployed will have to use one of these CNI plugins."; key "id"; leaf id { description "Internal identifier for the K8s cluster network in this VNF"; type string; } } } } augment "/vnfd:vnfd" { uses extended-kdu; } augment "/vnfd:vnfd/vnfd:ext-cpd/vnfd:cp-connection" { uses extended-ext-cpd; } }