Introduce separate module,state to work with v3 only
This patch introduce new keystonev3 module and state that uses
os_client_config library for authenticaion and raw client to send
requests directly to API.
Since v3 resource structure/resource relation are completely different
we introduce new pillar keystone:client:resources:v3 which will contain
all resources we manage via v3 client.
The module,state implements basic functionality to manage:
* users
* projects
* services
* endpoints
* roles
Other resources will be added in separate patches when needed.
Bootstrap of keystone is done via bootstrap script in server.sls in
Queens as admin token is removed.
Related-Prod: PROD-19148
Change-Id: I10a7cf720955437e3757a1c9699e4a60e1327ba3
diff --git a/_modules/keystonev3/__init__.py b/_modules/keystonev3/__init__.py
new file mode 100644
index 0000000..9581cb1
--- /dev/null
+++ b/_modules/keystonev3/__init__.py
@@ -0,0 +1,88 @@
+try:
+ import os_client_config # noqa
+ from keystoneauth1 import exceptions as ka_exceptions # noqa
+ REQUIREMENTS_MET = True
+except ImportError:
+ REQUIREMENTS_MET = False
+
+from keystonev3 import endpoints
+from keystonev3 import roles
+from keystonev3 import services
+from keystonev3 import projects
+from keystonev3 import users
+
+endpoint_get_details = endpoints.endpoint_get_details
+endpoint_update = endpoints.endpoint_update
+endpoint_delete = endpoints.endpoint_delete
+endpoint_list = endpoints.endpoint_list
+endpoint_create = endpoints.endpoint_create
+
+role_assignment_list = roles.role_assignment_list
+role_assignment_check = roles.role_assignment_check
+role_add = roles.role_add
+role_delete = roles.role_delete
+role_get_details = roles.role_get_details
+role_update = roles.role_update
+role_delete = roles.role_delete
+role_list = roles.role_list
+role_create = roles.role_create
+
+service_get_details = services.service_get_details
+service_update = services.service_update
+service_delete = services.service_delete
+service_list = services.service_list
+service_create = services.service_create
+
+project_get_details = projects.project_get_details
+project_update = projects.project_update
+project_delete = projects.project_delete
+project_list = projects.project_list
+project_create = projects.project_create
+
+user_get_details = users.user_get_details
+user_update = users.user_update
+user_delete = users.user_delete
+user_list = users.user_list
+user_create = users.user_create
+
+
+__all__ = (
+ 'endpoint_get_details',
+ 'endpoint_update',
+ 'endpoint_delete',
+ 'endpoint_list',
+ 'endpoint_create',
+ 'role_assignment_list',
+ 'role_assignment_check',
+ 'role_add',
+ 'role_delete',
+ 'role_get_details',
+ 'role_update',
+ 'role_delete',
+ 'role_list',
+ 'role_create',
+ 'service_get_details',
+ 'service_update',
+ 'service_delete',
+ 'service_list',
+ 'service_create',
+ 'project_get_details',
+ 'project_update',
+ 'project_delete',
+ 'project_list',
+ 'project_create',
+ 'user_get_details',
+ 'user_update',
+ 'user_delete',
+ 'user_list',
+ 'user_create'
+)
+
+
+def __virtual__():
+ """Only load keystonev3 if requirements are available."""
+ if REQUIREMENTS_MET:
+ return 'keystonev3'
+ else:
+ return False, ("The keystonev3 execution module cannot be loaded: "
+ "os_client_config or keystoneauth are unavailable.")