Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/system/openconfig-aaa-tacacs.yang b/models/openconfig/src/main/yang/system/openconfig-aaa-tacacs.yang
new file mode 100644
index 0000000..b1f6472
--- /dev/null
+++ b/models/openconfig/src/main/yang/system/openconfig-aaa-tacacs.yang
@@ -0,0 +1,130 @@
+submodule openconfig-aaa-tacacs {
+
+  yang-version "1";
+
+  belongs-to "openconfig-aaa" {
+    prefix "oc-aaa";
+  }
+
+  // import some basic types
+  import ietf-inet-types { prefix inet; }
+  import openconfig-extensions { prefix oc-ext; }
+  import openconfig-aaa-types { prefix oc-aaa-types; }
+  import openconfig-types { prefix oc-types; }
+
+
+  // meta
+  organization "OpenConfig working group";
+
+  contact
+    "OpenConfig working group
+    www.openconfig.net";
+
+  description
+    "This module defines configuration and operational state data
+    related to the TACACS+ protocol for authentication,
+    authorization, and accounting.";
+
+  oc-ext:openconfig-version "0.2.0";
+
+  revision "2017-07-06" {
+    description
+      "Move to oc-inet types, add IETF attribution, add RADIUS
+      counters, changed password leaf names to indicate hashed";
+    reference "0.2.0";
+  }
+
+  revision "2017-01-29" {
+    description
+      "Initial public release";
+    reference "0.1.0";
+  }
+
+  // extension statements
+
+  // feature statements
+
+  // identity statements
+
+  identity TACACS {
+    base oc-aaa-types:AAA_SERVER_TYPE;
+    description
+      "Terminal Access Controller Access Control System (TACACS+)
+      AAA server";
+    reference
+      "The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
+      RFC 1492 - An Access Control Protocol, Sometimes Called
+      TACACS";
+  }
+
+  // typedef statements
+
+  // grouping statements
+
+  grouping aaa-tacacs-server-config {
+    description
+      "Configuration data for a TACACS+ server";
+
+    leaf port {
+      type inet:port-number;
+      default 49;
+      description
+        "The port number on which to contact the TACACS server";
+    }
+
+    leaf secret-key {
+      type oc-types:routing-password;
+      description
+        "The unencrypted shared key used between the authentication
+        server and the device.";
+    }
+
+    leaf source-address {
+      type inet:ip-address;
+      description
+        "Source IP address to use in messages to the TACACS server";
+    }
+  }
+
+  grouping aaa-tacacs-server-state {
+    description
+      "Operational state data for a TACACS+ server";
+  }
+
+  grouping aaa-tacacs-server-top {
+    description
+      "Top-level grouping for TACACS+ sever data";
+
+    container tacacs {
+      description
+        "Top-level container for TACACS+ server data";
+
+      container config {
+        description
+          "Configuration data for TACACS+ server";
+
+        uses aaa-tacacs-server-config;
+      }
+
+      container state {
+
+        config false;
+
+        description
+          "Operational state data for TACACS+ server";
+
+        uses aaa-tacacs-server-config;
+        uses aaa-tacacs-server-state;
+      }
+    }
+  }
+
+  // data definition statements
+
+  // augment statements
+
+  // rpc statements
+
+  // notification statements
+
+}
\ No newline at end of file