Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / composer / src / schemas / yang / json-vnfd.json
1 {
2  "synth": "source",
3  "name": "rw-vnfd",
4  "schema": {
5   "module": {
6    "rw-vnfd": {
7     "namespace": "http://riftio.com/ns/riftware-1.0/rw-vnfd",
8     "prefix": "rw-vnfd",
9     "import": {
10      "vnfd": {
11       "prefix": "vnfd"
12      },
13      "rwvcs-types": {
14       "prefix": "rwvcstypes"
15      },
16      "rw-pb-ext": {
17       "prefix": "rwpb"
18      },
19      "ietf-yang-types": {
20       "prefix": "yang"
21      },
22      "mano-types": {
23       "prefix": "manotypes"
24      }
25     },
26     "revision": {
27      "2015-09-10": {
28       "description": "Initial revision. This YANG file augments\nthe base MANO VNFD",
29       "reference": "Derived from earlier versions of base YANG files"
30      }
31     },
32     "augment": {
33      "/vnfd:vnfd-catalog/vnfd:vnfd": {
34       "uses": {},
35       "leaf": {
36        "meta": {
37         "description": "Any meta-data needed by the UI",
38         "type": "string"
39        }
40       },
41       "list": {
42        "component": {
43         "description": "This section defines the RIFT.ware\nvirtual components",
44         "key": "component-name",
45         "leaf": {
46          "component-name": {
47           "description": "",
48           "type": "string"
49          },
50          "component-type": {
51           "description": "",
52           "type": "rwvcstypes:component_type",
53           "mandatory": true
54          }
55         },
56         "choice": {
57          "component": {
58           "case": {
59            "rwvcs-rwcollection": {
60             "container": {
61              "rwcollection": {
62               "description": "This section defines a RW.VCS\nrwollection component",
63               "leaf": {
64                "collection-type": {
65                 "description": "Collection type",
66                 "type": "string"
67                }
68               },
69               "container": {
70                "event-list": {
71                 "description": "",
72                 "list": {
73                  "event": {
74                   "description": "This section contains a list\nof RW.VCS events",
75                   "key": "name",
76                   "leaf": {
77                    "name": {
78                     "description": "Name of the event",
79                     "type": "string"
80                    }
81                   },
82                   "list": {
83                    "action": {
84                     "description": "This section contains a sequence\nof RW.VCS actions",
85                     "key": "name",
86                     "leaf": {
87                      "name": {
88                       "description": "Name of the action within the sequence",
89                       "type": "string"
90                      },
91                      "python-loop-expression": {
92                       "description": "Python expression",
93                       "type": "string"
94                      },
95                      "python-loop-iterate": {
96                       "description": "Python iteration",
97                       "type": "string"
98                      }
99                     },
100                     "grouping": {
101                      "rwvcs-python-loop": {
102                       "leaf": {
103                        "python-loop-expression": {
104                         "description": "Python expression",
105                         "type": "string"
106                        },
107                        "python-loop-iterate": {
108                         "description": "Python iteration",
109                         "type": "string"
110                        }
111                       }
112                      }
113                     },
114                     "choice": {
115                      "action": {
116                       "case": {
117                        "annex": {
118                         "container": {
119                          "annex": {
120                           "leaf": {
121                            "component-name": {
122                             "description": "Name of the component type\nin the inventory",
123                             "type": {
124                              "leafref": {
125                               "path": "../../../../../../../component/component-name"
126                              }
127                             }
128                            },
129                            "instance-id": {
130                             "description": "ID of the component instance\nin the inventory",
131                             "type": "string"
132                            }
133                           }
134                          }
135                         }
136                        },
137                        "start": {
138                         "container": {
139                          "start": {
140                           "leaf": {
141                            "component-name": {
142                             "description": "Name of the component type in\nthe inventory",
143                             "type": {
144                              "leafref": {
145                               "path": "../../../../../../../component/component-name"
146                              }
147                             }
148                            },
149                            "instance-id": {
150                             "description": "ID of the component instance\nin the inventory",
151                             "type": "string"
152                            },
153                            "config-ready": {
154                             "description": "Config readiness check enable",
155                             "type": "boolean",
156                             "default": "true"
157                            },
158                            "recovery-action": {
159                             "description": "Define recovery action if this component fail",
160                             "type": "recovery-type"
161                            }
162                           },
163                           "leaf-list": {
164                            "python-variable": {
165                             "description": "List of Python variable assignments",
166                             "type": "string"
167                            }
168                           }
169                          }
170                         }
171                        },
172                        "sleep": {
173                         "container": {
174                          "sleep": {
175                           "leaf": {
176                            "wait-time-usec": {
177                             "description": "Time to wait while sleeping",
178                             "type": "uint32"
179                            }
180                           }
181                          }
182                         }
183                        }
184                       }
185                      }
186                     }
187                    }
188                   }
189                  }
190                 }
191                }
192               }
193              }
194             }
195            },
196            "rwvcs-rwvm": {
197             "container": {
198              "rwvm": {
199               "description": "This section defines a RW.VCS\nrwvm component",
200               "leaf": {
201                "pool-name": {
202                 "description": "Name of the pool from which to\nallocate the VM",
203                 "type": "string"
204                },
205                "leader": {
206                 "description": "True if this VM is designated as a leader for\nthe parent collection.",
207                 "type": "boolean"
208                }
209               },
210               "uses": {},
211               "container": {
212                "event-list": {
213                 "description": "",
214                 "list": {
215                  "event": {
216                   "description": "This section contains a list\nof RW.VCS events",
217                   "key": "name",
218                   "leaf": {
219                    "name": {
220                     "description": "Name of the event",
221                     "type": "string"
222                    }
223                   },
224                   "list": {
225                    "action": {
226                     "description": "This section contains a sequence\nof RW.VCS actions",
227                     "key": "name",
228                     "leaf": {
229                      "name": {
230                       "description": "Name of the action within the sequence",
231                       "type": "string"
232                      },
233                      "python-loop-expression": {
234                       "description": "Python expression",
235                       "type": "string"
236                      },
237                      "python-loop-iterate": {
238                       "description": "Python iteration",
239                       "type": "string"
240                      }
241                     },
242                     "grouping": {
243                      "rwvcs-python-loop": {
244                       "leaf": {
245                        "python-loop-expression": {
246                         "description": "Python expression",
247                         "type": "string"
248                        },
249                        "python-loop-iterate": {
250                         "description": "Python iteration",
251                         "type": "string"
252                        }
253                       }
254                      }
255                     },
256                     "choice": {
257                      "action": {
258                       "case": {
259                        "annex": {
260                         "container": {
261                          "annex": {
262                           "leaf": {
263                            "component-name": {
264                             "description": "Name of the component type\nin the inventory",
265                             "type": {
266                              "leafref": {
267                               "path": "../../../../../../../component/component-name"
268                              }
269                             }
270                            },
271                            "instance-id": {
272                             "description": "ID of the component instance\nin the inventory",
273                             "type": "string"
274                            }
275                           }
276                          }
277                         }
278                        },
279                        "start": {
280                         "container": {
281                          "start": {
282                           "leaf": {
283                            "component-name": {
284                             "description": "Name of the component type in\nthe inventory",
285                             "type": {
286                              "leafref": {
287                               "path": "../../../../../../../component/component-name"
288                              }
289                             }
290                            },
291                            "instance-id": {
292                             "description": "ID of the component instance\nin the inventory",
293                             "type": "string"
294                            },
295                            "config-ready": {
296                             "description": "Config readiness check enable",
297                             "type": "boolean",
298                             "default": "true"
299                            },
300                            "recovery-action": {
301                             "description": "Define recovery action if this component fail",
302                             "type": "recovery-type"
303                            }
304                           },
305                           "leaf-list": {
306                            "python-variable": {
307                             "description": "List of Python variable assignments",
308                             "type": "string"
309                            }
310                           }
311                          }
312                         }
313                        },
314                        "sleep": {
315                         "container": {
316                          "sleep": {
317                           "leaf": {
318                            "wait-time-usec": {
319                             "description": "Time to wait while sleeping",
320                             "type": "uint32"
321                            }
322                           }
323                          }
324                         }
325                        }
326                       }
327                      }
328                     }
329                    }
330                   }
331                  }
332                 }
333                },
334                "valgrind": {
335                 "leaf": {
336                  "enable": {
337                   "description": "Run the component under valgrind",
338                   "type": "boolean"
339                  }
340                 },
341                 "leaf-list": {
342                  "opts": {
343                   "description": "Command line options to pass to valgrind",
344                   "type": "string"
345                  }
346                 }
347                }
348               }
349              }
350             }
351            },
352            "rwvcs-rwproc": {
353             "container": {
354              "rwproc": {
355               "description": "This section defines a RW.VCS\nrwproc component",
356               "leaf": {
357                "run-as": {
358                 "description": "Host OS user that should run this\nprocess, requires sudo -E access\nand non-collapsed processes",
359                 "type": "string"
360                }
361               },
362               "list": {
363                "tasklet": {
364                 "description": "List of tasklets to be run within\nthis process",
365                 "key": "name",
366                 "leaf": {
367                  "name": {
368                   "description": "Local description of the tasklet",
369                   "type": "string"
370                  },
371                  "component-name": {
372                   "description": "Component name of the tasklet",
373                   "mandatory": true,
374                   "type": "string"
375                  },
376                  "instance-id": {
377                   "description": "If specified, the desired instance-id of\ntasklet component instance",
378                   "type": "uint32"
379                  },
380                  "config-ready": {
381                   "description": "Config readiness check enable",
382                   "type": "boolean",
383                   "default": "true"
384                  },
385                  "recovery-action": {
386                   "description": "Define recovery action if this component fail",
387                   "type": "recovery-type"
388                  }
389                 },
390                 "leaf-list": {
391                  "python-variable": {
392                   "description": "List of Python variable assignments",
393                   "type": "string"
394                  }
395                 }
396                }
397               },
398               "container": {
399                "valgrind": {
400                 "leaf": {
401                  "enable": {
402                   "description": "Run the component under valgrind",
403                   "type": "boolean"
404                  }
405                 },
406                 "leaf-list": {
407                  "opts": {
408                   "description": "Command line options to pass to valgrind",
409                   "type": "string"
410                  }
411                 }
412                }
413               }
414              }
415             }
416            },
417            "native-proc": {
418             "container": {
419              "native-proc": {
420               "leaf": {
421                "run-as": {
422                 "description": "Host OS user that should run this\nprocess, requires sudo -E access",
423                 "type": "string"
424                },
425                "environment": {
426                 "description": "Runtime environment for native process",
427                 "type": "string"
428                },
429                "exe-path": {
430                 "description": "Path to native process executable",
431                 "type": "string"
432                },
433                "args": {
434                 "description": "Arguments to pass to native process",
435                 "type": "string"
436                },
437                "network-namespace": {
438                 "description": "Namespace to start process in",
439                 "type": "string"
440                },
441                "stdout": {
442                 "description": "Redirect stdout to the file at the\nspecified path",
443                 "type": "string"
444                },
445                "stderr": {
446                 "description": "Redirect stderr to the file at the\nspecified path. Optionally, 'stdout'\nmay be used to redirect to the same\nfile as stdout",
447                 "type": "string"
448                },
449                "interactive": {
450                 "description": "Native process is interactive and needs\nterminal control",
451                 "type": "empty"
452                }
453               },
454               "container": {
455                "valgrind": {
456                 "leaf": {
457                  "enable": {
458                   "description": "Run the component under valgrind",
459                   "type": "boolean"
460                  }
461                 },
462                 "leaf-list": {
463                  "opts": {
464                   "description": "Command line options to pass to valgrind",
465                   "type": "string"
466                  }
467                 }
468                }
469               }
470              }
471             }
472            },
473            "rwvcs-rwtasklet": {
474             "container": {
475              "rwtasklet": {
476               "description": "This section defines a RW.VCS\nrwtasklet component",
477               "leaf": {
478                "plugin-directory": {
479                 "description": "",
480                 "type": "string"
481                },
482                "plugin-name": {
483                 "description": "",
484                 "type": "string"
485                },
486                "plugin-version": {
487                 "description": "",
488                 "type": "string"
489                }
490               }
491              }
492             }
493            }
494           }
495          }
496         }
497        },
498        "control-param": {
499         "description": "List of control parameters to manage and\nupdate the running configuration of the VNF",
500         "key": "id",
501         "leaf": {
502          "id": {
503           "type": "string"
504          },
505          "name": {
506           "type": "string"
507          },
508          "description": {
509           "type": "string"
510          },
511          "group-tag": {
512           "description": "A simple tag to group control parameters",
513           "type": "string"
514          },
515          "min-value": {
516           "description": "Minimum value for the parameter",
517           "type": "uint64"
518          },
519          "max-value": {
520           "description": "Maxium value for the parameter",
521           "type": "uint64"
522          },
523          "current-value": {
524           "description": "Current value for the parameter",
525           "type": "uint64"
526          },
527          "step-value": {
528           "description": "Step value for the parameter",
529           "type": "uint64"
530          },
531          "units": {
532           "type": "string"
533          },
534          "widget-type": {
535           "type": "manotypes:widget-type"
536          },
537          "url": {
538           "description": "This is the URL where to perform the operation",
539           "type": "inet:uri"
540          },
541          "method": {
542           "description": "This is the method to be performed at the uri.\nPOST by default for action",
543           "type": "manotypes:http-method",
544           "default": "POST"
545          },
546          "payload": {
547           "description": "This is the operation payload or payload template as stringified\nJSON. This field provides the data  to be sent for this operation\ncall",
548           "type": "string"
549          }
550         }
551        },
552        "action-param": {
553         "description": "List of action parameters to\ncontrol VNF",
554         "key": "id",
555         "leaf": {
556          "id": {
557           "type": "string"
558          },
559          "name": {
560           "type": "string"
561          },
562          "description": {
563           "type": "string"
564          },
565          "group-tag": {
566           "description": "A simple tag to group monitoring parameter",
567           "type": "string"
568          },
569          "url": {
570           "description": "This is the URL where to perform the operation",
571           "type": "inet:uri"
572          },
573          "method": {
574           "description": "This is the method to be performed at the uri.\nPOST by default for action",
575           "type": "manotypes:http-method",
576           "default": "POST"
577          },
578          "payload": {
579           "description": "This is the operation payload or payload template to be sent in\nthe data for this operation call",
580           "type": "string"
581          }
582         }
583        }
584       }
585      },
586      "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vdu": {
587       "leaf": {
588        "vcs-component-ref": {
589         "description": "This defines the software components using the\nRIFT.ware Virtual Component System (VCS). This\nalso allows specifying a state machine during\nthe VM startup.\nNOTE: This is an significant addition to MANO,\nsince MANO doesn't clearly specify a method to\nidentify various software components in a VM.\nAlso using a state machine is not something that\nis well described in MANO.",
590         "type": {
591          "leafref": {
592           "path": "/vnfd:vnfd-catalog/vnfd:vnfd/rw-vnfd:component/rw-vnfd:component-name"
593          }
594         }
595        }
596       }
597      }
598     }
599    }
600   }
601  },
602  "dependencies": {
603   "vnfd": {
604    "module": {
605     "vnfd": {
606      "namespace": "urn:ietf:params:xml:ns:yang:nfvo:vnfd",
607      "prefix": "vnfd",
608      "import": {
609       "mano-types": {
610        "prefix": "manotypes"
611       },
612       "rw-pb-ext": {
613        "prefix": "rwpb"
614       },
615       "ietf-yang-types": {
616        "prefix": "yang"
617       },
618       "ietf-inet-types": {
619        "prefix": "inet"
620       }
621      },
622      "revision": {
623       "2015-09-10": {
624        "description": "Initial revision. This YANG file defines\nthe Virtual Network Function (VNF)",
625        "reference": "Derived from earlier versions of base YANG files"
626       }
627      },
628      "grouping": {
629       "common-connection-point": {
630        "leaf": {
631         "name": {
632          "description": "Name of the connection point",
633          "type": "string"
634         },
635         "id": {
636          "description": "Identifier for the internal connection points",
637          "type": "string"
638         },
639         "short-name": {
640          "description": "Short name of the connection point",
641          "type": "string"
642         },
643         "type": {
644          "description": "Type of the connection point.",
645          "type": "manotypes:connection-point-type"
646         }
647        }
648       },
649       "virtual-interface": {
650        "container": {
651         "virtual-interface": {
652          "description": "Container for the virtual interface properties",
653          "leaf": {
654           "type": {
655            "description": "Specifies the type of virtual interface\nbetween VM and host.\nVIRTIO          : Use the traditional VIRTIO interface.\nPCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.\nSR-IOV          : Use SR-IOV interface.\nOM-MGMT         : Used to specify openmano mgmt external-connection type",
656            "type": {
657             "enumeration": {
658              "enum": {
659               "OM-MGMT": null,
660               "PCI-PASSTHROUGH": null,
661               "SR-IOV": null,
662               "VIRTIO": null
663              }
664             }
665            },
666            "default": "VIRTIO"
667           },
668           "vpci": {
669            "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.",
670            "type": "string"
671           },
672           "bandwidth": {
673            "description": "Aggregate bandwidth of the NIC.",
674            "type": "uint64"
675           }
676          }
677         }
678        }
679       }
680      },
681      "container": {
682       "vnfd-catalog": {
683        "description": "Virtual Network Function Descriptor (VNFD).",
684        "list": {
685         "vnfd": {
686          "key": "id",
687          "leaf": {
688           "id": {
689            "description": "Identifier for the VNFD.",
690            "type": "string"
691           },
692           "name": {
693            "description": "VNFD name.",
694            "mandatory": "true",
695            "type": "string"
696           },
697           "short-name": {
698            "description": "VNFD short name.",
699            "type": "string"
700           },
701           "vendor": {
702            "description": "Vendor of the VNFD.",
703            "type": "string"
704           },
705           "logo": {
706            "description": "Vendor logo for the Virtual Network Function",
707            "type": "string"
708           },
709           "description": {
710            "description": "Description of the VNFD.",
711            "type": "string"
712           },
713           "version": {
714            "description": "Version of the VNFD",
715            "type": "string"
716           },
717           "service-function-chain": {
718            "description": "Type of node in Service Function Chaining Architecture",
719            "type": {
720             "enumeration": {
721              "enum": {
722               "UNAWARE": null,
723               "CLASSIFIER": null,
724               "SF": null,
725               "SFF": null
726              }
727             }
728            },
729            "default": "UNAWARE"
730           },
731           "service-function-type": {
732            "description": "Type of Service Function.\nNOTE: This needs to map with Service Function Type in ODL to\nsupport VNFFG. Service Function Type is manadatory param in ODL\nSFC. This is temporarily set to string for ease of use",
733            "type": "string"
734           }
735          },
736          "container": {
737           "mgmt-interface": {
738            "description": "Interface over which the VNF is managed.",
739            "uses": "manotypes:vnf-configuration",
740            "choice": {
741             "endpoint-type": {
742              "description": "Indicates the type of management endpoint.",
743              "case": {
744               "ip": {
745                "description": "Specifies the static IP address for managing the VNF.",
746                "leaf": {
747                 "ip-address": {
748                  "type": "inet:ip-address"
749                 }
750                }
751               },
752               "vdu-id": {
753                "description": "Use the default management interface on this VDU.",
754                "leaf": {
755                 "vdu-id": {
756                  "type": {
757                   "leafref": {
758                    "path": "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vdu/vnfd:id"
759                   }
760                  }
761                 }
762                }
763               },
764               "cp": {
765                "description": "Use the ip address associated with this connection point.",
766                "leaf": {
767                 "cp": {
768                  "type": {
769                   "leafref": {
770                    "path": "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:connection-point/vnfd:name"
771                   }
772                  }
773                 }
774                }
775               }
776              }
777             }
778            },
779            "leaf": {
780             "port": {
781              "description": "Port for the management interface.",
782              "type": "inet:port-number"
783             }
784            },
785            "container": {
786             "dashboard-params": {
787              "description": "Parameters for the VNF dashboard",
788              "leaf": {
789               "path": {
790                "description": "The HTTP path for the dashboard",
791                "type": "string"
792               },
793               "https": {
794                "description": "Pick HTTPS instead of HTTP , Default is false",
795                "type": "boolean"
796               },
797               "port": {
798                "description": "The HTTP port for the dashboard",
799                "type": "inet:port-number"
800               }
801              }
802             }
803            }
804           }
805          },
806          "list": {
807           "internal-vld": {
808            "key": "id",
809            "description": "List of Internal Virtual Link Descriptors (VLD).\nThe internal VLD describes the basic topology of\nthe connectivity (e.g. E-LAN, E-Line, E-Tree)\nbetween internal VNF components of the system.",
810            "leaf": {
811             "id": {
812              "description": "Identifier for the VLD",
813              "type": "string"
814             },
815             "name": {
816              "description": "Name of the internal VLD",
817              "type": "string"
818             },
819             "short-name": {
820              "description": "Short name of the internal VLD",
821              "type": "string"
822             },
823             "description": {
824              "type": "string"
825             },
826             "type": {
827              "type": "manotypes:virtual-link-type"
828             },
829             "root-bandwidth": {
830              "description": "For ELAN this is the aggregate bandwidth.",
831              "type": "uint64"
832             },
833             "leaf-bandwidth": {
834              "description": "For ELAN this is the bandwidth of branches.",
835              "type": "uint64"
836             }
837            },
838            "leaf-list": {
839             "internal-connection-point-ref": {
840              "type": {
841               "leafref": {
842                "path": "../../vdu/internal-connection-point/id"
843               }
844              }
845             }
846            },
847            "uses": "manotypes:provider-network"
848           },
849           "connection-point": {
850            "key": "name",
851            "description": "List for external connection points. Each VNF has one\nor more external connection points. As the name\nimplies that external connection points are used for\nconnecting the VNF to other VNFs or to external networks.\nEach VNF exposes these connection points to the\norchestrator. The orchestrator can construct network\nservices by connecting the connection points between\ndifferent VNFs. The NFVO will use VLDs and VNFFGs at\nthe network service level to construct network services.",
852            "uses": "common-connection-point"
853           },
854           "vdu": {
855            "description": "List of Virtual Deployment Units",
856            "key": "id",
857            "leaf": {
858             "id": {
859              "description": "Unique id for the VDU",
860              "type": "string"
861             },
862             "name": {
863              "description": "Unique name for the VDU",
864              "type": "string"
865             },
866             "description": {
867              "description": "Description of the VDU.",
868              "type": "string"
869             },
870             "count": {
871              "description": "Number of instances of VDU",
872              "type": "uint64"
873             },
874             "mgmt-vpci": {
875              "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.",
876              "type": "string"
877             },
878             "image": {
879              "description": "Image name for the software image.\nIf the image name is found within the VNF packaage it will\nbe uploaded to all cloud accounts during onboarding process.\nOtherwise, the image must be added to the cloud account with\nthe same name as entered here.\n",
880              "mandatory": "true",
881              "type": "string"
882             },
883             "image-checksum": {
884              "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",
885              "type": "string"
886             },
887             "cloud-init": {
888              "description": "Content of cloud-init script",
889              "type": "string"
890             }
891            },
892            "uses": {
893             "manotypes:vm-flavor": null,
894             "manotypes:guest-epa": null,
895             "manotypes:vswitch-epa": null,
896             "manotypes:hypervisor-epa": null,
897             "manotypes:host-epa": null
898            },
899            "list": {
900             "alarm": {
901              "key": "alarm-id",
902              "uses": "manotypes:alarm"
903             },
904             "internal-connection-point": {
905              "key": "id",
906              "description": "List for internal connection points. Each VNFC\nhas zero or more internal connection points.\nInternal connection points are used for connecting\nthe VNF components internal to the VNF. If a VNF\nhas only one VNFC, it may not have any internal\nconnection points.",
907              "uses": "common-connection-point",
908              "leaf": {
909               "internal-vld-ref": {
910                "type": {
911                 "leafref": {
912                  "path": "../../../internal-vld/id"
913                 }
914                }
915               }
916              }
917             },
918             "internal-interface": {
919              "description": "List of internal interfaces for the VNF",
920              "key": "name",
921              "leaf": {
922               "name": {
923                "description": "Name of internal interface. Note that this\nname has only local significance to the VDU.",
924                "type": "string"
925               },
926               "vdu-internal-connection-point-ref": {
927                "type": {
928                 "leafref": {
929                  "path": "../../internal-connection-point/id"
930                 }
931                }
932               }
933              },
934              "uses": "virtual-interface"
935             },
936             "external-interface": {
937              "description": "List of external interfaces for the VNF.\nThe external interfaces enable sending\ntraffic to and from VNF.",
938              "key": "name",
939              "leaf": {
940               "name": {
941                "description": "Name of the external interface. Note that\nthis name has only local significance.",
942                "type": "string"
943               },
944               "vnfd-connection-point-ref": {
945                "description": "Name of the external connection point.",
946                "type": {
947                 "leafref": {
948                  "path": "../../../connection-point/name"
949                 }
950                }
951               }
952              },
953              "uses": "virtual-interface"
954             }
955            }
956           },
957           "vdu-dependency": {
958            "description": "List of VDU dependencies.",
959            "key": "vdu-source-ref",
960            "leaf": {
961             "vdu-source-ref": {
962              "type": {
963               "leafref": {
964                "path": "../../vdu/id"
965               }
966              }
967             },
968             "vdu-depends-on-ref": {
969              "description": "Reference to the VDU that\nsource VDU depends.",
970              "type": {
971               "leafref": {
972                "path": "../../vdu/id"
973               }
974              }
975             }
976            }
977           },
978           "placement-groups": {
979            "description": "List of placement groups at VNF level",
980            "key": "name",
981            "uses": "manotypes:placement-group-info",
982            "list": {
983             "member-vdus": {
984              "description": "List of VDUs that are part of this placement group",
985              "key": "member-vdu-ref",
986              "leaf": {
987               "member-vdu-ref": {
988                "type": {
989                 "leafref": {
990                  "path": "../../../vdu/id"
991                 }
992                }
993               }
994              }
995             }
996            }
997           }
998          },
999          "uses": "manotypes:monitoring-param"
1000         }
1001        }
1002       }
1003      }
1004     }
1005    }
1006   },
1007   "mano-types": {
1008    "module": {
1009     "mano-types": {
1010      "namespace": "urn:ietf:params:xml:ns:yang:nfvo:mano-types",
1011      "prefix": "manotypes",
1012      "import": {
1013       "ietf-inet-types": {
1014        "prefix": "inet"
1015       },
1016       "rw-pb-ext": {
1017        "prefix": "rwpb"
1018       }
1019      },
1020      "revision": {
1021       "2015-04-23": {
1022        "description": "Initial revision. This YANG file defines\nthe reusable base types for VNF Management\nand Orchestration (MANO).",
1023        "reference": "Derived from earlier versions of base YANG files"
1024       }
1025      },
1026      "typedef": {
1027       "parameter-data-type": {
1028        "type": {
1029         "enumeration": {
1030          "enum": {
1031           "STRING": {
1032            "value": 0
1033           },
1034           "INTEGER": {
1035            "value": 1
1036           },
1037           "BOOLEAN": {
1038            "value": 2
1039           }
1040          }
1041         }
1042        }
1043       },
1044       "virtual-link-type": {
1045        "description": "Type of virtual link\nELAN: A multipoint service connecting a set of VNFs\n// ELINE: For a simple point to point connection\n//        between a VNF and the existing network.\n// ETREE: A multipoint service connecting one or\n//        more roots and a set of leaves, but\n//        preventing inter-leaf communication.",
1046        "type": {
1047         "enumeration": {
1048          "enum": "ELAN"
1049         }
1050        }
1051       },
1052       "http-method": {
1053        "description": "Type of HTTP operation",
1054        "type": {
1055         "enumeration": {
1056          "enum": {
1057           "POST": {
1058            "value": 0
1059           },
1060           "PUT": {
1061            "value": 1
1062           },
1063           "GET": {
1064            "value": 2
1065           },
1066           "DELETE": {
1067            "value": 3
1068           },
1069           "OPTIONS": {
1070            "value": 4
1071           },
1072           "PATCH": {
1073            "value": 5
1074           }
1075          }
1076         }
1077        }
1078       },
1079       "api-type": {
1080        "description": "Type of API to fetch monitoring params",
1081        "type": {
1082         "enumeration": {
1083          "enum": {
1084           "HTTP": {
1085            "value": 0
1086           },
1087           "NETCONF": {
1088            "value": 1
1089           },
1090           "SOAP": {
1091            "value": 2
1092           }
1093          }
1094         }
1095        }
1096       },
1097       "json-query-method": {
1098        "description": "The method to extract a value from a JSON response\n\nNAMEKEY - Use the name as the key for a non-nested value.\nJSONPATH - Use jsonpath-rw implemenation to extract a value.\nOBJECTPATH - Use objectpath implemenation to extract a value.",
1099        "type": {
1100         "enumeration": {
1101          "enum": {
1102           "NAMEKEY": {
1103            "value": 0
1104           },
1105           "JSONPATH": {
1106            "value": 1
1107           },
1108           "OBJECTPATH": {
1109            "value": 2
1110           }
1111          }
1112         }
1113        }
1114       },
1115       "param-value-type": {
1116        "description": "The type of the parameter value",
1117        "type": {
1118         "enumeration": {
1119          "enum": {
1120           "INT": {
1121            "value": 0
1122           },
1123           "DECIMAL": {
1124            "value": 1
1125           },
1126           "STRING": {
1127            "value": 2
1128           }
1129          }
1130         }
1131        }
1132       },
1133       "connection-point-type": {
1134        "description": "Type of connection point\nVPORT: Virtual Port\n// VNIC_ADDR: Virtual NIC Address\n// PNIC_ADDR: Physical NIC Address\n// PPORT: Phsical Port.",
1135        "type": {
1136         "enumeration": {
1137          "enum": "VPORT"
1138         }
1139        }
1140       },
1141       "widget-type": {
1142        "description": "Type of the widget, typically used by the UI.",
1143        "type": {
1144         "enumeration": {
1145          "enum": {
1146           "HISTOGRAM": {
1147            "value": 0
1148           },
1149           "BAR": {
1150            "value": 1
1151           },
1152           "GAUGE": {
1153            "value": 2
1154           },
1155           "SLIDER": {
1156            "value": 3
1157           },
1158           "COUNTER": {
1159            "value": 4
1160           },
1161           "TEXTBOX": {
1162            "value": 5
1163           }
1164          }
1165         }
1166        }
1167       },
1168       "cpu-feature-type": {
1169        "description": "Enumeration for CPU features.\n\nAES: CPU supports advanced instruction set for\nAES (Advanced Encryption Standard).\n\nCAT: Cache Allocation Technology (CAT) allows\nan Operating System, Hypervisor, or similar\nsystem management agent to specify the amount\nof L3 cache (currently the last-level cache\nin most server and client platforms) space an\napplication can fill (as a hint to hardware\nfunctionality, certain features such as power\nmanagement may override CAT settings).\n\nCMT: Cache Monitoring Technology (CMT) allows\nan Operating System, Hypervisor, or similar\nsystem management agent to determine the\nusage of cache based on applications running\non the platform. The implementation is\ndirected at L3 cache monitoring (currently\nthe last-level cache in most server and\nclient platforms).\n\nDDIO: Intel Data Direct I/O (DDIO) enables\nEthernet server NICs and controllers talk\ndirectly to the processor cache without a\ndetour via system memory. This enumeration\nspecifies if the VM requires a DDIO\ncapable host.",
1170        "type": {
1171         "enumeration": {
1172          "enum": {
1173           "PREFER_AES": {
1174            "value": 0
1175           },
1176           "REQUIRE_AES": {
1177            "value": 1
1178           },
1179           "PREFER_CAT": {
1180            "value": 2
1181           },
1182           "REQUIRE_CAT": {
1183            "value": 3
1184           },
1185           "PREFER_CMT": {
1186            "value": 4
1187           },
1188           "REQUIRE_CMT": {
1189            "value": 5
1190           },
1191           "PREFER_DDIO": {
1192            "value": 6
1193           },
1194           "REQUIRE_DDIO": {
1195            "value": 7
1196           },
1197           "REQUIRE_VME": {
1198            "value": 8
1199           },
1200           "PREFER_VME": {
1201            "value": 9
1202           },
1203           "REQUIRE_DE": {
1204            "value": 10
1205           },
1206           "PREFER_DE": {
1207            "value": 11
1208           },
1209           "REQUIRE_PSE": {
1210            "value": 12
1211           },
1212           "PREFER_PSE": {
1213            "value": 13
1214           },
1215           "REQUIRE_TSC": {
1216            "value": 14
1217           },
1218           "PREFER_TSC": {
1219            "value": 15
1220           },
1221           "REQUIRE_MSR": {
1222            "value": 16
1223           },
1224           "PREFER_MSR": {
1225            "value": 17
1226           },
1227           "REQUIRE_PAE": {
1228            "value": 18
1229           },
1230           "PREFER_PAE": {
1231            "value": 19
1232           },
1233           "REQUIRE_MCE": {
1234            "value": 20
1235           },
1236           "PREFER_MCE": {
1237            "value": 21
1238           },
1239           "REQUIRE_CX8": {
1240            "value": 22
1241           },
1242           "PREFER_CX8": {
1243            "value": 23
1244           },
1245           "REQUIRE_APIC": {
1246            "value": 24
1247           },
1248           "PREFER_APIC": {
1249            "value": 25
1250           },
1251           "REQUIRE_SEP": {
1252            "value": 26
1253           },
1254           "PREFER_SEP": {
1255            "value": 27
1256           },
1257           "REQUIRE_MTRR": {
1258            "value": 28
1259           },
1260           "PREFER_MTRR": {
1261            "value": 29
1262           },
1263           "REQUIRE_PGE": {
1264            "value": 30
1265           },
1266           "PREFER_PGE": {
1267            "value": 31
1268           },
1269           "REQUIRE_MCA": {
1270            "value": 32
1271           },
1272           "PREFER_MCA": {
1273            "value": 33
1274           },
1275           "REQUIRE_CMOV": {
1276            "value": 34
1277           },
1278           "PREFER_CMOV": {
1279            "value": 35
1280           },
1281           "REQUIRE_PAT": {
1282            "value": 36
1283           },
1284           "PREFER_PAT": {
1285            "value": 37
1286           },
1287           "REQUIRE_PSE36": {
1288            "value": 38
1289           },
1290           "PREFER_PSE36": {
1291            "value": 39
1292           },
1293           "REQUIRE_CLFLUSH": {
1294            "value": 40
1295           },
1296           "PREFER_CLFLUSH": {
1297            "value": 41
1298           },
1299           "REQUIRE_DTS": {
1300            "value": 42
1301           },
1302           "PREFER_DTS": {
1303            "value": 43
1304           },
1305           "REQUIRE_ACPI": {
1306            "value": 44
1307           },
1308           "PREFER_ACPI": {
1309            "value": 45
1310           },
1311           "REQUIRE_MMX": {
1312            "value": 46
1313           },
1314           "PREFER_MMX": {
1315            "value": 47
1316           },
1317           "REQUIRE_FXSR": {
1318            "value": 48
1319           },
1320           "PREFER_FXSR": {
1321            "value": 49
1322           },
1323           "REQUIRE_SSE": {
1324            "value": 50
1325           },
1326           "PREFER_SSE": {
1327            "value": 51
1328           },
1329           "REQUIRE_SSE2": {
1330            "value": 52
1331           },
1332           "PREFER_SSE2": {
1333            "value": 53
1334           },
1335           "REQUIRE_SS": {
1336            "value": 54
1337           },
1338           "PREFER_SS": {
1339            "value": 55
1340           },
1341           "REQUIRE_HT": {
1342            "value": 56
1343           },
1344           "PREFER_HT": {
1345            "value": 57
1346           },
1347           "REQUIRE_TM": {
1348            "value": 58
1349           },
1350           "PREFER_TM": {
1351            "value": 59
1352           },
1353           "REQUIRE_IA64": {
1354            "value": 60
1355           },
1356           "PREFER_IA64": {
1357            "value": 61
1358           },
1359           "REQUIRE_PBE": {
1360            "value": 62
1361           },
1362           "PREFER_PBE": {
1363            "value": 63
1364           },
1365           "REQUIRE_RDTSCP": {
1366            "value": 64
1367           },
1368           "PREFER_RDTSCP": {
1369            "value": 65
1370           },
1371           "REQUIRE_PNI": {
1372            "value": 66
1373           },
1374           "PREFER_PNI": {
1375            "value": 67
1376           },
1377           "REQUIRE_PCLMULQDQ": {
1378            "value": 68
1379           },
1380           "PREFER_PCLMULQDQ": {
1381            "value": 69
1382           },
1383           "REQUIRE_DTES64": {
1384            "value": 70
1385           },
1386           "PREFER_DTES64": {
1387            "value": 71
1388           },
1389           "REQUIRE_MONITOR": {
1390            "value": 72
1391           },
1392           "PREFER_MONITOR": {
1393            "value": 73
1394           },
1395           "REQUIRE_DS_CPL": {
1396            "value": 74
1397           },
1398           "PREFER_DS_CPL": {
1399            "value": 75
1400           },
1401           "REQUIRE_VMX": {
1402            "value": 76
1403           },
1404           "PREFER_VMX": {
1405            "value": 77
1406           },
1407           "REQUIRE_SMX": {
1408            "value": 78
1409           },
1410           "PREFER_SMX": {
1411            "value": 79
1412           },
1413           "REQUIRE_EST": {
1414            "value": 80
1415           },
1416           "PREFER_EST": {
1417            "value": 81
1418           },
1419           "REQUIRE_TM2": {
1420            "value": 82
1421           },
1422           "PREFER_TM2": {
1423            "value": 83
1424           },
1425           "REQUIRE_SSSE3": {
1426            "value": 84
1427           },
1428           "PREFER_SSSE3": {
1429            "value": 85
1430           },
1431           "REQUIRE_CID": {
1432            "value": 86
1433           },
1434           "PREFER_CID": {
1435            "value": 87
1436           },
1437           "REQUIRE_FMA": {
1438            "value": 88
1439           },
1440           "PREFER_FMA": {
1441            "value": 89
1442           },
1443           "REQUIRE_CX16": {
1444            "value": 90
1445           },
1446           "PREFER_CX16": {
1447            "value": 91
1448           },
1449           "REQUIRE_XTPR": {
1450            "value": 92
1451           },
1452           "PREFER_XTPR": {
1453            "value": 93
1454           },
1455           "REQUIRE_PDCM": {
1456            "value": 94
1457           },
1458           "PREFER_PDCM": {
1459            "value": 95
1460           },
1461           "REQUIRE_PCID": {
1462            "value": 96
1463           },
1464           "PREFER_PCID": {
1465            "value": 97
1466           },
1467           "REQUIRE_DCA": {
1468            "value": 98
1469           },
1470           "PREFER_DCA": {
1471            "value": 99
1472           },
1473           "REQUIRE_SSE4_1": {
1474            "value": 100
1475           },
1476           "PREFER_SSE4_1": {
1477            "value": 101
1478           },
1479           "REQUIRE_SSE4_2": {
1480            "value": 102
1481           },
1482           "PREFER_SSE4_2": {
1483            "value": 103
1484           },
1485           "REQUIRE_X2APIC": {
1486            "value": 104
1487           },
1488           "PREFER_X2APIC": {
1489            "value": 105
1490           },
1491           "REQUIRE_MOVBE": {
1492            "value": 106
1493           },
1494           "PREFER_MOVBE": {
1495            "value": 107
1496           },
1497           "REQUIRE_POPCNT": {
1498            "value": 108
1499           },
1500           "PREFER_POPCNT": {
1501            "value": 109
1502           },
1503           "REQUIRE_TSC_DEADLINE_TIMER": {
1504            "value": 110
1505           },
1506           "PREFER_TSC_DEADLINE_TIMER": {
1507            "value": 111
1508           },
1509           "REQUIRE_XSAVE": {
1510            "value": 112
1511           },
1512           "PREFER_XSAVE": {
1513            "value": 113
1514           },
1515           "REQUIRE_AVX": {
1516            "value": 114
1517           },
1518           "PREFER_AVX": {
1519            "value": 115
1520           },
1521           "REQUIRE_F16C": {
1522            "value": 116
1523           },
1524           "PREFER_F16C": {
1525            "value": 117
1526           },
1527           "REQUIRE_RDRAND": {
1528            "value": 118
1529           },
1530           "PREFER_RDRAND": {
1531            "value": 119
1532           },
1533           "REQUIRE_FSGSBASE": {
1534            "value": 120
1535           },
1536           "PREFER_FSGSBASE": {
1537            "value": 121
1538           },
1539           "REQUIRE_BMI1": {
1540            "value": 122
1541           },
1542           "PREFER_BMI1": {
1543            "value": 123
1544           },
1545           "REQUIRE_HLE": {
1546            "value": 124
1547           },
1548           "PREFER_HLE": {
1549            "value": 125
1550           },
1551           "REQUIRE_AVX2": {
1552            "value": 126
1553           },
1554           "PREFER_AVX2": {
1555            "value": 127
1556           },
1557           "REQUIRE_SMEP": {
1558            "value": 128
1559           },
1560           "PREFER_SMEP": {
1561            "value": 129
1562           },
1563           "REQUIRE_BMI2": {
1564            "value": 130
1565           },
1566           "PREFER_BMI2": {
1567            "value": 131
1568           },
1569           "REQUIRE_ERMS": {
1570            "value": 132
1571           },
1572           "PREFER_ERMS": {
1573            "value": 133
1574           },
1575           "REQUIRE_INVPCID": {
1576            "value": 134
1577           },
1578           "PREFER_INVPCID": {
1579            "value": 135
1580           },
1581           "REQUIRE_RTM": {
1582            "value": 136
1583           },
1584           "PREFER_RTM": {
1585            "value": 137
1586           },
1587           "REQUIRE_MPX": {
1588            "value": 138
1589           },
1590           "PREFER_MPX": {
1591            "value": 139
1592           },
1593           "REQUIRE_RDSEED": {
1594            "value": 140
1595           },
1596           "PREFER_RDSEED": {
1597            "value": 141
1598           },
1599           "REQUIRE_ADX": {
1600            "value": 142
1601           },
1602           "PREFER_ADX": {
1603            "value": 143
1604           },
1605           "REQUIRE_SMAP": {
1606            "value": 144
1607           },
1608           "PREFER_SMAP": {
1609            "value": 145
1610           }
1611          }
1612         }
1613        }
1614       },
1615       "alarm-severity-type": {
1616        "description": "An indication of the importance or ugency of the alarm",
1617        "type": {
1618         "enumeration": {
1619          "enum": {
1620           "LOW": {
1621            "value": 0
1622           },
1623           "MODERATE": {
1624            "value": 1
1625           },
1626           "CRITICAL": {
1627            "value": 2
1628           }
1629          }
1630         }
1631        }
1632       },
1633       "alarm-metric-type": {
1634        "description": "The type of metrics to register the alarm for",
1635        "type": {
1636         "enumeration": {
1637          "enum": {
1638           "CPU_UTILIZATION": {
1639            "value": 0
1640           },
1641           "MEMORY_UTILIZATION": {
1642            "value": 1
1643           },
1644           "STORAGE_UTILIZATION": {
1645            "value": 2
1646           }
1647          }
1648         }
1649        }
1650       },
1651       "alarm-statistic-type": {
1652        "description": "The type of statistic to used to measure a metric to determine\nthreshold crossing for an alarm.",
1653        "type": {
1654         "enumeration": {
1655          "enum": {
1656           "AVERAGE": {
1657            "value": 0
1658           },
1659           "MINIMUM": {
1660            "value": 1
1661           },
1662           "MAXIMUM": {
1663            "value": 2
1664           },
1665           "COUNT": {
1666            "value": 3
1667           },
1668           "SUM": {
1669            "value": 4
1670           }
1671          }
1672         }
1673        }
1674       },
1675       "alarm-operation-type": {
1676        "description": "The relational operator used to define whether an alarm should be\ntriggered when, say, the metric statistic goes above or below a\nspecified value.",
1677        "type": {
1678         "enumeration": {
1679          "enum": {
1680           "GE": {
1681            "value": 0
1682           },
1683           "LE": {
1684            "value": 1
1685           },
1686           "GT": {
1687            "value": 2
1688           },
1689           "LT": {
1690            "value": 3
1691           },
1692           "EQ": {
1693            "value": 4
1694           }
1695          }
1696         }
1697        }
1698       },
1699       "cloud-account-type": {
1700        "description": "cloud account type",
1701        "type": {
1702         "enumeration": {
1703          "enum": {
1704           "aws": {
1705            "value": 0
1706           },
1707           "cloudsim": {
1708            "value": 1
1709           },
1710           "cloudsim_proxy": {
1711            "value": 2
1712           },
1713           "mock": {
1714            "value": 3
1715           },
1716           "openmano": {
1717            "value": 4
1718           },
1719           "openstack": {
1720            "value": 5
1721           },
1722           "vsphere": {
1723            "value": 6
1724           }
1725          }
1726         }
1727        }
1728       }
1729      },
1730      "grouping": {
1731       "primitive-parameter": {
1732        "leaf": {
1733         "name": {
1734          "description": "Name of the parameter.",
1735          "type": "string"
1736         },
1737         "data-type": {
1738          "description": "Data type associated with the name.",
1739          "type": "manotypes:parameter-data-type"
1740         },
1741         "mandatory": {
1742          "description": "Is this field mandatory",
1743          "type": "boolean",
1744          "default": "false"
1745         },
1746         "default-value": {
1747          "description": "The default value for this field",
1748          "type": "string"
1749         },
1750         "parameter-pool": {
1751          "description": "NSD Parameter pool name to use for this paramter",
1752          "type": "string"
1753         },
1754         "read-only": {
1755          "description": "The value should be greyed out by the UI.\nOnly applies to parameters with default values.",
1756          "type": "boolean"
1757         },
1758         "hidden": {
1759          "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
1760          "type": "boolean"
1761         }
1762        }
1763       },
1764       "vnf-configuration": {
1765        "container": {
1766         "vnf-configuration": {
1767          "description": "Information regarding the VNF configuration\nis captured here. ",
1768          "choice": {
1769           "config-method": {
1770            "description": "Defines the configuration method for the VNF.",
1771            "case": {
1772             "netconf": {
1773              "description": "Use NETCONF for configuring the VNF.",
1774              "container": {
1775               "netconf": {
1776                "leaf": {
1777                 "target": {
1778                  "description": "Netconf configuration target",
1779                  "type": {
1780                   "enumeration": {
1781                    "enum": {
1782                     "running": {
1783                      "value": 0
1784                     },
1785                     "candidate": {
1786                      "value": 1
1787                     }
1788                    }
1789                   }
1790                  }
1791                 },
1792                 "protocol": {
1793                  "description": "Protocol to use for netconf (e.g. ssh)",
1794                  "type": {
1795                   "enumeration": {
1796                    "enum": {
1797                     "None": {
1798                      "value": 0
1799                     },
1800                     "ssh": {
1801                      "value": 1
1802                     }
1803                    }
1804                   }
1805                  }
1806                 },
1807                 "port": {
1808                  "description": "Port for the netconf server.",
1809                  "type": "inet:port-number"
1810                 }
1811                }
1812               }
1813              }
1814             },
1815             "rest": {
1816              "description": "Use REST for configuring the VNF.",
1817              "container": {
1818               "rest": {
1819                "leaf": {
1820                 "port": {
1821                  "description": "Port for the REST server.",
1822                  "type": "inet:port-number"
1823                 }
1824                }
1825               }
1826              }
1827             },
1828             "script": {
1829              "description": "Use custom script for configuring the VNF.\nThis script is executed in the context of\nOrchestrator.",
1830              "container": {
1831               "script": {
1832                "leaf": {
1833                 "script-type": {
1834                  "description": "Script type - currently supported : bash, expect",
1835                  "type": {
1836                   "enumeration": {
1837                    "enum": {
1838                     "bash": {
1839                      "value": 0
1840                     },
1841                     "expect": {
1842                      "value": 1
1843                     }
1844                    }
1845                   }
1846                  }
1847                 }
1848                }
1849               }
1850              }
1851             },
1852             "juju": {
1853              "description": "Configure the VNF through Juju.",
1854              "container": {
1855               "juju": {
1856                "leaf": {
1857                 "charm": {
1858                  "description": "Juju charm to use with the VNF.",
1859                  "type": "string"
1860                 }
1861                }
1862               }
1863              }
1864             }
1865            }
1866           }
1867          },
1868          "container": {
1869           "config-access": {
1870            "leaf": {
1871             "mgmt-ip-address": {
1872              "description": "IP address to be used to configure this VNF,\noptional if it is possible to resolve dynamically.",
1873              "type": "inet:ip-address"
1874             },
1875             "username": {
1876              "description": "username for configuration.",
1877              "type": "string"
1878             },
1879             "password": {
1880              "description": "Password for configuration access authentication.",
1881              "type": "string"
1882             }
1883            }
1884           },
1885           "config-attributes": {
1886            "description": "Miscelaneous input parameters to be considered\nwhile processing the NSD to apply configuration",
1887            "leaf": {
1888             "config-priority": {
1889              "description": "Configuration priority - order of confgiration\nto be applied to each VNF in this NS,\nlow number gets precedence over high number",
1890              "type": "uint64"
1891             },
1892             "config-delay": {
1893              "description": "Wait (seconds) before applying the configuration to VNF",
1894              "type": "uint64"
1895             }
1896            }
1897           }
1898          },
1899          "list": {
1900           "config-primitive": {
1901            "description": "List of configuration primitives supported by the\nconfiguration agent for this VNF.",
1902            "key": "name",
1903            "leaf": {
1904             "name": {
1905              "description": "Name of the configuration primitive.",
1906              "type": "string"
1907             }
1908            },
1909            "list": {
1910             "parameter": {
1911              "description": "List of parameters to the configuration primitive.",
1912              "key": "name",
1913              "leaf": {
1914               "name": {
1915                "description": "Name of the parameter.",
1916                "type": "string"
1917               },
1918               "data-type": {
1919                "description": "Data type associated with the name.",
1920                "type": "manotypes:parameter-data-type"
1921               },
1922               "mandatory": {
1923                "description": "Is this field mandatory",
1924                "type": "boolean",
1925                "default": "false"
1926               },
1927               "default-value": {
1928                "description": "The default value for this field",
1929                "type": "string"
1930               },
1931               "parameter-pool": {
1932                "description": "NSD Parameter pool name to use for this paramter",
1933                "type": "string"
1934               },
1935               "read-only": {
1936                "description": "The value should be greyed out by the UI.\nOnly applies to parameters with default values.",
1937                "type": "boolean"
1938               },
1939               "hidden": {
1940                "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
1941                "type": "boolean"
1942               }
1943              }
1944             }
1945            }
1946           },
1947           "initial-config-primitive": {
1948            "description": "Initial set of configuration primitives.",
1949            "key": "seq",
1950            "leaf": {
1951             "seq": {
1952              "description": "Sequence number for the configuration primitive.",
1953              "type": "uint64"
1954             },
1955             "name": {
1956              "description": "Name of the configuration primitive.",
1957              "type": "string"
1958             }
1959            },
1960            "list": {
1961             "parameter": {
1962              "key": "name",
1963              "leaf": {
1964               "name": {
1965                "type": "string"
1966               },
1967               "value": {
1968                "type": "string"
1969               }
1970              }
1971             }
1972            }
1973           }
1974          },
1975          "leaf": {
1976           "config-template": {
1977            "description": "Configuration template for each VNF",
1978            "type": "string"
1979           }
1980          }
1981         }
1982        }
1983       },
1984       "named-value": {
1985        "leaf": {
1986         "name": {
1987          "type": "string"
1988         },
1989         "value": {
1990          "type": "string"
1991         }
1992        }
1993       },
1994       "vm-flavor": {
1995        "container": {
1996         "vm-flavor": {
1997          "leaf": {
1998           "vcpu-count": {
1999            "description": "Number of vcpus for the VM.",
2000            "type": "uint16"
2001           },
2002           "memory-mb": {
2003            "description": "Amount of memory in MB.",
2004            "type": "uint64"
2005           },
2006           "storage-gb": {
2007            "description": "Amount of disk space in GB.",
2008            "type": "uint64"
2009           }
2010          }
2011         }
2012        }
2013       },
2014       "vswitch-epa": {
2015        "container": {
2016         "vswitch-epa": {
2017          "leaf": {
2018           "ovs-acceleration": {
2019            "description": "Specifies Open vSwitch acceleration mode.\nMANDATORY: OVS acceleration is required\nPREFERRED: OVS acceleration is preferred",
2020            "type": {
2021             "enumeration": {
2022              "enum": {
2023               "MANDATORY": {
2024                "value": 0
2025               },
2026               "PREFERRED": {
2027                "value": 1
2028               },
2029               "DISABLED": {
2030                "value": 2
2031               }
2032              }
2033             }
2034            }
2035           },
2036           "ovs-offload": {
2037            "description": "Specifies Open vSwitch hardware offload mode.\nMANDATORY: OVS offload is required\nPREFERRED: OVS offload is preferred",
2038            "type": {
2039             "enumeration": {
2040              "enum": {
2041               "MANDATORY": {
2042                "value": 0
2043               },
2044               "PREFERRED": {
2045                "value": 1
2046               },
2047               "DISABLED": {
2048                "value": 2
2049               }
2050              }
2051             }
2052            }
2053           }
2054          }
2055         }
2056        }
2057       },
2058       "hypervisor-epa": {
2059        "container": {
2060         "hypervisor-epa": {
2061          "leaf": {
2062           "type": {
2063            "description": "Specifies the type of hypervisor.\nKVM: KVM\nXEN: XEN",
2064            "type": {
2065             "enumeration": {
2066              "enum": {
2067               "PREFER_KVM": {
2068                "value": 0
2069               },
2070               "REQUIRE_KVM": {
2071                "value": 1
2072               }
2073              }
2074             }
2075            }
2076           },
2077           "version": {
2078            "type": "string"
2079           }
2080          }
2081         }
2082        }
2083       },
2084       "host-epa": {
2085        "container": {
2086         "host-epa": {
2087          "description": "Specifies the host level EPA attributes.",
2088          "leaf": {
2089           "cpu-model": {
2090            "description": "Host CPU model. Examples include: SandyBridge,\nIvyBridge",
2091            "type": {
2092             "enumeration": {
2093              "enum": {
2094               "PREFER_WESTMERE": {
2095                "value": 0
2096               },
2097               "REQUIRE_WESTMERE": {
2098                "value": 1
2099               },
2100               "PREFER_SANDYBRIDGE": {
2101                "value": 2
2102               },
2103               "REQUIRE_SANDYBRIDGE": {
2104                "value": 3
2105               },
2106               "PREFER_IVYBRIDGE": {
2107                "value": 4
2108               },
2109               "REQUIRE_IVYBRIDGE": {
2110                "value": 5
2111               },
2112               "PREFER_HASWELL": {
2113                "value": 6
2114               },
2115               "REQUIRE_HASWELL": {
2116                "value": 7
2117               },
2118               "PREFER_BROADWELL": {
2119                "value": 8
2120               },
2121               "REQUIRE_BROADWELL": {
2122                "value": 9
2123               },
2124               "PREFER_NEHALEM": {
2125                "value": 10
2126               },
2127               "REQUIRE_NEHALEM": {
2128                "value": 11
2129               },
2130               "PREFER_PENRYN": {
2131                "value": 12
2132               },
2133               "REQUIRE_PENRYN": {
2134                "value": 13
2135               },
2136               "PREFER_CONROE": {
2137                "value": 14
2138               },
2139               "REQUIRE_CONROE": {
2140                "value": 15
2141               },
2142               "PREFER_CORE2DUO": {
2143                "value": 16
2144               },
2145               "REQUIRE_CORE2DUO": {
2146                "value": 17
2147               }
2148              }
2149             }
2150            }
2151           },
2152           "cpu-arch": {
2153            "description": "Host CPU architecture.",
2154            "type": {
2155             "enumeration": {
2156              "enum": {
2157               "PREFER_X86": {
2158                "value": 0
2159               },
2160               "REQUIRE_X86": {
2161                "value": 1
2162               },
2163               "PREFER_X86_64": {
2164                "value": 2
2165               },
2166               "REQUIRE_X86_64": {
2167                "value": 3
2168               },
2169               "PREFER_I686": {
2170                "value": 4
2171               },
2172               "REQUIRE_I686": {
2173                "value": 5
2174               },
2175               "PREFER_IA64": {
2176                "value": 6
2177               },
2178               "REQUIRE_IA64": {
2179                "value": 7
2180               },
2181               "PREFER_ARMV7": {
2182                "value": 8
2183               },
2184               "REQUIRE_ARMV7": {
2185                "value": 9
2186               },
2187               "PREFER_ARMV8": {
2188                "value": 10
2189               },
2190               "REQUIRE_ARMV8": {
2191                "value": 11
2192               }
2193              }
2194             }
2195            }
2196           },
2197           "cpu-vendor": {
2198            "description": "Host CPU Vendor.",
2199            "type": {
2200             "enumeration": {
2201              "enum": {
2202               "PREFER_INTEL": {
2203                "value": 0
2204               },
2205               "REQUIRE_INTEL": {
2206                "value": 1
2207               },
2208               "PREFER_AMD": {
2209                "value": 2
2210               },
2211               "REQUIRE_AMD": {
2212                "value": 3
2213               }
2214              }
2215             }
2216            }
2217           },
2218           "cpu-socket-count": {
2219            "description": "Number of sockets on the host.",
2220            "type": "uint64"
2221           },
2222           "cpu-core-count": {
2223            "description": "Number of cores on the host.",
2224            "type": "uint64"
2225           },
2226           "cpu-core-thread-count": {
2227            "description": "Number of threads per cores on the host.",
2228            "type": "uint64"
2229           },
2230           "om-cpu-model-string": {
2231            "description": "Openmano CPU model string",
2232            "type": "string"
2233           }
2234          },
2235          "leaf-list": {
2236           "cpu-feature": {
2237            "description": "List of CPU features.",
2238            "type": "manotypes:cpu-feature-type"
2239           },
2240           "om-cpu-feature": {
2241            "description": "Openmano CPU features",
2242            "type": "string"
2243           }
2244          }
2245         }
2246        }
2247       },
2248       "guest-epa": {
2249        "description": "EPA attributes for the guest",
2250        "container": {
2251         "guest-epa": {
2252          "leaf": {
2253           "trusted-execution": {
2254            "description": "This VM should be allocated from trusted pool",
2255            "type": "boolean"
2256           },
2257           "mempage-size": {
2258            "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 chose 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 perfers hugepages",
2259            "type": {
2260             "enumeration": {
2261              "enum": {
2262               "LARGE": {
2263                "value": 0
2264               },
2265               "SMALL": {
2266                "value": 1
2267               },
2268               "SIZE_2MB": {
2269                "value": 2
2270               },
2271               "SIZE_1GB": {
2272                "value": 3
2273               },
2274               "PREFER_LARGE": {
2275                "value": 4
2276               }
2277              }
2278             }
2279            }
2280           },
2281           "cpu-pinning-policy": {
2282            "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",
2283            "type": {
2284             "enumeration": {
2285              "enum": {
2286               "DEDICATED": {
2287                "value": 0
2288               },
2289               "SHARED": {
2290                "value": 1
2291               },
2292               "ANY": {
2293                "value": 2
2294               }
2295              }
2296             }
2297            },
2298            "default": "ANY"
2299           },
2300           "cpu-thread-pinning-policy": {
2301            "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.",
2302            "type": {
2303             "enumeration": {
2304              "enum": {
2305               "AVOID": {
2306                "value": 0
2307               },
2308               "SEPARATE": {
2309                "value": 1
2310               },
2311               "ISOLATE": {
2312                "value": 2
2313               },
2314               "PREFER": {
2315                "value": 3
2316               }
2317              }
2318             }
2319            }
2320           }
2321          },
2322          "list": {
2323           "pcie-device": {
2324            "description": "List of pcie passthrough devices.",
2325            "key": "device-id",
2326            "leaf": {
2327             "device-id": {
2328              "description": "Device identifier.",
2329              "type": "string"
2330             },
2331             "count": {
2332              "description": "Number of devices to attach to the VM.",
2333              "type": "uint64"
2334             }
2335            }
2336           }
2337          },
2338          "choice": {
2339           "numa-policy": {
2340            "case": {
2341             "numa-unware": {
2342              "leaf": {
2343               "numa-unware": {
2344                "type": "empty"
2345               }
2346              }
2347             },
2348             "numa-aware": {
2349              "container": {
2350               "numa-node-policy": {
2351                "description": "This policy defines numa topology of the\nguest. Specifically identifies if the guest\nshould be run on a host with one numa\nnode or multiple numa nodes. As an example\na guest may want 8 vcpus and 4 GB of\nmemory. But may want the vcpus and memory\ndistributed across multiple numa nodes.\nThe NUMA node 1 may run with 6 vcpus and\n3GB, and NUMA node 2 may run with 2 vcpus\nand 1GB.",
2352                "leaf": {
2353                 "node-cnt": {
2354                  "description": "The number of numa nodes to expose to the VM.",
2355                  "type": "uint16"
2356                 },
2357                 "mem-policy": {
2358                  "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            perferentially from the memory\n            attached to the NUMA node",
2359                  "type": {
2360                   "enumeration": {
2361                    "enum": {
2362                     "STRICT": {
2363                      "value": 0
2364                     },
2365                     "PREFERRED": {
2366                      "value": 1
2367                     }
2368                    }
2369                   }
2370                  }
2371                 }
2372                },
2373                "list": {
2374                 "node": {
2375                  "key": "id",
2376                  "leaf": {
2377                   "id": {
2378                    "description": "NUMA node identification. Typically\nit's 0 or 1",
2379                    "type": "uint64"
2380                   },
2381                   "memory-mb": {
2382                    "description": "Memory size expressed in MB\nfor this NUMA node.",
2383                    "type": "uint64"
2384                   }
2385                  },
2386                  "leaf-list": {
2387                   "vcpu": {
2388                    "description": "List of vcpus to allocate on\nthis numa node.",
2389                    "type": "uint64"
2390                   }
2391                  },
2392                  "choice": {
2393                   "om-numa-type": {
2394                    "description": "Openmano Numa type selection",
2395                    "case": {
2396                     "cores": {
2397                      "leaf": {
2398                       "num-cores": {
2399                        "type": "uint8"
2400                       }
2401                      }
2402                     },
2403                     "paired-threads": {
2404                      "container": {
2405                       "paired-threads": {
2406                        "leaf": {
2407                         "num-paired-threads": {
2408                          "type": "uint8"
2409                         }
2410                        },
2411                        "list": {
2412                         "paired-thread-ids": {
2413                          "description": "List of thread pairs to use in case of paired-thread numa",
2414                          "max-elements": 16,
2415                          "key": "thread-a",
2416                          "leaf": {
2417                           "thread-a": {
2418                            "type": "uint8"
2419                           },
2420                           "thread-b": {
2421                            "type": "uint8"
2422                           }
2423                          }
2424                         }
2425                        }
2426                       }
2427                      }
2428                     },
2429                     "threads": {
2430                      "leaf": {
2431                       "num-threads": {
2432                        "type": "uint8"
2433                       }
2434                      }
2435                     }
2436                    }
2437                   }
2438                  }
2439                 }
2440                }
2441               }
2442              }
2443             }
2444            }
2445           }
2446          }
2447         }
2448        }
2449       },
2450       "provider-network": {
2451        "container": {
2452         "provider-network": {
2453          "description": "Container for the provider network.",
2454          "leaf": {
2455           "physical-network": {
2456            "description": "Name of the phsyical network on which the provider\nnetwork is built.",
2457            "type": "string"
2458           },
2459           "overlay-type": {
2460            "description": "Type of the overlay network.",
2461            "type": {
2462             "enumeration": {
2463              "enum": {
2464               "LOCAL": {
2465                "value": 0
2466               },
2467               "FLAT": {
2468                "value": 1
2469               },
2470               "VLAN": {
2471                "value": 2
2472               },
2473               "VXLAN": {
2474                "value": 3
2475               },
2476               "GRE": {
2477                "value": 4
2478               }
2479              }
2480             }
2481            }
2482           },
2483           "segmentation_id": {
2484            "description": "Segmentation ID",
2485            "type": "uint32"
2486           }
2487          }
2488         }
2489        }
2490       },
2491       "config-primitive": {
2492        "list": {
2493         "config-primitive": {
2494          "description": "Network service level configuration primitives.",
2495          "key": "name",
2496          "leaf": {
2497           "name": {
2498            "description": "Name of the configuration primitive.",
2499            "type": "string"
2500           },
2501           "user-defined-script": {
2502            "description": "A user defined script.",
2503            "type": "string"
2504           }
2505          },
2506          "list": {
2507           "parameter": {
2508            "description": "List of parameters to the configuration primitive.",
2509            "key": "name",
2510            "leaf": {
2511             "name": {
2512              "description": "Name of the parameter.",
2513              "type": "string"
2514             },
2515             "data-type": {
2516              "description": "Data type associated with the name.",
2517              "type": "manotypes:parameter-data-type"
2518             },
2519             "mandatory": {
2520              "description": "Is this field mandatory",
2521              "type": "boolean",
2522              "default": "false"
2523             },
2524             "default-value": {
2525              "description": "The default value for this field",
2526              "type": "string"
2527             },
2528             "parameter-pool": {
2529              "description": "NSD Parameter pool name to use for this paramter",
2530              "type": "string"
2531             },
2532             "read-only": {
2533              "description": "The value should be greyed out by the UI.\nOnly applies to parameters with default values.",
2534              "type": "boolean"
2535             },
2536             "hidden": {
2537              "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
2538              "type": "boolean"
2539             }
2540            }
2541           },
2542           "parameter-group": {
2543            "description": "Grouping of parameters which are logically grouped in UI",
2544            "key": "name",
2545            "leaf": {
2546             "name": {
2547              "description": "Name of the parameter group",
2548              "type": "string"
2549             },
2550             "mandatory": {
2551              "description": "Is this parameter group mandatory",
2552              "type": "boolean",
2553              "default": "true"
2554             }
2555            },
2556            "list": {
2557             "parameter": {
2558              "description": "List of parameters to the configuration primitive.",
2559              "key": "name",
2560              "leaf": {
2561               "name": {
2562                "description": "Name of the parameter.",
2563                "type": "string"
2564               },
2565               "data-type": {
2566                "description": "Data type associated with the name.",
2567                "type": "manotypes:parameter-data-type"
2568               },
2569               "mandatory": {
2570                "description": "Is this field mandatory",
2571                "type": "boolean",
2572                "default": "false"
2573               },
2574               "default-value": {
2575                "description": "The default value for this field",
2576                "type": "string"
2577               },
2578               "parameter-pool": {
2579                "description": "NSD Parameter pool name to use for this paramter",
2580                "type": "string"
2581               },
2582               "read-only": {
2583                "description": "The value should be greyed out by the UI.\nOnly applies to parameters with default values.",
2584                "type": "boolean"
2585               },
2586               "hidden": {
2587                "description": "The value should be hidden by the UI.\nOnly applies to parameters with default values.",
2588                "type": "boolean"
2589               }
2590              }
2591             }
2592            }
2593           },
2594           "vnf-primitive-group": {
2595            "description": "List of configuration primitives grouped by VNF.",
2596            "key": "member-vnf-index-ref",
2597            "leaf": {
2598             "member-vnf-index-ref": {
2599              "description": "Reference to member-vnf within constituent-vnfds",
2600              "type": "uint64"
2601             },
2602             "vnfd-id-ref": {
2603              "description": "A reference to a vnfd. This is a\nleafref to path:\n    ../../../../nsd:constituent-vnfd\n    + [nsd:id = current()/../nsd:id-ref]\n    + /nsd:vnfd-id-ref\nNOTE: An issue with confd is preventing the\nuse of xpath. Seems to be an issue with leafref\nto leafref, whose target is in a different module.\nOnce that is resovled this will switched to use\nleafref",
2604              "type": "string"
2605             },
2606             "vnfd-name": {
2607              "description": "Name of the VNFD",
2608              "type": "string"
2609             }
2610            },
2611            "list": {
2612             "primitive": {
2613              "key": "index",
2614              "leaf": {
2615               "index": {
2616                "description": "Index of this primitive",
2617                "type": "uint32"
2618               },
2619               "name": {
2620                "description": "Name of the primitive in the VNF primitive ",
2621                "type": "string"
2622               }
2623              }
2624             }
2625            }
2626           }
2627          }
2628         }
2629        }
2630       },
2631       "monitoring-param": {
2632        "list": {
2633         "http-endpoint": {
2634          "description": "List of http endpoints to be used by monitoring params",
2635          "key": "path",
2636          "leaf": {
2637           "path": {
2638            "description": "The HTTP path on the management server",
2639            "type": "string"
2640           },
2641           "https": {
2642            "description": "Pick HTTPS instead of HTTP , Default is false",
2643            "type": "boolean",
2644            "default": "false"
2645           },
2646           "port": {
2647            "description": "The HTTP port to connect to",
2648            "type": "inet:port-number"
2649           },
2650           "username": {
2651            "description": "The HTTP basic auth username",
2652            "type": "string"
2653           },
2654           "password": {
2655            "description": "The HTTP basic auth password",
2656            "type": "string"
2657           },
2658           "polling_interval_secs": {
2659            "description": "The HTTP polling interval in seconds",
2660            "type": "uint8",
2661            "default": "2"
2662           },
2663           "method": {
2664            "description": "This is the method to be performed at the uri.\nGET by default for action",
2665            "type": "manotypes:http-method",
2666            "default": "GET"
2667           }
2668          },
2669          "list": {
2670           "headers": {
2671            "description": "Custom HTTP headers to put on HTTP request",
2672            "key": "key",
2673            "leaf": {
2674             "key": {
2675              "description": "HTTP header key",
2676              "type": "string"
2677             },
2678             "value": {
2679              "description": "HTTP header value",
2680              "type": "string"
2681             }
2682            }
2683           }
2684          }
2685         },
2686         "monitoring-param": {
2687          "description": "List of monitoring parameters at the NS level",
2688          "key": "id",
2689          "leaf": {
2690           "id": {
2691            "type": "string"
2692           },
2693           "name": {
2694            "type": "string"
2695           },
2696           "http-endpoint-ref": {
2697            "type": {
2698             "leafref": {
2699              "path": "../../http-endpoint/path"
2700             }
2701            }
2702           },
2703           "json-query-method": {
2704            "type": "manotypes:json-query-method",
2705            "default": "NAMEKEY"
2706           },
2707           "description": {
2708            "type": "string"
2709           },
2710           "group-tag": {
2711            "description": "A simple tag to group monitoring parameters",
2712            "type": "string"
2713           },
2714           "value-type": {
2715            "type": "manotypes:param-value-type",
2716            "default": "INT"
2717           },
2718           "value-integer": {
2719            "description": "Current value for an integer parameter",
2720            "type": "int64"
2721           },
2722           "value-decimal": {
2723            "description": "Current value for a decimal parameter",
2724            "type": {
2725             "decimal64": {
2726              "fraction-digits": "4"
2727             }
2728            }
2729           },
2730           "value-string": {
2731            "description": "Current value for a string parameter",
2732            "type": "string"
2733           },
2734           "widget-type": {
2735            "type": "manotypes:widget-type"
2736           },
2737           "units": {
2738            "type": "string"
2739           }
2740          },
2741          "container": {
2742           "json-query-params": {
2743            "leaf": {
2744             "json-path": {
2745              "description": "The jsonpath to use to extract value from JSON structure",
2746              "type": "string"
2747             },
2748             "object-path": {
2749              "description": "The objectpath to use to extract value from JSON structure",
2750              "type": "string"
2751             }
2752            }
2753           },
2754           "numeric-constraints": {
2755            "leaf": {
2756             "min-value": {
2757              "description": "Minimum value for the parameter",
2758              "type": "uint64"
2759             },
2760             "max-value": {
2761              "description": "Maxium value for the parameter",
2762              "type": "uint64"
2763             }
2764            }
2765           },
2766           "text-constraints": {
2767            "leaf": {
2768             "min-length": {
2769              "description": "Minimum string length for the parameter",
2770              "type": "uint8"
2771             },
2772             "max-length": {
2773              "description": "Maximum string length for the parameter",
2774              "type": "uint8"
2775             }
2776            }
2777           }
2778          }
2779         }
2780        }
2781       },
2782       "control-param": {
2783        "list": {
2784         "control-param": {
2785          "description": "List of control parameters to manage and\nupdate the running configuration of the VNF",
2786          "key": "id",
2787          "leaf": {
2788           "id": {
2789            "type": "string"
2790           },
2791           "name": {
2792            "type": "string"
2793           },
2794           "description": {
2795            "type": "string"
2796           },
2797           "group-tag": {
2798            "description": "A simple tag to group control parameters",
2799            "type": "string"
2800           },
2801           "min-value": {
2802            "description": "Minimum value for the parameter",
2803            "type": "uint64"
2804           },
2805           "max-value": {
2806            "description": "Maxium value for the parameter",
2807            "type": "uint64"
2808           },
2809           "current-value": {
2810            "description": "Current value for the parameter",
2811            "type": "uint64"
2812           },
2813           "step-value": {
2814            "description": "Step value for the parameter",
2815            "type": "uint64"
2816           },
2817           "units": {
2818            "type": "string"
2819           },
2820           "widget-type": {
2821            "type": "manotypes:widget-type"
2822           },
2823           "url": {
2824            "description": "This is the URL where to perform the operation",
2825            "type": "inet:uri"
2826           },
2827           "method": {
2828            "description": "This is the method to be performed at the uri.\nPOST by default for action",
2829            "type": "manotypes:http-method",
2830            "default": "POST"
2831           },
2832           "payload": {
2833            "description": "This is the operation payload or payload template as stringified\nJSON. This field provides the data  to be sent for this operation\ncall",
2834            "type": "string"
2835           }
2836          }
2837         }
2838        }
2839       },
2840       "action-param": {
2841        "list": {
2842         "action-param": {
2843          "description": "List of action parameters to\ncontrol VNF",
2844          "key": "id",
2845          "leaf": {
2846           "id": {
2847            "type": "string"
2848           },
2849           "name": {
2850            "type": "string"
2851           },
2852           "description": {
2853            "type": "string"
2854           },
2855           "group-tag": {
2856            "description": "A simple tag to group monitoring parameter",
2857            "type": "string"
2858           },
2859           "url": {
2860            "description": "This is the URL where to perform the operation",
2861            "type": "inet:uri"
2862           },
2863           "method": {
2864            "description": "This is the method to be performed at the uri.\nPOST by default for action",
2865            "type": "manotypes:http-method",
2866            "default": "POST"
2867           },
2868           "payload": {
2869            "description": "This is the operation payload or payload template to be sent in\nthe data for this operation call",
2870            "type": "string"
2871           }
2872          }
2873         }
2874        }
2875       },
2876       "input-parameter": {
2877        "description": "",
2878        "list": {
2879         "input-parameter": {
2880          "description": "List of input parameters",
2881          "key": "xpath",
2882          "leaf": {
2883           "xpath": {
2884            "description": "A an xpath that specfies which element in a descriptor is to be\nmodified.",
2885            "type": "string"
2886           },
2887           "value": {
2888            "description": "The value that the element specified by the xpath should take when a\nrecord is created.",
2889            "type": "string"
2890           }
2891          }
2892         }
2893        }
2894       },
2895       "input-parameter-xpath": {
2896        "list": {
2897         "input-parameter-xpath": {
2898          "description": "List of xpaths to parameters inside the NSD\nthe can be customized during the instantiation.",
2899          "key": "xpath",
2900          "leaf": {
2901           "xpath": {
2902            "description": "An xpath that specifies the element in a descriptor.",
2903            "type": "string"
2904           },
2905           "label": {
2906            "description": "A descriptive string",
2907            "type": "string"
2908           },
2909           "default-value": {
2910            "description": " A default value for this input parameter",
2911            "type": "string"
2912           }
2913          }
2914         }
2915        }
2916       },
2917       "nfvi-metrics": {
2918        "container": {
2919         "vcpu": {
2920          "leaf": {
2921           "label": {
2922            "description": "Label to show in UI",
2923            "type": "string",
2924            "default": "VCPU"
2925           },
2926           "total": {
2927            "description": "The total number of VCPUs available.",
2928            "type": "uint64"
2929           },
2930           "utilization": {
2931            "description": "The VCPU utilization (percentage).",
2932            "type": {
2933             "decimal64": {
2934              "fraction-digits": "2",
2935              "range": "0 .. 100"
2936             }
2937            }
2938           }
2939          }
2940         },
2941         "memory": {
2942          "leaf": {
2943           "label": {
2944            "description": "Label to show in UI",
2945            "type": "string",
2946            "default": "MEMORY"
2947           },
2948           "used": {
2949            "description": "The amount of memory (bytes) currently in use.",
2950            "type": "uint64"
2951           },
2952           "total": {
2953            "description": "The amount of memory (bytes) available.",
2954            "type": "uint64"
2955           },
2956           "utilization": {
2957            "description": "The memory utilization (percentage).",
2958            "type": {
2959             "decimal64": {
2960              "fraction-digits": "2",
2961              "range": "0 .. 100"
2962             }
2963            }
2964           }
2965          }
2966         },
2967         "storage": {
2968          "leaf": {
2969           "label": {
2970            "description": "Label to show in UI",
2971            "type": "string",
2972            "default": "STORAGE"
2973           },
2974           "used": {
2975            "description": "The amount of storage (bytes) currently in use.",
2976            "type": "uint64"
2977           },
2978           "total": {
2979            "description": "The amount of storage (bytes) available.",
2980            "type": "uint64"
2981           },
2982           "utilization": {
2983            "description": "The storage utilization (percentage).",
2984            "type": {
2985             "decimal64": {
2986              "fraction-digits": "2",
2987              "range": "0 .. 100"
2988             }
2989            }
2990           }
2991          }
2992         },
2993         "external-ports": {
2994          "leaf": {
2995           "label": {
2996            "description": "Label to show in UI",
2997            "type": "string",
2998            "default": "EXTERNAL PORTS"
2999           },
3000           "total": {
3001            "description": "The total number of external ports.",
3002            "type": "uint64"
3003           }
3004          }
3005         },
3006         "internal-ports": {
3007          "leaf": {
3008           "label": {
3009            "description": "Label to show in UI",
3010            "type": "string",
3011            "default": "INTERNAL PORTS"
3012           },
3013           "total": {
3014            "description": "The total number of internal ports.",
3015            "type": "uint64"
3016           }
3017          }
3018         },
3019         "network": {
3020          "leaf": {
3021           "label": {
3022            "description": "Label to show in UI",
3023            "type": "string",
3024            "default": "NETWORK TRAFFIC"
3025           }
3026          },
3027          "container": {
3028           "incoming": {
3029            "leaf": {
3030             "label": {
3031              "description": "Label to show in UI",
3032              "type": "string",
3033              "default": "INCOMING NETWORK TRAFFIC"
3034             },
3035             "bytes": {
3036              "description": "The cumulative number of incoming bytes.",
3037              "type": "uint64"
3038             },
3039             "packets": {
3040              "description": "The cumulative number of incoming packets.",
3041              "type": "uint64"
3042             },
3043             "byte-rate": {
3044              "description": "The current incoming byte-rate (bytes per second).",
3045              "type": {
3046               "decimal64": {
3047                "fraction-digits": "2"
3048               }
3049              }
3050             },
3051             "packet-rate": {
3052              "description": "The current incoming packet (packets per second).",
3053              "type": {
3054               "decimal64": {
3055                "fraction-digits": "2"
3056               }
3057              }
3058             }
3059            }
3060           },
3061           "outgoing": {
3062            "leaf": {
3063             "label": {
3064              "description": "Label to show in UI",
3065              "type": "string",
3066              "default": "OUTGOING NETWORK TRAFFIC"
3067             },
3068             "bytes": {
3069              "description": "The cumulative number of outgoing bytes.",
3070              "type": "uint64"
3071             },
3072             "packets": {
3073              "description": "The cumulative number of outgoing packets.",
3074              "type": "uint64"
3075             },
3076             "byte-rate": {
3077              "description": "The current outgoing byte-rate (bytes per second).",
3078              "type": {
3079               "decimal64": {
3080                "fraction-digits": "2"
3081               }
3082              }
3083             },
3084             "packet-rate": {
3085              "description": "The current outgoing packet (packets per second).",
3086              "type": {
3087               "decimal64": {
3088                "fraction-digits": "2"
3089               }
3090              }
3091             }
3092            }
3093           }
3094          }
3095         }
3096        }
3097       },
3098       "alarm": {
3099        "leaf": {
3100         "alarm-id": {
3101          "description": "This field is reserved for the identifier assigned by the cloud\nprovider",
3102          "type": "string"
3103         },
3104         "name": {
3105          "description": "A human readable string to identify the alarm",
3106          "type": "string"
3107         },
3108         "description": {
3109          "description": "A string containing a description of this alarm",
3110          "type": "string"
3111         },
3112         "vdur-id": {
3113          "description": "The identifier of the VDUR that the alarm is associated with",
3114          "type": "string"
3115         },
3116         "repeat": {
3117          "description": "This flag indicates whether the alarm should be repeatedly emitted\nwhile the associated threshold has been crossed.",
3118          "type": "boolean",
3119          "default": "true"
3120         },
3121         "enabled": {
3122          "description": "This flag indicates whether the alarm has been enabled or\ndisabled.",
3123          "type": "boolean",
3124          "default": "true"
3125         },
3126         "severity": {
3127          "description": "A measure of the important or urgency of the alarm",
3128          "type": "manotypes:alarm-severity-type"
3129         },
3130         "metric": {
3131          "description": "The metric to be tracked by this alarm.",
3132          "type": "manotypes:alarm-metric-type"
3133         },
3134         "statistic": {
3135          "description": "The type of metric statistic that is tracked by this alarm",
3136          "type": "manotypes:alarm-statistic-type"
3137         },
3138         "operation": {
3139          "description": "The relational operator that defines whether the alarm should be\ntriggered when the metric statistic is, say, above or below the\nspecified threshold value.",
3140          "type": "manotypes:alarm-operation-type"
3141         },
3142         "value": {
3143          "description": "This value defines the threshold that, if crossed, will trigger\nthe alarm.",
3144          "type": {
3145           "decimal64": {
3146            "fraction-digits": "4"
3147           }
3148          }
3149         },
3150         "period": {
3151          "description": "The period defines the length of time (seconds) that the metric\ndata are collected over in oreder to evaluate the chosen\nstatistic.",
3152          "type": "uint32"
3153         },
3154         "evaluations": {
3155          "description": "This is the number of samples of the metric statistic used to\nevaluate threshold crossing. Each sample or evaluation is equal to\nthe metric statistic obtained for a given period. This can be used\nto mitigate spikes in the metric that may skew the statistic of\ninterest.",
3156          "type": "uint32"
3157         }
3158        },
3159        "container": {
3160         "actions": {
3161          "list": {
3162           "ok": {
3163            "key": "url",
3164            "leaf": {
3165             "url": {
3166              "type": "string"
3167             }
3168            }
3169           },
3170           "insufficient-data": {
3171            "key": "url",
3172            "leaf": {
3173             "url": {
3174              "type": "string"
3175             }
3176            }
3177           },
3178           "alarm": {
3179            "key": "url",
3180            "leaf": {
3181             "url": {
3182              "type": "string"
3183             }
3184            }
3185           }
3186          }
3187         }
3188        }
3189       },
3190       "host-aggregate": {
3191        "list": {
3192         "host-aggregate": {
3193          "description": "Name of the Host Aggregate",
3194          "key": "metadata-key",
3195          "leaf": {
3196           "metadata-key": {
3197            "type": "string"
3198           },
3199           "metadata-value": {
3200            "type": "string"
3201           }
3202          }
3203         }
3204        }
3205       },
3206       "placement-group-input": {
3207        "leaf": {
3208         "cloud-type": {
3209          "type": "manotypes:cloud-account-type"
3210         }
3211        },
3212        "choice": {
3213         "cloud-provider": {
3214          "case": {
3215           "openstack": {
3216            "container": {
3217             "availability-zone": {
3218              "description": "Name of the Availability Zone",
3219              "leaf": {
3220               "name": {
3221                "type": "string"
3222               }
3223              }
3224             },
3225             "server-group": {
3226              "description": "Name of the Affinity/Anti-Affinity Server Group",
3227              "leaf": {
3228               "name": {
3229                "type": "string"
3230               }
3231              }
3232             }
3233            },
3234            "list": {
3235             "host-aggregate": {
3236              "description": "Name of the Host Aggregate",
3237              "key": "metadata-key",
3238              "leaf": {
3239               "metadata-key": {
3240                "type": "string"
3241               },
3242               "metadata-value": {
3243                "type": "string"
3244               }
3245              }
3246             }
3247            }
3248           },
3249           "aws": {
3250            "leaf": {
3251             "aws-construct": {
3252              "type": "empty"
3253             }
3254            }
3255           },
3256           "openmano": {
3257            "leaf": {
3258             "openmano-construct": {
3259              "type": "empty"
3260             }
3261            }
3262           },
3263           "vsphere": {
3264            "leaf": {
3265             "vsphere-construct": {
3266              "type": "empty"
3267             }
3268            }
3269           },
3270           "mock": {
3271            "leaf": {
3272             "mock-construct": {
3273              "type": "empty"
3274             }
3275            }
3276           },
3277           "cloudsim": {
3278            "leaf": {
3279             "cloudsim-construct": {
3280              "type": "empty"
3281             }
3282            }
3283           }
3284          }
3285         }
3286        }
3287       },
3288       "placement-group-info": {
3289        "description": "",
3290        "leaf": {
3291         "name": {
3292          "description": "Place group construct to define the compute resource placement strategy\nin cloud environment",
3293          "type": "string"
3294         },
3295         "requirement": {
3296          "description": "This is free text space used to describe the intent/rationale\nbehind this placement group. This is for human consumption only",
3297          "type": "string"
3298         },
3299         "strategy": {
3300          "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  ",
3301          "type": {
3302           "enumeration": {
3303            "enum": {
3304             "COLOCATION": {
3305              "value": 0
3306             },
3307             "ISOLATION": {
3308              "value": 1
3309             }
3310            }
3311           }
3312          },
3313          "default": "COLOCATION"
3314         }
3315        }
3316       }
3317      }
3318     }
3319    }
3320   },
3321   "rw-pb-ext": {
3322    "module": {
3323     "rw-pb-ext": {
3324      "namespace": "http://riftio.com/ns/riftware-1.0/rw-pb-ext",
3325      "prefix": "rwpb",
3326      "revision": {
3327       "2014-03-28": {
3328        "description": "Initial revision.",
3329        "reference": "RIFT yang extensions for converting yang files to Google\nProtocol Buffers (protobuf) using rift protoc-c extensions."
3330       }
3331      }
3332     }
3333    }
3334   },
3335   "rwvcs-types": {
3336    "module": {
3337     "rwvcs-types": {
3338      "namespace": "http://riftio.com/ns/riftware-1.0/rwvcs-types",
3339      "prefix": "rwvcstypes",
3340      "import": {
3341       "rw-pb-ext": {
3342        "prefix": "rwpb"
3343       },
3344       "rw-yang-types": {
3345        "prefix": "rwt"
3346       },
3347       "ietf-inet-types": {
3348        "prefix": "inet",
3349        "revision-date": "2013-07-15"
3350       }
3351      },
3352      "revision": {
3353       "2014-03-12": {
3354        "description": "Initial implementation of RW.Manifest.",
3355        "reference": "RW.VX Software Component Document"
3356       }
3357      },
3358      "typedef": {
3359       "component_type": {
3360        "type": {
3361         "enumeration": {
3362          "enum": {
3363           "RWCOLLECTION": null,
3364           "RWVM": null,
3365           "RWPROC": null,
3366           "PROC": null,
3367           "RWTASKLET": null
3368          }
3369         }
3370        }
3371       },
3372       "recovery-type": {
3373        "type": {
3374         "enumeration": {
3375          "enum": {
3376           "NONE": null,
3377           "RESTART": null,
3378           "FAILCRITICAL": null,
3379           "IGNORE": null,
3380           "CUSTOM": null
3381          }
3382         }
3383        }
3384       }
3385      },
3386      "grouping": {
3387       "rwvcs-variable-list": {
3388        "leaf-list": {
3389         "python-variable": {
3390          "description": "List of Python variable assignments",
3391          "type": "string"
3392         }
3393        }
3394       },
3395       "valgrind": {
3396        "container": {
3397         "valgrind": {
3398          "leaf": {
3399           "enable": {
3400            "description": "Run the component under valgrind",
3401            "type": "boolean"
3402           }
3403          },
3404          "leaf-list": {
3405           "opts": {
3406            "description": "Command line options to pass to valgrind",
3407            "type": "string"
3408           }
3409          }
3410         }
3411        }
3412       },
3413       "action-list": {
3414        "list": {
3415         "action": {
3416          "description": "This section contains a sequence\nof RW.VCS actions",
3417          "key": "name",
3418          "leaf": {
3419           "name": {
3420            "description": "Name of the action within the sequence",
3421            "type": "string"
3422           }
3423          },
3424          "grouping": {
3425           "rwvcs-python-loop": {
3426            "leaf": {
3427             "python-loop-expression": {
3428              "description": "Python expression",
3429              "type": "string"
3430             },
3431             "python-loop-iterate": {
3432              "description": "Python iteration",
3433              "type": "string"
3434             }
3435            }
3436           }
3437          },
3438          "uses": "rwvcs-python-loop",
3439          "choice": {
3440           "action": {
3441            "case": {
3442             "annex": {
3443              "container": {
3444               "annex": {
3445                "leaf": {
3446                 "component-name": {
3447                  "description": "Name of the component type\nin the inventory",
3448                  "type": {
3449                   "leafref": {
3450                    "path": "../../../../../../../component/component-name"
3451                   }
3452                  }
3453                 },
3454                 "instance-id": {
3455                  "description": "ID of the component instance\nin the inventory",
3456                  "type": "string"
3457                 }
3458                }
3459               }
3460              }
3461             },
3462             "start": {
3463              "container": {
3464               "start": {
3465                "uses": "rwvcs-variable-list",
3466                "leaf": {
3467                 "component-name": {
3468                  "description": "Name of the component type in\nthe inventory",
3469                  "type": {
3470                   "leafref": {
3471                    "path": "../../../../../../../component/component-name"
3472                   }
3473                  }
3474                 },
3475                 "instance-id": {
3476                  "description": "ID of the component instance\nin the inventory",
3477                  "type": "string"
3478                 },
3479                 "config-ready": {
3480                  "description": "Config readiness check enable",
3481                  "type": "boolean",
3482                  "default": "true"
3483                 },
3484                 "recovery-action": {
3485                  "description": "Define recovery action if this component fail",
3486                  "type": "recovery-type"
3487                 }
3488                }
3489               }
3490              }
3491             },
3492             "sleep": {
3493              "container": {
3494               "sleep": {
3495                "leaf": {
3496                 "wait-time-usec": {
3497                  "description": "Time to wait while sleeping",
3498                  "type": "uint32"
3499                 }
3500                }
3501               }
3502              }
3503             }
3504            }
3505           }
3506          }
3507         }
3508        }
3509       },
3510       "rwvcs-event-list": {
3511        "container": {
3512         "event-list": {
3513          "description": "",
3514          "list": {
3515           "event": {
3516            "description": "This section contains a list\nof RW.VCS events",
3517            "key": "name",
3518            "leaf": {
3519             "name": {
3520              "description": "Name of the event",
3521              "type": "string"
3522             }
3523            },
3524            "uses": "action-list"
3525           }
3526          }
3527         }
3528        }
3529       },
3530       "rwvcs-rwcollection": {
3531        "container": {
3532         "rwcollection": {
3533          "description": "This section defines a RW.VCS\nrwollection component",
3534          "leaf": {
3535           "collection-type": {
3536            "description": "Collection type",
3537            "type": "string"
3538           }
3539          },
3540          "uses": "rwvcs-event-list"
3541         }
3542        }
3543       },
3544       "rwvcs-rwvm": {
3545        "container": {
3546         "rwvm": {
3547          "description": "This section defines a RW.VCS\nrwvm component",
3548          "leaf": {
3549           "pool-name": {
3550            "description": "Name of the pool from which to\nallocate the VM",
3551            "type": "string"
3552           },
3553           "leader": {
3554            "description": "True if this VM is designated as a leader for\nthe parent collection.",
3555            "type": "boolean"
3556           }
3557          },
3558          "uses": {
3559           "rwvcs-event-list": null,
3560           "valgrind": null
3561          }
3562         }
3563        }
3564       },
3565       "rwvcs-rwproc": {
3566        "container": {
3567         "rwproc": {
3568          "description": "This section defines a RW.VCS\nrwproc component",
3569          "leaf": {
3570           "run-as": {
3571            "description": "Host OS user that should run this\nprocess, requires sudo -E access\nand non-collapsed processes",
3572            "type": "string"
3573           }
3574          },
3575          "list": {
3576           "tasklet": {
3577            "description": "List of tasklets to be run within\nthis process",
3578            "key": "name",
3579            "leaf": {
3580             "name": {
3581              "description": "Local description of the tasklet",
3582              "type": "string"
3583             },
3584             "component-name": {
3585              "description": "Component name of the tasklet",
3586              "mandatory": "true",
3587              "type": "string"
3588             },
3589             "instance-id": {
3590              "description": "If specified, the desired instance-id of\ntasklet component instance",
3591              "type": "uint32"
3592             },
3593             "config-ready": {
3594              "description": "Config readiness check enable",
3595              "type": "boolean",
3596              "default": "true"
3597             },
3598             "recovery-action": {
3599              "description": "Define recovery action if this component fail",
3600              "type": "recovery-type"
3601             }
3602            },
3603            "uses": "rwvcs-variable-list"
3604           }
3605          },
3606          "uses": "valgrind"
3607         }
3608        }
3609       },
3610       "native-proc": {
3611        "container": {
3612         "native-proc": {
3613          "leaf": {
3614           "run-as": {
3615            "description": "Host OS user that should run this\nprocess, requires sudo -E access",
3616            "type": "string"
3617           },
3618           "environment": {
3619            "description": "Runtime environment for native process",
3620            "type": "string"
3621           },
3622           "exe-path": {
3623            "description": "Path to native process executable",
3624            "type": "string"
3625           },
3626           "args": {
3627            "description": "Arguments to pass to native process",
3628            "type": "string"
3629           },
3630           "network-namespace": {
3631            "description": "Namespace to start process in",
3632            "type": "string"
3633           },
3634           "stdout": {
3635            "description": "Redirect stdout to the file at the\nspecified path",
3636            "type": "string"
3637           },
3638           "stderr": {
3639            "description": "Redirect stderr to the file at the\nspecified path. Optionally, 'stdout'\nmay be used to redirect to the same\nfile as stdout",
3640            "type": "string"
3641           },
3642           "interactive": {
3643            "description": "Native process is interactive and needs\nterminal control",
3644            "type": "empty"
3645           }
3646          },
3647          "uses": "valgrind"
3648         }
3649        }
3650       },
3651       "rwvcs-rwtasklet": {
3652        "container": {
3653         "rwtasklet": {
3654          "description": "This section defines a RW.VCS\nrwtasklet component",
3655          "leaf": {
3656           "plugin-directory": {
3657            "description": "",
3658            "type": "string"
3659           },
3660           "plugin-name": {
3661            "description": "",
3662            "type": "string"
3663           },
3664           "plugin-version": {
3665            "description": "",
3666            "type": "string"
3667           }
3668          }
3669         }
3670        }
3671       },
3672       "rwvcs-component-list": {
3673        "list": {
3674         "component": {
3675          "description": "This section defines the RIFT.ware\nvirtual components",
3676          "key": "component-name",
3677          "leaf": {
3678           "component-name": {
3679            "description": "",
3680            "type": "string"
3681           },
3682           "component-type": {
3683            "description": "",
3684            "type": "component_type",
3685            "mandatory": "true"
3686           }
3687          },
3688          "choice": {
3689           "component": {
3690            "case": {
3691             "rwvcs-rwcollection": {
3692              "uses": "rwvcs-rwcollection"
3693             },
3694             "rwvcs-rwvm": {
3695              "uses": "rwvcs-rwvm"
3696             },
3697             "rwvcs-rwproc": {
3698              "uses": "rwvcs-rwproc"
3699             },
3700             "native-proc": {
3701              "uses": "native-proc"
3702             },
3703             "rwvcs-rwtasklet": {
3704              "uses": "rwvcs-rwtasklet"
3705             }
3706            }
3707           }
3708          }
3709         }
3710        }
3711       }
3712      }
3713     }
3714    }
3715   },
3716   "rw-yang-types": {
3717    "module": {
3718     "rw-yang-types": {
3719      "namespace": "http://riftio.com/ns/riftware-1.0/rw-yang-types",
3720      "prefix": "rwt",
3721      "import": {
3722       "ietf-inet-types": {
3723        "prefix": "inet",
3724        "revision-date": "2013-07-15"
3725       },
3726       "ietf-yang-types": {
3727        "prefix": "ietf-yang-types",
3728        "revision-date": "2013-07-15"
3729       }
3730      },
3731      "description": "This module contains redefinitions of the ietf-yang-types and\nietf-inet-types modules, which allows customized extensions to be\ndefined for these types when used in RiftWare applications.",
3732      "revision": {
3733       "2014-04-01": {
3734        "description": "Initial revision.",
3735        "reference": "RIFT yang types that redefine the IETF types."
3736       }
3737      },
3738      "typedef": {
3739       "ip-version": {
3740        "type": "inet:ip-version"
3741       },
3742       "dscp": {
3743        "type": "inet:dscp"
3744       },
3745       "ipv6-flow-label": {
3746        "type": "inet:ipv6-flow-label"
3747       },
3748       "port-number": {
3749        "type": "inet:port-number"
3750       },
3751       "as-number": {
3752        "type": "inet:as-number"
3753       },
3754       "ip-address": {
3755        "type": "inet:ip-address"
3756       },
3757       "ipv4-address": {
3758        "type": "inet:ipv4-address"
3759       },
3760       "ipv6-address": {
3761        "type": "inet:ipv6-address"
3762       },
3763       "ip-address-no-zone": {
3764        "type": "inet:ip-address-no-zone"
3765       },
3766       "ipv4-address-no-zone": {
3767        "type": "inet:ipv4-address-no-zone"
3768       },
3769       "ipv6-address-no-zone": {
3770        "type": "inet:ipv6-address-no-zone"
3771       },
3772       "ip-prefix": {
3773        "type": "inet:ip-prefix"
3774       },
3775       "ip-prefix-non-canonical": {
3776        "type": {
3777         "union": {
3778          "type": {
3779           "rwt:ipv4-prefix-non-canonical": null,
3780           "rwt:ipv6-prefix-non-canonical": null
3781          }
3782         }
3783        },
3784        "description": "The ip-prefix type represents an IP prefix and is IP\nversion neutral.  The format of the textual representations\nimplies the IP version."
3785       },
3786       "ipv4-prefix": {
3787        "type": "inet:ipv4-prefix"
3788       },
3789       "ipv4-prefix-non-canonical": {
3790        "type": {
3791         "string": {
3792          "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]))"
3793         }
3794        },
3795        "description": "The ipv4-prefix type represents an IPv4 address prefix.\nThe prefix length is given by the number following the\nslash character and must be less than or equal to 32.\n\nA prefix length value of n corresponds to an IP address\nmask that has n contiguous 1-bits from the most\nsignificant bit (MSB) and all other bits set to 0."
3796       },
3797       "ipv6-prefix": {
3798        "type": "inet:ipv6-prefix"
3799       },
3800       "ipv6-prefix-non-canonical": {
3801        "type": {
3802         "string": {
3803          "pattern": {
3804           "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))": null,
3805           "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)": null
3806          }
3807         }
3808        },
3809        "description": "The ipv6-prefix type represents an IPv6 address prefix.\nThe prefix length is given by the number following the\nslash character and must be less than or equal to 128.\n\nA prefix length value of n corresponds to an IP address\nmask that has n contiguous 1-bits from the most\nsignificant bit (MSB) and all other bits set to 0.\n\nThe IPv6 address should have all bits that do not belong\nto the prefix set to zero."
3810       },
3811       "domain-name": {
3812        "type": "inet:domain-name"
3813       },
3814       "host": {
3815        "type": "inet:host"
3816       },
3817       "uri": {
3818        "type": "inet:uri"
3819       },
3820       "counter32": {
3821        "type": "ietf-yang-types:counter32"
3822       },
3823       "zero-based-counter32": {
3824        "type": "ietf-yang-types:zero-based-counter32"
3825       },
3826       "counter64": {
3827        "type": "ietf-yang-types:counter64"
3828       },
3829       "zero-based-counter64": {
3830        "type": "ietf-yang-types:zero-based-counter64"
3831       },
3832       "gauge32": {
3833        "type": "ietf-yang-types:gauge32"
3834       },
3835       "gauge64": {
3836        "type": "ietf-yang-types:gauge64"
3837       },
3838       "object-identifier": {
3839        "type": "ietf-yang-types:object-identifier"
3840       },
3841       "object-identifier-128": {
3842        "type": "ietf-yang-types:object-identifier-128"
3843       },
3844       "yang-identifier": {
3845        "type": "ietf-yang-types:yang-identifier"
3846       },
3847       "date-and-time": {
3848        "type": "ietf-yang-types:date-and-time"
3849       },
3850       "timeticks": {
3851        "type": "ietf-yang-types:timeticks"
3852       },
3853       "timestamp": {
3854        "type": "ietf-yang-types:timestamp"
3855       },
3856       "phys-address": {
3857        "type": "ietf-yang-types:phys-address"
3858       },
3859       "mac-address": {
3860        "type": "ietf-yang-types:mac-address"
3861       },
3862       "xpath1.0": {
3863        "type": "ietf-yang-types:xpath1.0"
3864       },
3865       "hex-string": {
3866        "type": "ietf-yang-types:hex-string"
3867       },
3868       "uuid": {
3869        "type": "ietf-yang-types:uuid"
3870       },
3871       "dotted-quad": {
3872        "type": "ietf-yang-types:dotted-quad"
3873       },
3874       "call-id": {
3875        "type": {
3876         "string": {
3877          "pattern": "[0-9]{1,20}:[0-9]{1,20}"
3878         }
3879        }
3880       },
3881       "base64-binary": {
3882        "type": {
3883         "string": {
3884          "pattern": "[0-9a-zA-Z+/]{4,}[=]{0,2}"
3885         }
3886        }
3887       },
3888       "hex-binary": {
3889        "type": {
3890         "string": {
3891          "pattern": "[0-9A-Fa-f]{2}([0-9A-Fa-f]{2})*"
3892         }
3893        }
3894       },
3895       "rw-ip-protocol": {
3896        "type": {
3897         "enumeration": {
3898          "enum": {
3899           "icmp": {
3900            "value": 1
3901           },
3902           "tcp": {
3903            "value": 6
3904           },
3905           "udp": {
3906            "value": 17
3907           },
3908           "gre": {
3909            "value": 47
3910           }
3911          }
3912         }
3913        }
3914       }
3915      }
3916     }
3917    }
3918   }
3919  },
3920  "extension": {
3921   "module": {
3922    "argument": "name",
3923    "include": "0..n",
3924    "prefix": "0..1",
3925    "anyxml": "0..n",
3926    "augment": "0..n",
3927    "choice": "0..n",
3928    "contact": "0..1",
3929    "container": "0..n",
3930    "description": "0..1",
3931    "deviation": "0..n",
3932    "extension": "0..n",
3933    "feature": "0..n",
3934    "grouping": "0..n",
3935    "identity": "0..n",
3936    "import": "0..n",
3937    "leaf": "0..n",
3938    "leaf-list": "0..n",
3939    "list": "0..n",
3940    "namespace": "0..1",
3941    "notification": "0..n",
3942    "organization": "0..1",
3943    "reference": "0..1",
3944    "revision": "0..n",
3945    "rpc": "0..n",
3946    "typedef": "0..n",
3947    "uses": "0..n",
3948    "yang-version": "0..1",
3949    "preprocess": {
3950     "!js/function": "function (arg, params, ctx) {\n  var changes, match, ref, synth, target;\n  synth = this.require('data-synth');\n  ref = params.augment;\n  for (target in ref) {\n    changes = ref[target];\n    match = this.locate(ctx, target);\n    if (match == null) {\n      continue;\n    }\n    synth.copy(match, changes);\n  }\n  return delete this.source[params.prefix];\n}"
3951    },
3952    "construct": {
3953     "!js/function": "function (arg, params, children) {\n  var k, m, modules, ref, synth, v;\n  synth = this.require('data-synth');\n  modules = {};\n  ref = params[\"import\"];\n  for (k in ref) {\n    v = ref[k];\n    modules[k] = children[k];\n    delete children[k];\n  }\n  m = (synth.Store(params, function() {\n    return this.set({\n      name: arg,\n      modules: modules\n    });\n  })).bind(children);\n  this.define('module', arg, m);\n  return m;\n}"
3954    }
3955   },
3956   "prefix": {
3957    "argument": "value",
3958    "preprocess": {
3959     "!js/function": "function (arg, params, ctx) {\n  return this.source[arg] = this.source;\n}"
3960    }
3961   },
3962   "include": {
3963    "argument": "module",
3964    "preprocess": {
3965     "!js/function": "function (arg, params, ctx) {\n  var k, m, ref, ref1, ref2, results, v;\n  m = this.preprocess(this.resolve('dependencies', arg));\n  ref = m.extension;\n  for (k in ref) {\n    v = ref[k];\n    this.define('extension', k, v);\n  }\n  ref1 = m.typedef;\n  for (k in ref1) {\n    v = ref1[k];\n    this.define('typedef', k, v);\n  }\n  ref2 = m.schema;\n  results = [];\n  for (k in ref2) {\n    v = ref2[k];\n    results.push(ctx[k] = v);\n  }\n  return results;\n}"
3966    },
3967    "revision-date": "0..1"
3968   },
3969   "augment": {
3970    "anyxml": "0..n",
3971    "case": "0..n",
3972    "choice": "0..n",
3973    "container": "0..n",
3974    "description": "0..1",
3975    "if-feature": "0..n",
3976    "leaf": "0..n",
3977    "leaf-list": "0..n",
3978    "list": "0..n",
3979    "reference": "0..1",
3980    "status": "0..1",
3981    "uses": "0..n",
3982    "when": "0..1",
3983    "argument": "target-node"
3984   },
3985   "belongs-to": {
3986    "prefix": 1,
3987    "preprocess": {
3988     "!js/function": "function (arg, params, ctx) {\n  return this.source[params.prefix] = this.source;\n}"
3989    },
3990    "argument": "module"
3991   },
3992   "bit": {
3993    "description": "0..1",
3994    "reference": "0..1",
3995    "status": "0..1",
3996    "position": "0..1",
3997    "argument": "name"
3998   },
3999   "case": {
4000    "anyxml": "0..n",
4001    "choice": "0..n",
4002    "container": "0..n",
4003    "description": "0..1",
4004    "if-feature": "0..n",
4005    "leaf": "0..n",
4006    "leaf-list": "0..n",
4007    "list": "0..n",
4008    "reference": "0..1",
4009    "status": "0..1",
4010    "uses": "0..n",
4011    "when": "0..1",
4012    "argument": "name"
4013   },
4014   "choice": {
4015    "anyxml": "0..n",
4016    "case": "0..n",
4017    "config": "0..1",
4018    "container": "0..n",
4019    "default": "0..1",
4020    "description": "0..1",
4021    "if-feature": "0..n",
4022    "leaf": "0..n",
4023    "leaf-list": "0..n",
4024    "list": "0..n",
4025    "mandatory": "0..1",
4026    "reference": "0..1",
4027    "status": "0..1",
4028    "when": "0..1",
4029    "argument": "condition"
4030   },
4031   "config": {
4032    "preprocess": {
4033     "!js/function": "function (arg, p, ctx) {\n  return ctx.config = arg === true || arg === 'true';\n}"
4034    },
4035    "argument": "value"
4036   },
4037   "container": {
4038    "anyxml": "0..n",
4039    "choice": "0..n",
4040    "config": "0..1",
4041    "container": "0..n",
4042    "description": "0..1",
4043    "grouping": "0..n",
4044    "if-feature": "0..n",
4045    "leaf": "0..n",
4046    "leaf-list": "0..n",
4047    "list": "0..n",
4048    "must": "0..n",
4049    "presence": "0..1",
4050    "reference": "0..1",
4051    "status": "0..1",
4052    "typedef": "0..n",
4053    "uses": "0..n",
4054    "when": "0..1",
4055    "construct": {
4056     "!js/function": "function (arg, params, children) {\n  var synth;\n  synth = this.require('data-synth');\n  return (synth.Object(params)).bind(children);\n}"
4057    },
4058    "argument": "name"
4059   },
4060   "deviate": {
4061    "config": "0..1",
4062    "default": "0..1",
4063    "mandatory": "0..1",
4064    "max-elements": "0..1",
4065    "min-elements": "0..1",
4066    "must": "0..n",
4067    "type": "0..1",
4068    "unique": "0..1",
4069    "units": "0..1",
4070    "argument": "value"
4071   },
4072   "deviation": {
4073    "description": "0..1",
4074    "deviate": "1..n",
4075    "reference": "0..1",
4076    "argument": "target-node"
4077   },
4078   "enum": {
4079    "description": "0..1",
4080    "reference": "0..1",
4081    "status": "0..1",
4082    "value": "0..1",
4083    "preprocess": {
4084     "!js/function": "function (arg, params, ctx) {\n  if (params.value == null) {\n    if (this.enumValue == null) {\n      this.enumValue = 0;\n    }\n    params.value = this.enumValue++;\n  } else {\n    params.value = Number(params.value);\n    this.enumValue = params.value + 1;\n  }\n  return ctx[\"enum\"][arg] = params;\n}"
4085    },
4086    "argument": "name"
4087   },
4088   "feature": {
4089    "description": "0..1",
4090    "if-feature": "0..n",
4091    "reference": "0..1",
4092    "status": "0..1",
4093    "preprocess": {
4094     "!js/function": "function (arg, params, ctx) {\n  if (params.status === 'unavailable') {\n    console.warn(\"feature \" + arg + \" is unavailable\");\n    if (typeof ctx.feature === 'object') {\n      return delete ctx.feature[arg];\n    } else {\n      return delete ctx.feature;\n    }\n  }\n}"
4095    },
4096    "construct": {
4097     "!js/function": "function (arg, params, children) {\n  var feature;\n  feature = this.resolve('feature', arg);\n  return null;\n}"
4098    },
4099    "argument": "name"
4100   },
4101   "grouping": {
4102    "anyxml": "0..n",
4103    "choice": "0..n",
4104    "container": "0..n",
4105    "description": "0..1",
4106    "grouping": "0..n",
4107    "leaf": "0..n",
4108    "leaf-list": "0..n",
4109    "list": "0..n",
4110    "reference": "0..1",
4111    "status": "0..1",
4112    "typedef": "0..n",
4113    "uses": "0..n",
4114    "preprocess": {
4115     "!js/function": "function (arg, params) {\n  return this.define('grouping', arg, params);\n}"
4116    },
4117    "argument": "name"
4118   },
4119   "identity": {
4120    "base": "0..1",
4121    "description": "0..1",
4122    "reference": "0..1",
4123    "status": "0..1",
4124    "preprocess": {
4125     "!js/function": "function (arg, params) {\n  return this.define('identity', arg, params);\n}"
4126    },
4127    "argument": "name"
4128   },
4129   "if-feature": {
4130    "preprocess": {
4131     "!js/function": "function (arg, params, ctx) {\n  if ((this.resolve('feature', arg)) == null) {\n    return ctx.status = 'unavailable';\n  }\n}"
4132    },
4133    "argument": "name"
4134   },
4135   "import": {
4136    "prefix": 1,
4137    "revision-date": "0..1",
4138    "preprocess": {
4139     "!js/function": "function (arg, params, ctx) {\n  var copy, k, m, original, ref, ref1, rev, schema, source, synth, v;\n  synth = this.require('data-synth');\n  schema = this.resolve('dependencies', arg, false);\n  if (schema == null) {\n    console.warn(\"no explicit dependency for \" + arg + \" defined, searching local filesystem\");\n    schema = this.parse(\"!yang \" + arg + \".yang\", this.source);\n    if (schema != null) {\n      this.define('dependencies', arg, schema);\n      source = this.source.parent;\n      while ((source.parent != null) && source.parent.name !== 'yangforge') {\n        source = source.parent;\n      }\n      if (source.dependencies == null) {\n        source.dependencies = {};\n      }\n      source.dependencies[arg] = schema;\n    }\n  }\n  m = this.preprocess(schema);\n  if (m == null) {\n    throw this.error(\"unable to resolve '\" + arg + \"' in dependencies\", 'import');\n  }\n  rev = params['revision-date'];\n  if ((rev != null) && !(rev in m.revision)) {\n    throw this.error(\"requested \" + rev + \" not available in \" + arg, 'import');\n  }\n  ref = m.extension;\n  for (k in ref) {\n    v = ref[k];\n    if (!(v.override === true)) {\n      continue;\n    }\n    original = this.resolve('extension', k);\n    copy = synth.copy({}, v);\n    copy.origin = synth.copy({}, (ref1 = original.origin) != null ? ref1 : original);\n    delete copy.override;\n    this.define('extension', k, copy);\n  }\n  return this.source[params.prefix] = m;\n}"
4140    },
4141    "construct": {
4142     "!js/function": "function (arg, params, children, ctx) {\n  return this.compile(this.source[params.prefix], this.source);\n}"
4143    },
4144    "argument": "module"
4145   },
4146   "input": {
4147    "anyxml": "0..n",
4148    "choice": "0..n",
4149    "container": "0..n",
4150    "grouping": "0..n",
4151    "leaf": "0..n",
4152    "leaf-list": "0..n",
4153    "list": "0..n",
4154    "typedef": "0..n",
4155    "uses": "0..n",
4156    "construct": {
4157     "!js/function": "function (arg, params, children) {\n  var synth;\n  synth = this.require('data-synth');\n  return (synth.Object(params)).bind(children);\n}"
4158    }
4159   },
4160   "leaf": {
4161    "config": "0..1",
4162    "default": "0..1",
4163    "description": "0..1",
4164    "if-feature": "0..n",
4165    "mandatory": "0..1",
4166    "must": "0..n",
4167    "reference": "0..1",
4168    "status": "0..1",
4169    "type": "0..1",
4170    "units": "0..1",
4171    "when": "0..1",
4172    "construct": {
4173     "!js/function": "function (arg, params, children) {\n  var synth;\n  synth = this.require('data-synth');\n  return synth.Property(params, function() {\n    if (children.type != null) {\n      return this.set({\n        type: children.type\n      });\n    }\n  });\n}"
4174    },
4175    "argument": "name"
4176   },
4177   "leaf-list": {
4178    "config": "0..1",
4179    "description": "0..1",
4180    "if-feature": "0..n",
4181    "max-elements": "0..1",
4182    "min-elements": "0..1",
4183    "must": "0..n",
4184    "ordered-by": "0..1",
4185    "reference": "0..1",
4186    "status": "0..1",
4187    "type": "0..1",
4188    "units": "0..1",
4189    "when": "0..1",
4190    "construct": {
4191     "!js/function": "function (arg, params, children) {\n  var synth;\n  synth = this.require('data-synth');\n  return synth.List(params, function() {\n    if (children.type != null) {\n      return this.set({\n        type: children.type\n      });\n    }\n  });\n}"
4192    },
4193    "argument": "name"
4194   },
4195   "list": {
4196    "anyxml": "0..n",
4197    "choice": "0..n",
4198    "config": "0..1",
4199    "container": "0..n",
4200    "description": "0..1",
4201    "grouping": "0..n",
4202    "if-feature": "0..n",
4203    "key": "0..1",
4204    "leaf": "0..n",
4205    "leaf-list": "0..n",
4206    "list": "0..n",
4207    "max-elements": "0..1",
4208    "min-elements": "0..1",
4209    "must": "0..n",
4210    "ordered-by": "0..1",
4211    "reference": "0..1",
4212    "status": "0..1",
4213    "typedef": "0..n",
4214    "unique": "0..1",
4215    "uses": "0..n",
4216    "when": "0..1",
4217    "construct": {
4218     "!js/function": "function (arg, params, children) {\n  var item, synth;\n  synth = this.require('data-synth');\n  item = (synth.Object(null)).bind(children);\n  return (synth.List(params)).set({\n    type: item\n  });\n}"
4219    },
4220    "argument": "name"
4221   },
4222   "mandatory": {
4223    "preprocess": {
4224     "!js/function": "function (arg, p, ctx) {\n  return ctx.mandatory = arg === true || arg === 'true';\n}"
4225    },
4226    "argument": "value"
4227   },
4228   "max-elements": {
4229    "preprocess": {
4230     "!js/function": "function (arg, params, ctx) {\n  if (arg !== 'unbounded') {\n    return ctx['max-elements'] = Number(arg);\n  }\n}"
4231    },
4232    "argument": "value"
4233   },
4234   "min-elements": {
4235    "preprocess": {
4236     "!js/function": "function (arg, params, ctx) {\n  return ctx['min-elements'] = Number(arg);\n}"
4237    },
4238    "argument": "value"
4239   },
4240   "must": {
4241    "description": "0..1",
4242    "error-app-tag": "0..1",
4243    "error-message": "0..1",
4244    "reference": "0..1",
4245    "argument": "condition"
4246   },
4247   "notification": {
4248    "anyxml": "0..n",
4249    "choice": "0..n",
4250    "container": "0..n",
4251    "description": "0..1",
4252    "grouping": "0..n",
4253    "if-feature": "0..n",
4254    "leaf": "0..n",
4255    "leaf-list": "0..n",
4256    "list": "0..n",
4257    "reference": "0..1",
4258    "status": "0..1",
4259    "typedef": "0..n",
4260    "uses": "0..n",
4261    "preprocess": {
4262     "!js/function": "function (arg, params) {\n  return this.define('notification', arg, params);\n}"
4263    },
4264    "argument": "event"
4265   },
4266   "output": {
4267    "anyxml": "0..n",
4268    "choice": "0..n",
4269    "container": "0..n",
4270    "grouping": "0..n",
4271    "leaf": "0..n",
4272    "leaf-list": "0..n",
4273    "list": "0..n",
4274    "typedef": "0..n",
4275    "uses": "0..n",
4276    "construct": {
4277     "!js/function": "function (arg, params, children) {\n  var synth;\n  synth = this.require('data-synth');\n  return (synth.Object(params)).bind(children);\n}"
4278    }
4279   },
4280   "path": {
4281    "preprocess": {
4282     "!js/function": "function (arg, params, ctx) {\n  return ctx.path = arg.replace(/[_]/g, '.');\n}"
4283    },
4284    "argument": "value"
4285   },
4286   "pattern": {
4287    "construct": {
4288     "!js/function": "function (arg, params, children, ctx) {\n  if (ctx.patterns == null) {\n    ctx.patterns = [];\n  }\n  return ctx.patterns.push(new RegExp(arg));\n}"
4289    },
4290    "argument": "value"
4291   },
4292   "refine": {
4293    "default": "0..1",
4294    "description": "0..1",
4295    "reference": "0..1",
4296    "config": "0..1",
4297    "mandatory": "0..1",
4298    "presence": "0..1",
4299    "must": "0..n",
4300    "min-elements": "0..1",
4301    "max-elements": "0..1",
4302    "units": "0..1",
4303    "argument": "target-node"
4304   },
4305   "require-instance": {
4306    "preprocess": {
4307     "!js/function": "function (arg, params, ctx) {\n  return ctx['require-instance'] = arg === true || arg === 'true';\n}"
4308    },
4309    "argument": "value"
4310   },
4311   "revision": {
4312    "description": "0..1",
4313    "reference": "0..1",
4314    "preprocess": {
4315     "!js/function": "function (arg, params, ctx) {\n  return this.define('revision', arg, params);\n}"
4316    },
4317    "argument": "date"
4318   },
4319   "rpc": {
4320    "description": "0..1",
4321    "grouping": "0..n",
4322    "if-feature": "0..n",
4323    "input": "0..1",
4324    "output": "0..1",
4325    "reference": "0..1",
4326    "status": "0..1",
4327    "typedef": "0..n",
4328    "construct": {
4329     "!js/function": "function (arg, params, children) {\n  var func, method, ref, ref1, request, response, synth;\n  synth = this.require('data-synth');\n  func = this.resolve('rpc', arg, false);\n  if (func == null) {\n    func = function(input, output, done) {\n      return done(\"No control logic found for '\" + arg + \"' rpc operation\");\n    };\n  }\n  request = (ref = children.input) != null ? ref : synth.Meta;\n  response = (ref1 = children.output) != null ? ref1 : synth.Meta;\n  method = function(data, resolve, reject) {\n    var e, error, input, output;\n    if (typeof console.debug === \"function\") {\n      console.debug(\"executing rpc \" + arg + \"...\");\n    }\n    try {\n      input = new request(data, this);\n      output = new response(null, this);\n    } catch (error) {\n      e = error;\n      return reject(e);\n    }\n    return func.call(this, input, output, function(e) {\n      if (e == null) {\n        return resolve(output);\n      } else {\n        return reject(e);\n      }\n    });\n  };\n  method.params = params;\n  method.input = request;\n  method.output = response;\n  return method;\n}"
4330    },
4331    "argument": "name"
4332   },
4333   "submodule": {
4334    "argument": "name",
4335    "anyxml": "0..n",
4336    "augment": "0..n",
4337    "belongs-to": "0..1",
4338    "choice": "0..n",
4339    "contact": "0..1",
4340    "container": "0..n",
4341    "description": "0..1",
4342    "deviation": "0..n",
4343    "extension": "0..n",
4344    "feature": "0..n",
4345    "grouping": "0..n",
4346    "identity": "0..n",
4347    "import": "0..n",
4348    "include": "0..n",
4349    "leaf": "0..n",
4350    "leaf-list": "0..n",
4351    "list": "0..n",
4352    "notification": "0..n",
4353    "organization": "0..1",
4354    "reference": "0..1",
4355    "revision": "0..n",
4356    "rpc": "0..n",
4357    "typedef": "0..n",
4358    "uses": "0..n",
4359    "yang-version": "0..1",
4360    "preprocess": {
4361     "!js/function": "function (arg, params, ctx) {\n  var k, v;\n  for (k in params) {\n    v = params[k];\n    ctx[k] = v;\n  }\n  return delete ctx.submodule;\n}"
4362    }
4363   },
4364   "status": {
4365    "preprocess": {
4366     "!js/function": "function (arg, params, ctx) {\n  return ctx.status != null ? ctx.status : ctx.status = arg;\n}"
4367    },
4368    "argument": "value"
4369   },
4370   "type": {
4371    "base": "0..1",
4372    "bit": "0..n",
4373    "enum": "0..n",
4374    "fraction-digits": "0..1",
4375    "length": "0..1",
4376    "path": "0..1",
4377    "pattern": "0..n",
4378    "range": "0..1",
4379    "require-instance": "0..1",
4380    "type": "0..n",
4381    "preprocess": {
4382     "!js/function": "function (arg, params, ctx) {\n  return delete this.enumValue;\n}"
4383    },
4384    "construct": {
4385     "!js/function": "function (arg, params, children, ctx) {\n  var key, mparams, ref, ref1, synth, typedef, value;\n  synth = this.require('data-synth');\n  typedef = this.resolve('typedef', arg);\n  if (typedef == null) {\n    throw this.error(\"unable to resolve typedef for \" + arg);\n  }\n  switch (false) {\n    case typedef.construct == null:\n      ctx.type = typedef.construct(params, this, arguments.callee);\n      break;\n    case typeof typedef.type !== 'object':\n      ref = typedef.type;\n      for (key in ref) {\n        value = ref[key];\n        mparams = synth.copy({}, value);\n        synth.copy(mparams, params);\n        arguments.callee.call(this, key, mparams, children, ctx);\n      }\n      break;\n    case typeof typedef.type !== 'string':\n      arguments.callee.call(this, typedef.type, params, children, ctx);\n  }\n  if ((ref1 = ctx.type) != null) {\n    ref1.toString = function() {\n      return arg;\n    };\n  }\n  return null;\n}"
4386    },
4387    "argument": "name"
4388   },
4389   "typedef": {
4390    "default": "0..1",
4391    "description": "0..1",
4392    "units": "0..1",
4393    "type": "0..1",
4394    "reference": "0..1",
4395    "preprocess": {
4396     "!js/function": "function (arg, params) {\n  return this.define('typedef', arg, params);\n}"
4397    },
4398    "argument": "name"
4399   },
4400   "uses": {
4401    "augment": "0..n",
4402    "description": "0..1",
4403    "if-feature": "0..n",
4404    "refine": "0..n",
4405    "reference": "0..1",
4406    "status": "0..1",
4407    "when": "0..1",
4408    "preprocess": {
4409     "!js/function": "function (arg, params, ctx) {\n  var changes, grouping, k, match, ref, ref1, synth, target, v;\n  synth = this.require('data-synth');\n  grouping = synth.copy({}, this.resolve('grouping', arg));\n  delete grouping.description;\n  delete grouping.reference;\n  synth.copy(ctx, grouping);\n  ref = params.refine;\n  for (target in ref) {\n    changes = ref[target];\n    match = this.locate(ctx, target);\n    if (match == null) {\n      continue;\n    }\n    for (k in changes) {\n      v = changes[k];\n      match[k] = v;\n    }\n  }\n  ref1 = params.augment;\n  for (target in ref1) {\n    changes = ref1[target];\n    match = this.locate(ctx, target);\n    if (match == null) {\n      continue;\n    }\n    synth.copy(match, changes);\n  }\n  if (typeof ctx.uses === 'object') {\n    return delete ctx.uses[arg];\n  } else {\n    return delete ctx.uses;\n  }\n}"
4410    },
4411    "argument": "name"
4412   },
4413   "when": {
4414    "description": "0..1",
4415    "reference": "0..1",
4416    "argument": "condition"
4417   },
4418   "anyxml": {},
4419   "base": {
4420    "argument": "name"
4421   },
4422   "contact": {
4423    "argument": {
4424     "text": {
4425      "yin-element": "true"
4426     }
4427    }
4428   },
4429   "default": {
4430    "argument": "value"
4431   },
4432   "description": {
4433    "argument": {
4434     "text": {
4435      "yin-element": "true"
4436     }
4437    }
4438   },
4439   "error-app-tag": {
4440    "argument": "value"
4441   },
4442   "error-message": {
4443    "argument": {
4444     "value": {
4445      "yin-element": "true"
4446     }
4447    }
4448   },
4449   "fraction-digits": {
4450    "argument": "value"
4451   },
4452   "key": {
4453    "argument": "value"
4454   },
4455   "length": {
4456    "argument": "value"
4457   },
4458   "namespace": {
4459    "argument": "uri"
4460   },
4461   "ordered-by": {
4462    "argument": "value"
4463   },
4464   "organization": {
4465    "argument": {
4466     "text": {
4467      "yin-element": "true"
4468     }
4469    }
4470   },
4471   "position": {
4472    "argument": "value"
4473   },
4474   "presence": {
4475    "argument": "value"
4476   },
4477   "range": {
4478    "argument": "value"
4479   },
4480   "reference": {
4481    "argument": {
4482     "text": {
4483      "yin-element": "true"
4484     }
4485    }
4486   },
4487   "revision-date": {
4488    "argument": "date"
4489   },
4490   "unique": {
4491    "argument": "tag"
4492   },
4493   "units": {
4494    "argument": "value"
4495   },
4496   "value": {
4497    "argument": "value"
4498   },
4499   "yang-version": {
4500    "argument": "value"
4501   },
4502   "yin-element": {
4503    "argument": "value"
4504   }
4505  },
4506  "pkgdir": "/Users/larsmaultsby/Documents/ATG_Branch/rift/modules/ui/rw.ui/skyquake/plugins/composer/src/schemas/yang",
4507  "module": {}
4508 }