Feature 8532: Added new plugin authconn tacacs

Added plugin authconn_tacacs.py Created new function validate_user() to
contain the logic for username password validation.
In authconn_tacacs, validate_user will be redefined to connect to TACACS.
Created class variables which will be collections for internal mode. For TACACS mode,
they will be roles_tacacs, projects_tacacs etc.

Change-Id: Ib7fc8900860a492a79f6d0220bcdbb582edad017
Signed-off-by: K Sai Kiran <saikiran.k@tataelxsi.co.in>
diff --git a/osm_nbi/engine.py b/osm_nbi/engine.py
index 133cb9d..a647784 100644
--- a/osm_nbi/engine.py
+++ b/osm_nbi/engine.py
@@ -23,6 +23,7 @@
 
 from osm_nbi.authconn_keystone import AuthconnKeystone
 from osm_nbi.authconn_internal import AuthconnInternal
+from osm_nbi.authconn_tacacs import AuthconnTacacs
 from osm_nbi.base_topic import EngineException, versiontuple
 from osm_nbi.admin_topics import VimAccountTopic, WimAccountTopic, SdnTopic
 from osm_nbi.admin_topics import K8sClusterTopic, K8sRepoTopic, OsmRepoTopic
@@ -132,6 +133,9 @@
                 if config["authentication"]["backend"] == "keystone":
                     self.authconn = AuthconnKeystone(config["authentication"], self.db,
                                                      self.authenticator.role_permissions)
+                elif config["authentication"]["backend"] == "tacacs":
+                    self.authconn = AuthconnTacacs(config["authentication"], self.db,
+                                                   self.authenticator.role_permissions)
                 else:
                     self.authconn = AuthconnInternal(config["authentication"], self.db,
                                                      self.authenticator.role_permissions)