diff options
Diffstat (limited to 'moonv4/moon_orchestrator')
-rw-r--r-- | moonv4/moon_orchestrator/conf/plugins/session.py | 67 | ||||
-rw-r--r-- | moonv4/moon_orchestrator/moon_orchestrator/api/containers.py | 2 | ||||
-rw-r--r-- | moonv4/moon_orchestrator/moon_orchestrator/server.py | 2 |
3 files changed, 69 insertions, 2 deletions
diff --git a/moonv4/moon_orchestrator/conf/plugins/session.py b/moonv4/moon_orchestrator/conf/plugins/session.py new file mode 100644 index 00000000..6fa2cfe2 --- /dev/null +++ b/moonv4/moon_orchestrator/conf/plugins/session.py @@ -0,0 +1,67 @@ +# Copyright 2015 Open Platform for NFV Project, Inc. and its contributors +# This software is distributed under the terms and conditions of the 'Apache-2.0' +# license which can be found in the file 'LICENSE' in this package distribution +# or at 'http://www.apache.org/licenses/LICENSE-2.0'. + +import os +import time +import hashlib +from oslo_config import cfg +from oslo_log import log as logging +import oslo_messaging +from moon_orchestrator.dockers import DockerBase + +LOG = logging.getLogger(__name__) +CONF = cfg.CONF +DOMAIN = "moon_orchestrator" + +__CWD__ = os.path.dirname(os.path.abspath(__file__)) +# TODO (asteroide): select the right template folder +TEMPLATES_FOLDER = os.path.join(__CWD__, "..", "conf", "dockers") +# TODO (asteroide): add specific configuration options for that plugin + + +class AuthzFunction(DockerBase): + + id = "moon_session_function" + __build = """RUN mkdir -p /etc/moon/ +COPY conf /etc/moon/ +ADD dist/{py_pkg}.tar.gz /root +WORKDIR /root/{py_pkg} +RUN pip3 install -r requirements.txt +RUN pip3 install . +""" + + def __init__(self, uuid, conf_file="", docker=None, network_config=None): + self.id = "session_"+hashlib.sha224(uuid.encode("utf-8")).hexdigest() + super(AuthzFunction, self).__init__( + name="moon_authz", + run_cmd=["python3", "-m", "moon_authz", uuid], + conf_file=conf_file, + docker=docker, + network_config=network_config, + build_cmd=self.__build, + id=self.id, + tag="" + # tag=CONF.security_function.container + ) + # note(asteroide): time to let the new docker boot + time.sleep(3) + # self.get_status() + + def get_status(self): + return True + # transport = oslo_messaging.get_transport(CONF) + # target = oslo_messaging.Target(topic=self.id, version='1.0') + # client = oslo_messaging.RPCClient(transport, target) + # LOG.info("Calling Status on {}".format(self.id)) + # ret = client.call({"component_id": self.id}, 'get_status', args=None) + # LOG.info(ret) + # return ret + + +def run(uuid, conf_file="", docker=None, network_config=None): + return AuthzFunction(uuid, + conf_file=conf_file, + docker=docker, + network_config=network_config) diff --git a/moonv4/moon_orchestrator/moon_orchestrator/api/containers.py b/moonv4/moon_orchestrator/moon_orchestrator/api/containers.py index 3572d615..2ed5b266 100644 --- a/moonv4/moon_orchestrator/moon_orchestrator/api/containers.py +++ b/moonv4/moon_orchestrator/moon_orchestrator/api/containers.py @@ -109,7 +109,7 @@ class Containers(object): "meta_rule_id": meta_rule, "genre": policy_value['genre'], "keystone_project_id": keystone_project_id, - "container_id": "authz_"+hashlib.sha224(pre_container_id.encode("utf-8")).hexdigest() + "container_id": policy_value['genre']+"_"+hashlib.sha224(pre_container_id.encode("utf-8")).hexdigest() }) return {"containers": self.components[ctx["id"]]} # function_components = [] diff --git a/moonv4/moon_orchestrator/moon_orchestrator/server.py b/moonv4/moon_orchestrator/moon_orchestrator/server.py index 4fc9d5fd..e6d28c23 100644 --- a/moonv4/moon_orchestrator/moon_orchestrator/server.py +++ b/moonv4/moon_orchestrator/moon_orchestrator/server.py @@ -62,7 +62,7 @@ class DockerManager: :param uuid: the uuid of the intra_extension linked to that component :return: the created component """ - component_id = "authz_"+hashlib.sha224(uuid.encode("utf-8")).hexdigest() + component_id = component+"_"+hashlib.sha224(uuid.encode("utf-8")).hexdigest() if component_id not in CONTAINERS: plug = load_plugin(component) LOG.info("Creating {} with id {}".format(component, uuid)) |