aboutsummaryrefslogtreecommitdiffstats
path: root/moon_interface
diff options
context:
space:
mode:
authorThomas Duval <thomas.duval@orange.com>2018-01-03 14:23:22 +0100
committerThomas Duval <thomas.duval@orange.com>2018-01-03 14:23:22 +0100
commit17d1bd8c4c8fbd81af85edbde059a28a852a0deb (patch)
tree1a1360e961945f770d3b0feca621ccbf6cd84773 /moon_interface
parent52d037e757ac2189978e1129f469929fe73a9b7f (diff)
Clean the code and fix some bugs
Change-Id: I540aeea0af749f86f4c2378864b17d277517b85f
Diffstat (limited to 'moon_interface')
-rw-r--r--moon_interface/moon_interface/__init__.py2
-rw-r--r--moon_interface/moon_interface/__main__.py4
-rw-r--r--moon_interface/moon_interface/api/authz.py12
-rw-r--r--moon_interface/moon_interface/api/generic.py45
-rw-r--r--moon_interface/moon_interface/authz_requests.py15
-rw-r--r--moon_interface/moon_interface/http_server.py19
-rw-r--r--moon_interface/moon_interface/server.py20
-rw-r--r--moon_interface/requirements.txt1
-rw-r--r--moon_interface/setup.py2
-rw-r--r--moon_interface/tests/unit_python/api/test_authz.py2
-rw-r--r--moon_interface/tests/unit_python/conftest.py3
11 files changed, 50 insertions, 75 deletions
diff --git a/moon_interface/moon_interface/__init__.py b/moon_interface/moon_interface/__init__.py
index 903c6518..6f964a63 100644
--- a/moon_interface/moon_interface/__init__.py
+++ b/moon_interface/moon_interface/__init__.py
@@ -3,4 +3,4 @@
# license which can be found in the file 'LICENSE' in this package distribution
# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
-__version__ = "0.1.0"
+__version__ = "4.3.2"
diff --git a/moon_interface/moon_interface/__main__.py b/moon_interface/moon_interface/__main__.py
index 517fdd60..9ad7bf2a 100644
--- a/moon_interface/moon_interface/__main__.py
+++ b/moon_interface/moon_interface/__main__.py
@@ -1,4 +1,4 @@
-from moon_interface.server import main
+from moon_interface.server import create_server
-server = main()
+server = create_server()
server.run()
diff --git a/moon_interface/moon_interface/api/authz.py b/moon_interface/moon_interface/api/authz.py
index a284ff3a..5739027d 100644
--- a/moon_interface/moon_interface/api/authz.py
+++ b/moon_interface/moon_interface/api/authz.py
@@ -10,15 +10,14 @@ from flask import request
from flask_restful import Resource
import logging
import pickle
-import requests
import time
from uuid import uuid4
from moon_interface.authz_requests import AuthzRequest
-__version__ = "0.1.0"
+__version__ = "4.3.1"
-LOG = logging.getLogger("moon.interface.api.authz." + __name__)
+logger = logging.getLogger("moon.interface.api.authz." + __name__)
def pdp_in_cache(cache, uuid):
@@ -72,6 +71,10 @@ def create_authz_request(cache, interface_name, manager_url, uuid, subject_name,
return cache.authz_requests[req_id]
+def delete_authz_request(cache, req_id):
+ cache.authz_requests.pop(req_id)
+
+
class Authz(Resource):
"""
Endpoint for authz requests
@@ -134,11 +137,14 @@ class Authz(Resource):
cpt = 0
while True:
if cpt > self.TIMEOUT*10:
+ delete_authz_request(self.CACHE, authz_request.request_id)
return {"result": False,
"message": "Authz request had timed out."}, 500
if authz_request.is_authz():
if authz_request.final_result == "Grant":
+ delete_authz_request(self.CACHE, authz_request.request_id)
return {"result": True, "message": ""}, 200
+ delete_authz_request(self.CACHE, authz_request.request_id)
return {"result": False, "message": ""}, 401
cpt += 1
time.sleep(0.1)
diff --git a/moon_interface/moon_interface/api/generic.py b/moon_interface/moon_interface/api/generic.py
index 51de9214..dadac259 100644
--- a/moon_interface/moon_interface/api/generic.py
+++ b/moon_interface/moon_interface/api/generic.py
@@ -6,14 +6,14 @@
Those API are helping API used to manage the Moon platform.
"""
-from flask_restful import Resource, request
+from flask_restful import Resource
import logging
import moon_interface.api
from python_moonutilities.security_functions import check_auth
-__version__ = "0.1.0"
+__version__ = "4.3.1"
-LOG = logging.getLogger("moon.interface.api." + __name__)
+logger = logging.getLogger("moon.interface.api." + __name__)
class Status(Resource):
@@ -35,42 +35,7 @@ class Status(Resource):
}
}
"""
- raise NotImplemented
-
-
-class Logs(Resource):
- """
- Endpoint for logs requests
- """
-
- __urls__ = ("/logs", "/logs/", "/logs/<string:component_id>")
-
- def get(self, component_id=None):
- """Get logs from the Moon platform
-
- :param component_id: the ID of the component your are looking for (optional)
- :return: [
- "2015-04-15-13:45:20
- "2015-04-15-13:45:21
- "2015-04-15-13:45:22
- "2015-04-15-13:45:23
- ]
- """
- filter_str = request.args.get('filter', '')
- from_str = request.args.get('from', '')
- to_str = request.args.get('to', '')
- event_number = request.args.get('event_number', '')
- try:
- event_number = int(event_number)
- except ValueError:
- event_number = None
- args = dict()
- args["filter"] = filter_str
- args["from"] = from_str
- args["to"] = to_str
- args["event_number"] = event_number
-
- raise NotImplemented
+ return {"result": True, "message": ""}
class API(Resource):
@@ -125,7 +90,7 @@ class API(Resource):
if endpoint_id in api_desc[group_id]:
return {group_id: {endpoint_id: api_desc[group_id][endpoint_id]}}
elif len(endpoint_id) > 0:
- LOG.error("Unknown endpoint_id {}".format(endpoint_id))
+ logger.error("Unknown endpoint_id {}".format(endpoint_id))
return {"error": "Unknown endpoint_id {}".format(endpoint_id)}
return {group_id: api_desc[group_id]}
return api_desc
diff --git a/moon_interface/moon_interface/authz_requests.py b/moon_interface/moon_interface/authz_requests.py
index 3f99cb93..87e21152 100644
--- a/moon_interface/moon_interface/authz_requests.py
+++ b/moon_interface/moon_interface/authz_requests.py
@@ -7,11 +7,11 @@ import logging
import itertools
import pickle
import requests
-from python_moonutilities import configuration, exceptions
-from python_moonutilities.security_functions import Context
+from python_moonutilities import exceptions
+from python_moonutilities.context import Context
from python_moonutilities.cache import Cache
-LOG = logging.getLogger("moon.interface.authz_requests")
+logger = logging.getLogger("moon.interface.authz_requests")
CACHE = Cache()
@@ -51,7 +51,7 @@ class AuthzRequest:
req.status_code
))
except requests.exceptions.ConnectionError:
- LOG.error("Cannot connect to {}".format(
+ logger.error("Cannot connect to {}".format(
"http://{}:{}/authz".format(
self.container_chaining[0]["hostip"],
self.container_chaining[0]["port"]
@@ -69,7 +69,7 @@ class AuthzRequest:
req.status_code
))
except requests.exceptions.ConnectionError:
- LOG.error("Cannot connect to {}".format(
+ logger.error("Cannot connect to {}".format(
"http://{}:{}/authz".format(
self.container_chaining[0]["hostname"],
self.container_chaining[0]["port"]
@@ -152,8 +152,3 @@ class AuthzRequest:
return True
self.final_result = "Deny"
return True
-
- # def notify(self, request_id, container_id, payload):
- # LOG.info("notify {} {} {}".format(request_id, container_id, payload))
- # # TODO: send the notification and wait for the result
- # # req = requests.get()
diff --git a/moon_interface/moon_interface/http_server.py b/moon_interface/moon_interface/http_server.py
index 72576f6c..57170985 100644
--- a/moon_interface/moon_interface/http_server.py
+++ b/moon_interface/moon_interface/http_server.py
@@ -4,19 +4,18 @@
# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
from flask import Flask, jsonify
-from flask_cors import CORS, cross_origin
from flask_restful import Resource, Api
import logging
from moon_interface import __version__
-from moon_interface.api.generic import Status, Logs, API
+from moon_interface.api.generic import Status, API
from moon_interface.api.authz import Authz
from moon_interface.authz_requests import CACHE
from python_moonutilities import configuration, exceptions
-logger = logging.getLogger("moon.interface.http")
+logger = logging.getLogger("moon.interface.http_server")
__API__ = (
- Status, Logs, API
+ Status, API
)
@@ -72,7 +71,8 @@ class Root(Resource):
__methods = ("get", "post", "put", "delete", "options")
def get(self):
- tree = {"/": {"methods": ("get",), "description": "List all methods for that service."}}
+ tree = {"/": {"methods": ("get",),
+ "description": "List all methods for that service."}}
for item in __API__:
tree[item.__name__] = {"urls": item.__urls__}
_methods = []
@@ -94,10 +94,9 @@ class HTTPServer(Server):
self.app = Flask(__name__)
self.port = port
conf = configuration.get_configuration("components/manager")
- self.manager_hostname = conf["components/manager"].get("hostname", "manager")
+ self.manager_hostname = conf["components/manager"].get("hostname",
+ "manager")
self.manager_port = conf["components/manager"].get("port", 80)
- #Todo : specify only few urls instead of *
- CORS(self.app)
self.api = Api(self.app)
self.__set_route()
self.__hook_errors()
@@ -126,7 +125,9 @@ class HTTPServer(Server):
resource_class_kwargs={
"cache": CACHE,
"interface_name": self.host,
- "manager_url": "http://{}:{}".format(self.manager_hostname, self.manager_port),
+ "manager_url": "http://{}:{}".format(
+ self.manager_hostname,
+ self.manager_port),
}
)
diff --git a/moon_interface/moon_interface/server.py b/moon_interface/moon_interface/server.py
index 8b53d7f3..13955c3e 100644
--- a/moon_interface/moon_interface/server.py
+++ b/moon_interface/moon_interface/server.py
@@ -7,10 +7,10 @@ import logging
from python_moonutilities import configuration, exceptions
from moon_interface.http_server import HTTPServer
-LOG = logging.getLogger("moon.interface.server")
+logger = logging.getLogger("moon.interface.server")
-def main():
+def create_server():
configuration.init_logging()
try:
conf = configuration.get_configuration("components/interface")
@@ -21,11 +21,19 @@ def main():
hostname = "interface"
bind = "127.0.0.1"
port = 80
- configuration.add_component(uuid="interface", name=hostname, port=port, bind=bind)
- LOG.info("Starting server with IP {} on port {} bind to {}".format(hostname, port, bind))
+ configuration.add_component(uuid="interface",
+ name=hostname,
+ port=port,
+ bind=bind)
+ logger.info("Starting server with IP {} on port {} bind to {}".format(
+ hostname, port, bind))
return HTTPServer(host=bind, port=port)
-if __name__ == '__main__':
- server = main()
+def run():
+ server = create_server()
server.run()
+
+
+if __name__ == '__main__':
+ run()
diff --git a/moon_interface/requirements.txt b/moon_interface/requirements.txt
index 7aa2b6df..f22b38e7 100644
--- a/moon_interface/requirements.txt
+++ b/moon_interface/requirements.txt
@@ -1,4 +1,5 @@
flask
flask_restful
flask_cors
+requests
python_moonutilities \ No newline at end of file
diff --git a/moon_interface/setup.py b/moon_interface/setup.py
index db15ff54..f358c598 100644
--- a/moon_interface/setup.py
+++ b/moon_interface/setup.py
@@ -40,7 +40,7 @@ setup(
entry_points={
'console_scripts': [
- 'moon_interface = moon_interface.server:main',
+ 'moon_interface = moon_interface.server:run',
],
}
diff --git a/moon_interface/tests/unit_python/api/test_authz.py b/moon_interface/tests/unit_python/api/test_authz.py
index a63948f8..84605203 100644
--- a/moon_interface/tests/unit_python/api/test_authz.py
+++ b/moon_interface/tests/unit_python/api/test_authz.py
@@ -7,7 +7,7 @@ def get_json(data):
def test_authz_true(context):
import moon_interface.server
- server = moon_interface.server.main()
+ server = moon_interface.server.create_server()
client = server.app.test_client()
req = client.get("/authz/{p_id}/{s_id}/{o_id}/{a_id}".format(
p_id=context["project_id"],
diff --git a/moon_interface/tests/unit_python/conftest.py b/moon_interface/tests/unit_python/conftest.py
index 1f4e8cfa..35ee19d7 100644
--- a/moon_interface/tests/unit_python/conftest.py
+++ b/moon_interface/tests/unit_python/conftest.py
@@ -5,7 +5,6 @@ import pickle
import pytest
import requests_mock
from uuid import uuid4
-from requests.packages.urllib3.response import HTTPResponse
CONF = {
"openstack": {
@@ -205,7 +204,7 @@ def set_env_variables():
def get_pickled_context():
- from python_moonutilities.security_functions import Context
+ from python_moonutilities.context import Context
from python_moonutilities.cache import Cache
CACHE = Cache()
CACHE.update()