Initial check-in Open ROADM app v1.2.1 (ONOS-5354).

Change-Id: I077b40c308efe257af0e23f0d87de1215c3789ad
diff --git a/apps/openroadm/yangmodel/src/main/yang/org-openroadm-syslog.yang b/apps/openroadm/yangmodel/src/main/yang/org-openroadm-syslog.yang
new file mode 100644
index 0000000..b0d7709
--- /dev/null
+++ b/apps/openroadm/yangmodel/src/main/yang/org-openroadm-syslog.yang
@@ -0,0 +1,334 @@
+module org-openroadm-syslog {
+  namespace "http://org/openroadm/syslog";
+  prefix org-openroadm-syslog;
+
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  organization "Open ROADM MSA";
+  contact
+    "OpenROADM.org";
+  description
+    "This module contains a collection of YANG definitions 
+     for Syslog configuration.
+     
+     Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016, 
+     AT&T Intellectual Property.  All other rights reserved.
+     
+     Redistribution and use in source and binary forms, with or without modification, 
+     are permitted provided that the following conditions are met:
+     
+     * Redistributions of source code must retain the above copyright notice, this 
+       list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright notice, 
+       this list of conditions and the following disclaimer in the documentation and/or 
+       other materials provided with the distribution.
+     * Neither the Members of the Open ROADM MSA Agreement nor the names of its 
+       contributors may be used to endorse or promote products derived from this software 
+       without specific prior written permission.
+     
+     THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS'' 
+     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
+     IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT, 
+     INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
+     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA, 
+     OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+     POSSIBILITY OF SUCH DAMAGE.
+     
+     Also contains code components extracted from IETF Interfaces.  These code components
+     are copyrighted and licensed as follows:
+     
+     Copyright (c) 2016 IETF Trust and the persons identified as the document authors.
+     All rights reserved.
+     
+     This document is subject to BCP 78 and the IETF Trust’s Legal Provisions Relating
+     to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of
+     publication of this document. Please review these documents carefully, as they
+     describe your rights and restrictions with respect to this document. Code Components
+     extracted from this document must include Simplified BSD License text as described in
+     Section 4.e of the Trust Legal Provisions and are provided without warranty as
+     described in the Simplified BSD License.";
+  reference "RFC 5424: The Syslog Protocol";
+
+  revision 2016-10-14 {
+    description
+      "Version 1.2";
+  }
+
+  feature selector-sevop-config {
+    description
+      "This feature represents the ability to select messages 
+       using the additional operators equal to, or not equal to 
+       when comparing the Syslog message severity.";
+  }
+
+  feature selector-match-config {
+    description
+      "This feature represents the ability to select messages based
+       on a Posix 1003.2 regular expression pattern match.";
+  }
+
+  // copied from draft of ietf-ietf-syslog-types.yang
+  identity syslog-facility {
+    description
+      "The base identity to represent syslog facilities";
+  }
+
+  // copied from draft of ietf-ietf-syslog-types.yang;
+  // extended the enum set to include all and none
+  typedef severity {
+    type enumeration {
+      enum "emergency" {
+        value 0;
+        description
+          "Emergency Level Msg";
+      }
+      enum "alert" {
+        value 1;
+        description
+          "Alert Level Msg";
+      }
+      enum "critical" {
+        value 2;
+        description
+          "Critical Level Msg";
+      }
+      enum "error" {
+        value 3;
+        description
+          "Error Level Msg";
+      }
+      enum "warning" {
+        value 4;
+        description
+          "Warning Level Msg";
+      }
+      enum "notice" {
+        value 5;
+        description
+          "Notification Level Msg";
+      }
+      enum "info" {
+        value 6;
+        description
+          "Informational Level Msg";
+      }
+      enum "debug" {
+        value 7;
+        description
+          "Debugging Level Msg";
+      }
+      enum "all" {
+        value 8;
+        description
+          "This enum describes the case where all severities 
+           are selected.";
+      }
+      enum "none" {
+        value 9;
+        description
+          "This enum describes the case where no severities 
+           are selected.";
+      }
+    }
+    description
+      "The definitions for Syslog message severity as per RFC 5424.
+       Extended the RFC definition with enums for all and none";
+  }
+
+  grouping syslog-severity {
+    description
+      "This grouping defines the Syslog severity which is used to 
+       select log messages.";
+    leaf severity {
+      type severity;
+      mandatory true;
+      description
+        "This leaf specifies the Syslog message severity. When 
+         severity is specified, the default severity comparison 
+         is all messages of the specified severity and greater are 
+         selected. 'all' is a special case which means all severities
+         are selected. 'none' is a special case which means that
+         no selection should occur or disable this filter.";
+    }
+    leaf severity-operator {
+      when
+        "../severity != 'all' and
+                    ../severity != 'none'" {
+        description
+          "The severity-operator is not applicable for severity 'all' or 
+           severity 'none'";
+      }
+      if-feature selector-sevop-config;
+      type enumeration {
+        enum "equals-or-higher" {
+          description
+            "This enum specifies all messages of the specified 
+             severity and higher are logged according to the 
+             given log-action";
+        }
+        enum "equals" {
+          description
+            "This enum specifies all messages that are for 
+             the specified severity are logged according to the 
+             given log-action";
+        }
+        enum "not-equals" {
+          description
+            "This enum specifies all messages that are not for 
+             the specified severity are logged according to the 
+             given log-action";
+        }
+      }
+      default "equals-or-higher";
+      description
+        "This leaf describes the option to specify how the 
+         severity comparison is performed.";
+    }
+  }
+
+  grouping syslog-selector {
+    description
+      "This grouping defines a Syslog selector which is used to 
+       select log messages for the log-action (buffer, file, 
+       etc). Choose one of the following:
+         no-log-facility
+         log-facility [<facility> <severity>...]";
+    container log-selector {
+      description
+        "This container describes the log selector parameters 
+         for Syslog.";
+      choice selector-facility {
+        mandatory true;
+        description
+          "This choice describes the option to specify no 
+           facilities, or a specific facility which can be
+           all for all facilities.";
+        case no-log-facility {
+          description
+            "This case specifies no facilities will match when 
+             comparing the Syslog message facility. This is a 
+             method that can be used to effectively disable a 
+             particular log-action (buffer, file, etc).";
+          leaf no-facilities {
+            type empty;
+            description
+              "This leaf specifies that no facilities are selected 
+               for this log-action.";
+          }
+        }
+        case log-facility {
+          description
+            "This case specifies one or more specified facilities 
+             will match when comparing the Syslog message facility.";
+          list log-facility {
+            key "facility";
+            description
+              "This list describes a collection of Syslog 
+               facilities and severities.";
+            leaf facility {
+              type union {
+                type identityref {
+                  base syslog-facility;
+                }
+                type enumeration {
+                  enum "all" {
+                    description
+                      "This enum describes the case where all 
+                       facilities are requested.";
+                  }
+                }
+              }
+              description
+                "The leaf uniquely identifies a Syslog facility.";
+            }
+            uses syslog-severity;
+          }
+        }
+      }
+    }
+  }
+
+  container syslog {
+    description
+      "This container describes the configuration parameters for 
+       Syslog.";
+    container log-actions {
+      description
+        "This container describes the log-action parameters 
+         for Syslog.";
+      container remote {
+        description
+          "This container describes the configuration parameters for 
+           remote logging.";
+        list destination {
+          key "name";
+          description
+            "This list describes a collection of remote logging 
+             destinations.";
+          leaf name {
+            type string;
+            description
+              "An arbitrary name for the endpoint to connect to.";
+          }
+          choice transport {
+            mandatory true;
+            description
+              "This choice describes the transport option.";
+            case tcp {
+              container tcp {
+                description
+                  "This container describes the TCP transport
+                   options.";
+                reference "RFC 6587: Transmission of Syslog Messages over TCP";
+                leaf address {
+                  type inet:host;
+                  description
+                    "The leaf uniquely specifies the address of 
+                     the remote host. One of the following must 
+                     be specified: an ipv4 address, an ipv6 
+                     address, or a host name.";
+                }
+                leaf port {
+                  type inet:port-number;
+                  default "514";
+                  description
+                    "This leaf specifies the port number used to 
+                     deliver messages to the remote server.";
+                }
+              }
+            }
+            case udp {
+              container udp {
+                description
+                  "This container describes the UDP transport
+                   options.";
+                reference "RFC 5426: Transmission of Syslog Messages over UDP";
+                leaf address {
+                  type inet:host;
+                  description
+                    "The leaf uniquely specifies the address of 
+                     the remote host. One of the following must be 
+                     specified: an ipv4 address, an ipv6 address, 
+                     or a host name.";
+                }
+                leaf port {
+                  type inet:port-number;
+                  default "514";
+                  description
+                    "This leaf specifies the port number used to 
+                     deliver messages to the remote server.";
+                }
+              }
+            }
+          }
+          uses syslog-selector;
+        }
+      }
+    }
+  }
+}