X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=api%2Fserver.py;h=c1548ca10321497573c8ed463086b3ef5ca34b02;hb=6fa088f73722bec94d8c465102e7be19f10e925f;hp=1d42feffb0f09ba335c8b70d316a924e537bf5a9;hpb=4862f2b4033e5792015a9ab920262af4edaaf27c;p=yardstick.git diff --git a/api/server.py b/api/server.py index 1d42feffb..c1548ca10 100644 --- a/api/server.py +++ b/api/server.py @@ -10,6 +10,7 @@ from __future__ import absolute_import import inspect import logging +import socket from six.moves import filter from flasgger import Swagger @@ -19,9 +20,17 @@ from flask_restful import Api from api.database import Base from api.database import db_session from api.database import engine -from api.database import models +from api.database.v1 import models from api.urls import urlpatterns +from api import ApiResource from yardstick import _init_logging +from yardstick.common import utils +from yardstick.common import constants as consts + +try: + from urlparse import urljoin +except ImportError: + from urllib.parse import urljoin logger = logging.getLogger(__name__) @@ -37,8 +46,10 @@ def shutdown_session(exception=None): db_session.remove() -for u in urlpatterns: - api.add_resource(u.resource, u.url, endpoint=u.endpoint) +def get_resource(resource_name): + name = ''.join(resource_name.split('_')) + return next((r for r in utils.itersubclasses(ApiResource) + if r.__name__.lower() == name)) def init_db(): @@ -60,6 +71,15 @@ def app_wrapper(*args, **kwargs): return app(*args, **kwargs) +def get_endpoint(url): + ip = socket.gethostbyname(socket.gethostname()) + return urljoin('http://{}:{}'.format(ip, consts.API_PORT), url) + + +for u in urlpatterns: + api.add_resource(get_resource(u.target), u.url, endpoint=get_endpoint(u.url)) + + if __name__ == '__main__': _init_logging() logger.setLevel(logging.DEBUG)