aboutsummaryrefslogtreecommitdiffstats
path: root/moon_manager/moon_manager/plugins/moon_keystone_plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'moon_manager/moon_manager/plugins/moon_keystone_plugin.py')
-rw-r--r--moon_manager/moon_manager/plugins/moon_keystone_plugin.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/moon_manager/moon_manager/plugins/moon_keystone_plugin.py b/moon_manager/moon_manager/plugins/moon_keystone_plugin.py
new file mode 100644
index 00000000..0fb9b363
--- /dev/null
+++ b/moon_manager/moon_manager/plugins/moon_keystone_plugin.py
@@ -0,0 +1,77 @@
+# Software Name: MOON
+
+# Version: 5.4
+
+# SPDX-FileCopyrightText: Copyright (c) 2018-2020 Orange and its contributors
+# SPDX-License-Identifier: Apache-2.0
+
+# This software is distributed under the 'Apache License 2.0',
+# the text of which is available at 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+# or see the "LICENSE" file for more details.
+
+"""
+Plugin to request OpenStack infrastructure:
+- Keystone
+"""
+
+from moon_manager.plugins.moon_openstack_plugin import *
+
+LOGGER = logging.getLogger("moon.manager.plugins.moon_keystone_plugin")
+
+PLUGIN_TYPE = "information"
+_ = str
+
+
+class KeystoneConnector(OpenStackConnector):
+
+ def get_items(self, item_id=None, **kwargs):
+ username = ""
+ domain_id = ""
+ if "username" in kwargs:
+ username = kwargs['username']
+ if "domain_id" in kwargs:
+ domain_id = kwargs['domain_id']
+ if username and domain_id:
+ return self._get(endpoint="/users?name={}&domain_id={}".format(username, domain_id),
+ _exception=KeystoneUserError)
+ elif username:
+ return self._get(endpoint="/users?name={}".format(username),
+ _exception=KeystoneUserError)
+ elif domain_id:
+ return self._get(endpoint="/users?domain_id={}".format(domain_id),
+ _exception=KeystoneUserError)
+ else:
+ return self._get(endpoint="/users",
+ _exception=KeystoneUserError)
+
+ def add_item(self, item_id=None, **kwargs):
+ if 'name' not in kwargs:
+ raise KeystoneError("Cannot find name in request")
+ _user = {
+ "user": {
+ "enabled": True,
+ "name": kwargs['name'],
+ }
+ }
+ if 'project' in kwargs:
+ _user['user']['default_project_id'] = kwargs['project']
+ if 'domain' in kwargs:
+ _user['user']['domain_id'] = kwargs['domain']
+ if 'password' in kwargs:
+ _user['user']['password'] = kwargs['password']
+ try:
+ return self._post(endpoint="/users/",
+ data=_user,
+ _exception=KeystoneUserError)
+ except KeystoneUserConflict:
+ return True
+
+ def update_item(self, item_id, **kwargs):
+ raise NotImplementedError() # pragma: no cover
+
+ def delete_item(self, item_id, **kwargs):
+ raise NotImplementedError() # pragma: no cover
+
+
+class Connector(KeystoneConnector):
+ pass