Add create instances
[doctor.git] / tests / identity_auth.py
index 4726ca3..c94893f 100644 (file)
@@ -9,26 +9,36 @@
 
 import os
 
-from keystoneauth1.identity import v2
-from keystoneauth1.identity import v3
+from keystoneauth1 import loading
+from keystoneauth1 import session
 
 
-def get_identity_auth():
+def get_identity_auth(username=None, password=None, project=None):
     auth_url = os.environ['OS_AUTH_URL']
-    username = os.environ['OS_USERNAME']
-    password = os.environ['OS_PASSWORD']
-    user_domain_name = os.environ.get('OS_USER_DOMAIN_NAME')
-    project_name = os.environ.get('OS_PROJECT_NAME') or os.environ.get('OS_TENANT_NAME')
-    project_domain_name = os.environ.get('OS_PROJECT_DOMAIN_NAME')
-    if auth_url.endswith('v3'):
-        return v3.Password(auth_url=auth_url,
-                           username=username,
-                           password=password,
-                           user_domain_name=user_domain_name,
-                           project_name=project_name,
-                           project_domain_name=project_domain_name)
-    else:
-        return v2.Password(auth_url=auth_url,
-                           username=username,
-                           password=password,
-                           tenant_name=project_name)
+    username = username or os.environ['OS_USERNAME']
+    password = password or os.environ['OS_PASSWORD']
+    user_domain_name = os.environ.get('OS_USER_DOMAIN_NAME') or 'default'
+    user_domain_id = os.environ.get('OS_USER_DOMAIN_ID') or 'default'
+    project_name = project or os.environ.get('OS_PROJECT_NAME') \
+                   or os.environ.get('OS_TENANT_NAME')
+    project_domain_name = os.environ.get('OS_PROJECT_DOMAIN_NAME') or 'default'
+    project_domain_id = os.environ.get('OS_PROJECT_DOMAIN_ID') or 'default'
+
+    loader = loading.get_plugin_loader('password')
+    return loader.load_from_options(
+        auth_url=auth_url,
+        username=username,
+        password=password,
+        user_domain_name=user_domain_name,
+        user_domain_id=user_domain_id,
+        project_name=project_name,
+        tenant_name=project_name,
+        project_domain_name=project_domain_name,
+        project_domain_id=project_domain_id)
+
+
+def get_session(auth=None):
+    """Get a user credentials auth session."""
+    if auth is None:
+        auth = get_identity_auth()
+    return session.Session(auth=auth)