SOL006 augment: KDU support for helm v3
[osm/IM.git] / models / augments / kdu.yang
1 /*
2   Copyright 2020 Whitestack LLC
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8     http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13   implied.
14   See the License for the specific language governing permissions and
15   limitations under the License.
16 */
17
18 module kdu {
19     yang-version 1.1;
20     namespace "urn:etsi:osm:yang:augments:kdu";
21     prefix "kdu";
22
23     import etsi-nfv-vnfd {
24         prefix vnfd;
25     }
26
27     import common-augments {
28         prefix common;
29     }
30
31     grouping extended-ext-cpd {
32         leaf k8s-cluster-net {
33             description
34               "Reference to the K8s cluster network
35                to which CPs instantiated from this external CP
36                Descriptor (CPD) connect.";
37             type leafref {
38                 path "/vnfd:vnfd/kdu:k8s-cluster/kdu:nets/kdu:id";
39             }
40         }
41     }
42
43     grouping extended-kdu-configuration {
44         list kdu-configuration {
45             key "id";
46             leaf id {
47                 description
48                   "Internal identifier for the KDU configuration";
49                 type string;
50             }
51             uses common:vnfc-configuration;
52             uses common:vdu-config-access;
53
54             leaf-list blacklist-config-primitive {
55                 description
56                   "List of blacklisted config primitives from the list of
57                    default kdu config primitives";
58
59                 type enumeration {
60                     enum upgrade;
61                     enum rollback;
62                 }
63             }
64         }
65     }
66
67     grouping extended-kdu-model {
68         list kdu-model {
69             key "id";
70
71             leaf id {
72                 description
73                   "Internal identifier for the KDU model";
74                 type string;
75             }
76
77             leaf kdu-model-type {
78                 description
79                   "Indicates the KDU model, either as a helm-chart or as a juju-bundle.";
80
81                 type enumeration {
82                     enum helm-chart;
83                     enum juju-bundle;
84                 }
85             }
86
87             leaf kdu-model-helm-version {
88                 description
89                   "Helm version to use for this helm-chart, v3 by default.";
90
91                 type enumeration {
92                     enum v2;
93                     enum v3;
94                 }
95                 default v3;
96             }
97
98             leaf kdu-model-locator {
99                 description
100                   "Indicates the KDU model location, either as a path to a folder in the 
101                    package or as a URL where to fetch the model.";
102
103                 type string;
104             }
105         }
106     }
107
108     grouping extended-kdu {
109         list kdu {
110             description
111               "List of K8s Deployment Units";
112             key "name";
113
114             leaf name {
115                 description
116                   "Unique name for the KDU";
117                 type string;
118             }
119
120             leaf description {
121                 description
122                   "Description of the KDU.";
123                 type string;
124             }
125         }
126
127         container k8s-cluster {
128             leaf-list version {
129                 description
130                   "List of supported K8s versions.
131                    The cluster where the KDUs will be deployed will have to match
132                    one of these versions.";
133
134                 type string;
135             }
136
137             leaf-list cni {
138                 description
139                   "List of supported CNI plugins.
140                    The cluster where the KDUs will be deployed will have to use
141                    one of these CNI plugins.";
142
143                 type enumeration {
144                     enum calico;
145                     enum flannel;
146                     enum multus;
147                 }
148             }
149
150             list nets {
151                 description
152                   "List of required networks in the K8s cluster.
153                    The cluster where the KDUs will be deployed will have to use
154                    one of these CNI plugins.";
155
156                 key "id";
157
158                 leaf id {
159                     description
160                       "Internal identifier for the K8s cluster network in this VNF";
161                     type string;
162                 }
163             }
164         }
165     }
166
167     augment "/vnfd:vnfd" {
168         uses extended-kdu;
169         uses extended-kdu-configuration;
170         uses extended-kdu-model;
171     }
172
173     augment "/vnfd:vnfd/vnfd:ext-cpd/vnfd:cp-connection" {
174         uses extended-ext-cpd;
175     }
176 }