aboutsummaryrefslogtreecommitdiffstats
path: root/moon_engine/moon_engine/authz_driver.py
diff options
context:
space:
mode:
Diffstat (limited to 'moon_engine/moon_engine/authz_driver.py')
-rw-r--r--moon_engine/moon_engine/authz_driver.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/moon_engine/moon_engine/authz_driver.py b/moon_engine/moon_engine/authz_driver.py
new file mode 100644
index 00000000..d6f0284b
--- /dev/null
+++ b/moon_engine/moon_engine/authz_driver.py
@@ -0,0 +1,68 @@
+# 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.
+
+
+"""Authorization compute Driver"""
+
+import logging
+from moon_engine.api import configuration
+from moon_engine.api.authz import authz
+
+LOGGER = logging.getLogger("moon.manager.authz_driver")
+
+
+AuthzManager = None
+
+
+class Driver:
+ """
+ Generic driver
+ """
+
+ def __init__(self, driver_name, engine_name):
+ self.name = driver_name
+ self.plug = configuration.get_authz_driver()
+ self.driver = self.plug.Connector(driver_name, engine_name)
+
+
+class AuthzDriver(Driver):
+ """
+ Driver for authorization computation
+ """
+
+ def __init__(self, driver_name, engine_name):
+ super(AuthzDriver, self).__init__(driver_name, engine_name)
+ self.engine = engine_name
+
+ def get_authz(self, subject_name, object_name, action_name):
+ """
+ Get the result of the authorization process
+ :param subject_name:
+ :param object_name:
+ :param action_name:
+ :return:
+ """
+ raise NotImplementedError() # pragma: no cover
+
+
+def init():
+ """Initialize the managers
+
+ :return: nothing
+ """
+ global AuthzManager
+
+ LOGGER.info("Initializing driver")
+ conf = configuration.get_configuration("authorization")
+
+ AuthzManager = authz.AuthzManager(
+ AuthzDriver(conf['driver'], conf.get('url'))
+ )