/* * * Copyright 2016 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * */ module rwsdn { namespace "http://riftio.com/ns/riftware-1.0/rwsdn"; prefix "rwsdn"; import rw-base { prefix rwbase; } import rw-pb-ext { prefix "rwpb"; } import rw-yang-types { prefix "rwt"; } import rw-log { prefix "rwlog"; } import mano-types { prefix "manotypes"; } import ietf-inet-types { prefix "inet"; } import ietf-yang-types { prefix "yang"; } revision 2014-12-30 { description "Initial revision."; reference "RIFT RWSDN cloud data"; } typedef sdn-connection-status-enum { description "Connection status for the sdn account"; type enumeration { enum unknown; enum validating; enum success; enum failure; } } grouping connection-status { container connection-status { config false; rwpb:msg-new SdnConnectionStatus; leaf status { type sdn-connection-status-enum; } leaf details { type string; } } } uses connection-status; typedef sdn-account-type { description "SDN account type"; type enumeration { enum odl; enum mock; enum sdnsim; enum openstack; } } grouping sdn-provider-auth { leaf account-type { type sdn-account-type; } choice provider-specific-info { container odl { leaf username { type string { length "1..255"; } } leaf password { type string { length "1..32"; } } leaf url { type string { length "1..255"; } } leaf plugin-name { type string; default "rwsdn_odl"; } } container mock { leaf username { type string; } leaf plugin-name { type string; default "rwsdn_mock"; } } container sdnsim { leaf username { type string; } leaf topology-source { type string; } leaf plugin-name { type string; default "rwsdn_sim"; } } container openstack { leaf key { type string; mandatory true; } leaf secret { type string; mandatory true; } leaf auth_url { type string; mandatory true; } leaf tenant { type string; mandatory true; } leaf admin { type boolean; default false; } leaf user-domain { type string; default "Default"; description "Domain of the OpenStack user"; } leaf project-domain { type string; default "Default"; description "Domain of the OpenStack project"; } leaf region { type string; default "RegionOne"; } leaf plugin-name { type string; default "rwsdn_openstack"; } leaf cert-validate { type boolean; default false; description "Certificate validatation policy in case of SSL/TLS connection"; } } } } container sdn-accounts { list sdn-account-list { rwpb:msg-new SDNAccount; key "name"; leaf name { type string; } uses sdn-provider-auth; uses connection-status; } } container vnffgs { list vnffg-chain { key "name"; rwpb:msg-new VNFFGChain; leaf name { type string; } list vnf-chain-path { key "order"; leaf order { type uint32; description " Order of the VNF in VNFFG chain"; } leaf service-function-type { type string; } leaf nsh-aware { type boolean; } leaf transport-type { type string; } list vnfr-ids { key "vnfr-id"; leaf vnfr-id { type yang:uuid; } leaf vnfr-name { type string; } leaf mgmt-address { type inet:ip-address; } leaf mgmt-port { type inet:port-number; } list vdu-list { key "vm-id port-id"; leaf port-id { rwpb:field-inline "true"; rwpb:field-string-max 64; type string; } leaf vm-id { rwpb:field-inline "true"; rwpb:field-string-max 64; type string; } leaf name { type string; } leaf address { type inet:ip-address; } leaf port { type inet:port-number; } } leaf sff-name { description "SFF name useful for non OVS based SFF"; type string; } } } list sff { rwpb:msg-new VNFFGSff; key "name"; leaf name { type string; } leaf function-type { type string; } leaf mgmt-address { type inet:ip-address; } leaf mgmt-port { type inet:port-number; } list dp-endpoints { key "name"; leaf name { type string; } leaf address { type inet:ip-address; } leaf port { type inet:port-number; } } list vnfr-list { key "vnfr-name"; leaf vnfr-name { type string; } } } leaf classifier-name { type string; } } } container vnffg-rendered-paths { rwpb:msg-new VNFFGRenderedPaths; list vnffg-rendered-path { key "name"; rwpb:msg-new VNFFGRenderedPath; config false; leaf name { type string; } leaf path-id { description "Unique Identifier for the service path"; type uint32; } list rendered-path-hop { key "hop-number"; leaf hop-number { type uint8; } leaf service-index { description "Location within the service path"; type uint8; } leaf vnfr-name { type string; } container service-function-forwarder { leaf name { description "Service Function Forwarder name"; type string; } leaf ip-address { description "Service Function Forwarder Data Plane IP address"; type inet:ip-address; } leaf port { description "Service Function Forwarder Data Plane port"; type inet:port-number; } } } } } container vnffg-classifiers { list vnffg-classifier { key "name"; rwpb:msg-new VNFFGClassifier; leaf name { type string; } leaf rsp-name { type string; } leaf rsp-id { type yang:uuid; } leaf port-id { rwpb:field-inline "true"; rwpb:field-string-max 64; type string; } leaf vm-id { rwpb:field-inline "true"; rwpb:field-string-max 64; type string; } leaf sff-name { type string; } container vnffg-metadata { leaf ctx1 { type string; } leaf ctx2 { type string; } leaf ctx3 { type string; } leaf ctx4 { type string; } } list match-attributes { description "List of match attributes."; key "name"; leaf name { description "Name for the Access list"; type string; } leaf ip-proto { description "IP Protocol."; type uint8; } leaf source-ip-address { description "Source IP address."; type inet:ip-prefix; } leaf destination-ip-address { description "Destination IP address."; type inet:ip-prefix; } leaf source-port { description "Source port number."; type inet:port-number; } leaf destination-port { description "Destination port number."; type inet:port-number; } } //match-attributes } } } /* vim: set ts=2:sw=2: */