summaryrefslogtreecommitdiffstats
path: root/samples/yang.yaml
blob: 86b7b2f3134290e9d62deb8b83469ee3d5852f90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322

@media only all and (prefers-color-scheme: dark) {
.highlight .hll { background-color: #49483e }
.highlight .c { color: #75715e } /* Comment */
.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
.highlight .k { color: #66d9ef } /* Keyword */
.highlight .l { color: #ae81ff } /* Literal */
.highlight .n { color: #f8f8f2 } /* Name */
.highlight .o { color: #f92672 } /* Operator */
.highlight .p { color: #f8f8f2 } /* Punctuation */
.highlight .ch { color: #75715e } /* Comment.Hashbang */
.highlight .cm { color: #75715e } /* Comment.Multiline */
.highlight .cp { color: #75715e } /* Comment.Preproc */
.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
.highlight .c1 { color: #75715e } /* Comment.Single */
.highlight .cs { color: #75715e } /* Comment.Special */
.highlight .gd { color: #f92672 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gi { color: #a6e22e } /* Generic.Inserted */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #75715e } /* Generic.Subheading */
.highlight .kc { color: #66d9ef } /* Keyword.Constant */
.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
.highlight .kn { color: #f92672 } /* Keyword.Namespace */
.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
.highlight .kt { color: #66d9ef } /* Keyword.Type */
.highlight .ld { color: #e6db74 } /* Literal.Date */
.highlight .m { color: #ae81ff } /* Literal.Number */
.highlight .s { color: #e6db74 } /* Literal.String */
.highlight .na { color: #a6e22e } /* Name.Attribute */
.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
.highlight .nc { color: #a6e22e } /* Name.Class */
.highlight .no { color: #66d9ef } /* Name.Constant */
.highlight .nd { color: #a6e22e } /* Name.Decorator */
.highlight .ni { color: #f8f8f2 } /* Name.Entity */
.highlight .ne { color: #a6e22e } /* Name.Exception */
.highlight .nf { color: #a6e22e } /* Name.Function */
.highlight .nl { color: #f8f8f2 } /* Name.Label */
.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
.highlight .nx { color: #a6e22e } /* Name.Other */
.highlight .py { color: #f8f8f2 } /* Name.Property */
.highlight .nt { color: #f92672 } /* Name.Tag */
.highlight .nv { color: #f8f8f2 } /* Name.Variable */
.highlight .ow { color: #f92672 } /* Operator.Word */
.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
.highlight .sc { color: #e6db74 } /* Literal.String.Char */
.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
.highlight .se { color: #ae81ff } /* Literal.String.Escape */
.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
.highlight .sx { color: #e6db74 } /* Literal.String.Other */
.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #a6e22e } /* Name.Function.Magic */
.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
.highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */
.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
}
@media (prefers-color-scheme: light) {
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
}
.. _opnfv-overview:

.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
.. (c) Open Platform for NFV Project, Inc. and its contributors

================
Platform overview
================

Introduction
============

Network Functions Virtualization (NFV) is transforming the networking industry via
software-defined infrastructures and open source is the proven method for quickly developing
software for commercial products and services that can move markets.
Open Platform for NFV (OPNFV) facilitates the development and evolution of NFV
components across various open source ecosystems. Through system level integration,
deployment and testing, OPNFV constructs a reference NFV platform to accelerate the
transformation of enterprise and service provider networks.
As an open source project, OPNFV is uniquely positioned to bring together the work
of standards bodies, open source communities, service providers and commercial suppliers to deliver
a de facto NFV platform for the industry.

By integrating components from upstream projects, the community is able to conduct performance
and use case-based testing on a variety of solutions to ensure the platform’s suitability for
NFV use cases. OPNFV also works upstream with other open source communities to bring contributions
and learnings from its work directly to those communities in the form of blueprints, patches, bugs,
and new code.

OPNFV initially focused on building NFV Infrastructure (NFVI) and Virtualised Infrastructure
Management (VIM) by integrating components from upstream projects such as OpenDaylight,
OpenStack, Ceph Storage, KVM, Open vSwitch, and Linux.
More recently, OPNFV has extended its portfolio of forwarding solutions to include fd.io and ODP,
is able to run on both Intel and ARM commercial and white-box hardware, support VM, Container and
BareMetal workloads, and includes Management and Network Orchestration MANO components primarily
for application composition and management in the Danube release.

These capabilities, along with application programmable interfaces (APIs) to other NFV
elements, form the basic infrastructure required for Virtualized Network Functions (VNF)
and MANO components.

Concentrating on these components while also considering proposed projects on additional
topics (such as the MANO components and applications themselves), OPNFV aims to enhance
NFV services by increasing performance and power efficiency improving reliability,
availability and serviceability, and delivering comprehensive platform instrumentation.


OPNFV Platform Architecture
===========================

The OPNFV project addresses a number of aspects in the development of a consistent virtualisation
platform including common hardware requirements, software architecture, MANO and applications.


OPNFV Platform Overview Diagram

.. image:: ../images/opnfvplatformgraphic.png
   :alt: Overview infographic of the opnfv platform and projects.


To address these areas effectively, the OPNFV platform architecture can be decomposed
into the following basic building blocks:

* Hardwar
 module clearwater {

       namespace "http://localhost/ietf-inet-types.yang";

       prefix "yang";

       organization "HP";

       contact "TBD";

       description "This module defines a VNF Deployment Unit.";
     revision "2014-05-18" {

         description

           "Initial version";

         reference

           "RFC XXXX";

       }
      container clearwater {

         description

           "Vdus used in a vnfd";

       list ellis {
      key id;
      leaf id{
      type string;
      description "key ID for vdu1";
      }
         description

         "Vdu key";



         leaf instance-num {

         type uint16{
         range 1..6;}
                                 default 1;


         description

           "Number of instances of the said VDU which shall be
     instantiated";

         }

         leaf vm-image {

         type string;
         reference  "uri";


         description

           "Reference to a VM image";

         }
         container resource {
         description

               "The required resource";

             container cpu {

               description

                 "The required computation resource";



               leaf vCPU_num {

                 type uint32{
         range 4;
         }

                 description

                   "The number of virtual CPU units";

               }



               list vCPU-spec {

                 key "name";



                 description

                   "Processor characteristics for the VDU";



                 leaf name {

                   type string;

                   description

                     "Name of vCPU-spec";

                 }
         leaf description {

                   type string;

                   description

                     "Description of vCPU-spec";

                 }

                 leaf value {

                   type uint32;

                   description

                     "Value of vCPU-spec";

                 }

               }

             }

             container memory {

               description

                 "The required memory resource";

               leaf memory_size {

                 type uint32{
         range 4096;
         }

                 description

                   "Memory size, unit:MBytes";

               }

               list memory-spec {

                 key name;



                 description

                   "Memory characteristics for the VDU";



                 leaf name {

                   type string;

                   description

                     "Name of memory-spec";

                 }



                 leaf description {

                   type string;

                   description

                     "Description of memory-spec";

                 }



                 leaf value {

                   type uint32;

                   description

                     "Value of memory-spec";

                 }

          }

             }



             container disk {

               description

                 "The required storage resource";



               leaf disk-size {

                 type uint32{
     range 2048;
    }
                 description

                   "Virtual storage size, unit:MBytes";
               }



               list disk-KQI {

                 key name;



                 description

                   "Storage characteristics in the VDU";



                 leaf name {

                   type string;

                   description

                     "Name of disk-KQI";

                 }
         leaf description {

                   type string;

                   description

                     "Description of disk-KQI";

                 }



                 leaf value {

                   type uint32;

                   description

                     "Value of disk-KQI";

                 }

               }

             }



             container vnic {

               description

                 "Virtual network interface card (vnic) resource";



               leaf vnic-num {

                 type uint32{
         range 2;
         }

                 description

                   "The total number of virtual vnic";

               }
          }

           }



           container workflow-script {

             description

               "VDU workflow script";



             leaf init {

               type string;
         default "start.sh";


               description

                 "VDU initialization script";
             }



             leaf terminate {

               type string;
         default "stop.sh";


               description

                 "VDU termination script";
        }

             leaf graceful-shutdown {

               type string;
         default "shutdown.sh";


               description

                 "VDU graceful shutdown script";

             }

           }

         }
     list bono {
      key id;
      leaf id{
      type string;
      description "key ID for vdu2";
      }
         description

         "Vdu key";



         leaf instance-num {

         type uint16;
         default 3;


         description

           "Number of instances of the said VDU which shall be
     instantiated";

         }



         leaf vm-image {

         type string;
         reference "URI";


         description

           "Reference to a VM image";

         }



         container resource {
         description

               "The required resource";



             container cpu {

               description

                 "The required computation resource";



               leaf vCPU_num {

                 type uint32{
         range 3;
         }

                 description

                   "The number of virtual CPU units";

               }



               list vCPU-spec {

                 key "name";



                 description

                   "Processor characteristics for the VDU";



                 leaf name {

                   type string;

                   description

                     "Name of vCPU-spec";

                 }
         leaf description {

                   type string;

                   description

                     "Description of vCPU-spec";

                 }



                 leaf value {

                   type uint32;

                   description

                     "Value of vCPU-spec";

                 }

               }

             }



             container memory {

               description

                 "The required memory resource";



               leaf memory_size {

                 type uint32{
         range 2048;
         }

                 description

                   "Memory size, unit:MBytes";

               }

               list memory-spec {

                 key name;

                 description

                   "Memory characteristics for the VDU";



                 leaf name {

                   type string;

                   description

                     "Name of memory-spec";

                 }



                 leaf description {

                   type string;

                   description

                     "Description of memory-spec";

                 }



                 leaf value {

                   type uint32;

                   description

                     "Value of memory-spec";

                 }

          }

             }



             container disk {

               description

                 "The required storage resource";



               leaf disk-size {

                 type uint32{
         range 3000;
         }

                 description

                   "Virtual storage size, unit:MBytes";

               }



               list disk-KQI {

                 key name;



                 description

                   "Storage characteristics in the VDU";



                 leaf name {

                   type string;

                   description

                     "Name of disk-KQI";

                 }
         leaf description {

                   type string;

                   description

                     "Description of disk-KQI";

                 }



                 leaf value {

                   type uint32;

                   description

                     "Value of disk-KQI";

                 }

               }

             }



             container vnic {

               description

                 "Virtual network interface card (vnic) resource";



               leaf vnic-num {

                 type uint32{
         range 2;
         }

                 description

                   "The total number of virtual vnic";

               }
          }

           }



           container workflow-script {

             description

               "VDU workflow script";



             leaf init {

               type string;
         default "start.sh";


               description

                 "VDU initialization script";

             }



             leaf terminate {

               type string;
         default "stop.sh";


               description

                 "VDU termination script";

             }

             leaf graceful-shutdown {

               type string;
         default "shutdown.sh";


               description

                 "VDU graceful shutdown script";

             }

           }

         }

       }

   }