Support both keystone v2.0 and v3 authentication

Change-Id: Iae2aad3b3d78cc901ccbdde8bab62c75ae1e2e92
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
index b9b96de..c311889 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
@@ -78,20 +78,43 @@
     private static final String DEVICE_OWNER_GW = "network:router_gateway";
     private static final String DEVICE_OWNER_IFACE = "network:router_interface";
 
+    private static final String KEYSTONE_V2 = "v2.0";
+    private static final String KEYSTONE_V3 = "v3";
+
     @Override
     protected void execute() {
         OpenstackSecurityGroupAdminService osSgAdminService = get(OpenstackSecurityGroupAdminService.class);
         OpenstackNetworkAdminService osNetAdminService = get(OpenstackNetworkAdminService.class);
         OpenstackRouterAdminService osRouterAdminService = get(OpenstackRouterAdminService.class);
 
-        OSClient.OSClientV3 osClient;
-        try {
-            osClient = OSFactory.builderV3()
-                    .endpoint(this.endpoint)
-                    .credentials(this.user, this.password, Identifier.byName(DOMAIN_DEFUALT))
-                    .scopeToProject(Identifier.byName(this.tenant), Identifier.byName(DOMAIN_DEFUALT))
-                    .authenticate();
+        OSClient osClient;
 
+        try {
+            if (endpoint != null) {
+                if (endpoint.contains(KEYSTONE_V2)) {
+                    osClient = OSFactory.builderV2()
+                            .endpoint(this.endpoint)
+                            .tenantName(this.tenant)
+                            .credentials(this.user, this.password)
+                            .authenticate();
+                } else if (endpoint.contains(KEYSTONE_V3)) {
+
+                    Identifier project = Identifier.byName(this.tenant);
+                    Identifier domain = Identifier.byName(DOMAIN_DEFUALT);
+
+                    osClient = OSFactory.builderV3()
+                            .endpoint(this.endpoint)
+                            .credentials(this.user, this.password, domain)
+                            .scopeToProject(project, domain)
+                            .authenticate();
+                } else {
+                    print("Unrecognized keystone version type");
+                    return;
+                }
+            } else {
+                print("Need to specify a valid endpoint");
+                return;
+            }
         } catch (AuthenticationException e) {
             print("Authentication failed");
             return;