--- /dev/null
+
+/*
+ *
+ * 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.
+ *
+ */
+
+
+
+/**
+ * @file rw-conman.yang
+ * @author Manish Patel
+ * @date 2015/10/27
+ * @brief Service Orchestrator configuration yang
+ */
+
+module rw-conman
+{
+ namespace "http://riftio.com/ns/riftware-1.0/rw-conman";
+ prefix "rw-conman";
+
+ import rw-pb-ext {
+ prefix "rwpb";
+ }
+
+ import rw-cli-ext {
+ prefix "rwcli";
+ }
+
+ import nsr {
+ prefix "nsr";
+ }
+
+ import vnfr {
+ prefix "vnfr";
+ }
+
+ import rw-vlr {
+ prefix "rwvlr";
+ }
+
+ import rw-yang-types {
+ prefix "rwt";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import mano-base {
+ prefix "manobase";
+ }
+
+ import mano-types {
+ prefix "manotypes";
+ }
+
+ import rw-config-agent {
+ prefix "rw-config-agent";
+ }
+
+ revision 2015-10-27 {
+ description
+ "Initial revision.";
+ }
+
+ // typedef ro-endpoint-method {
+ // type enumeration {
+ // enum netconf;
+ // enum restconf;
+ // }
+ // }
+
+ grouping ro-endpoint {
+ // leaf ro-endpoint-method {
+ // description "interface between CM & RO, defaults to netconf";
+ // type ro-endpoint-method;
+ // default netconf;
+ // }
+ leaf ro-ip-address {
+ type inet:ip-address;
+ description "IP Address";
+ default "127.0.0.1";
+ }
+ leaf ro-port {
+ type inet:port-number;
+ description "Port Number";
+ default 2022;
+ }
+ leaf ro-username {
+ description "RO endpoint username";
+ type string;
+ default "admin";
+ }
+ leaf ro-password {
+ description "RO endpoint password";
+ type string;
+ default "admin";
+ }
+ }
+
+ grouping vnf-cfg-items {
+ leaf configuration-file {
+ description "Location of the confguration file on CM system";
+ type string;
+ }
+ leaf translator-script {
+ description "Script that translates the templates in the configuration-file using VNFR information
+ Currently, we only use IP address translations.
+ configuration will use connection point name instead of IP addresses.";
+ type string;
+ }
+ }
+
+ container cm-config {
+ description "Service Orchestrator specific configuration";
+ rwpb:msg-new "SoConfig";
+ rwcli:new-mode "cm-config";
+
+ container ro-endpoint {
+ description "Resource Orchestrator endpoint ip address";
+ rwpb:msg-new "RoEndpoint";
+ uses ro-endpoint;
+ }
+
+ //uses vnf-cfg-items;
+
+ list nsr {
+ key "id";
+ leaf id {
+ description "Indicates NSR bringup complete, now initiate configuration of the NSR";
+ type yang:uuid;
+ }
+ }
+ }// cm-config
+
+ // =================== SHOW ==================
+ typedef record-state {
+ type enumeration {
+ enum init;
+ enum received;
+ enum cfg-delay;
+ enum cfg-process;
+ enum cfg-process-failed;
+ enum cfg-sched;
+ enum connecting;
+ enum failed-connection;
+ enum netconf-connected;
+ enum netconf-ssh-connected;
+ enum restconf-connected;
+ enum cfg-send;
+ enum cfg-failed;
+ enum ready-no-cfg;
+ enum ready;
+ }
+ }
+
+ // TBD: Do we need this typedef, currently not used anywhere
+ typedef cfg-type {
+ type enumeration {
+ enum none;
+ enum scriptconf;
+ enum netconf;
+ enum restconf;
+ enum jujuconf;
+ }
+ }
+
+
+ // This is also used by RO (Resource Orchestrator) to indicate NSR is ready
+ // It will only fill in IDs
+ container cm-state {
+ rwpb:msg-new "CmOpdata";
+ config false;
+ description "CM NS & VNF states";
+
+ leaf states {
+ description "CM various states";
+ type string;
+ }
+
+ list cm-nsr {
+ description "List of NS Records";
+ key "id";
+ leaf id {
+ type yang:uuid;
+ }
+ leaf name {
+ description "NSR name.";
+ type string;
+ }
+ leaf state {
+ description "State of NSR";
+ type record-state;
+ }
+ leaf state-details {
+ description "Details of the state of NSR, in case of errors";
+ type string;
+ }
+
+ list cm-vnfr {
+ description "List of VNF Records within NS Record";
+ key "id";
+ leaf id {
+ type yang:uuid;
+ }
+ leaf name {
+ description "VNFR name.";
+ type string;
+ }
+ leaf state {
+ description "Last known state of this VNFR";
+ type record-state;
+ }
+ container mgmt-interface {
+ leaf ip-address {
+ type inet:ip-address;
+ }
+ leaf port {
+ type inet:port-number;
+ }
+ }
+ leaf cfg-type {
+ type string;
+ }
+ leaf cfg-location {
+ type inet:uri;
+ }
+ list connection-point {
+ key "name";
+ leaf name {
+ description "Connection Point name";
+ type string;
+ }
+ leaf ip-address {
+ description "IP address assigned to this connection point";
+ type inet:ip-address;
+ }
+ }
+ } // list VNFR
+ } // list NSR
+ } // cm-state
+
+} // rw-conman