Skip to content
This repository has been archived by the owner on Apr 22, 2024. It is now read-only.

Commit

Permalink
Merge e00a0ac into 8212b17
Browse files Browse the repository at this point in the history
  • Loading branch information
macartur committed Apr 18, 2017
2 parents 8212b17 + e00a0ac commit dd7079c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 6 deletions.
21 changes: 17 additions & 4 deletions kytos/core/api_server.py
@@ -1,6 +1,6 @@
"""Module used to handle a API Server."""
import logging
import os

from urllib.error import URLError
from urllib.request import urlopen

Expand All @@ -11,7 +11,7 @@
class APIServer:
"""Api server used to provide Kytos Controller routes."""

def __init__(self, app_name):
def __init__(self, app_name, debug=False):
"""Contructor of APIServer.
This method will instantiate a server with SocketIO+Flask.
Expand All @@ -21,9 +21,22 @@ def __init__(self, app_name):
"""
dirname = os.path.dirname(os.path.abspath(__file__))
self.flask_dir = os.path.join(dirname, '../web-ui/source')
self.log = logging.getLogger('werkzeug')
self.set_debug(debug)

self.app = Flask(app_name, root_path=self.flask_dir)
self.server = SocketIO(self.app)
self.server = SocketIO(self.app, async_mode='threading')

def set_debug(self, debug=False):
"""Method used to set debug mode.
Args:
debug(bool): Boolean value to turn on/off debug mode.
"""
if debug == True:
self.log.setLevel(logging.DEBUG)
else:
self.log.setLevel(logging.WARNING)

def run(self, *args, **kwargs):
"""Method used to run the APIServer."""
Expand Down Expand Up @@ -111,5 +124,5 @@ def shutdown_api(self):
return 'Server shutting down...', 200

def web_ui(self):
"""Method userd to serve the index.html page for the admin-ui."""
"""Method used to serve the index.html page for the admin-ui."""
return send_from_directory(self.flask_dir, 'index.html')
17 changes: 15 additions & 2 deletions kytos/core/controller.py
Expand Up @@ -93,7 +93,7 @@ def __init__(self, options=None):

self.log = None

self.api_server = APIServer(__name__)
self.api_server = APIServer(__name__, self.options.debug)

#: Adding the napps 'enabled' directory into the PATH
#: Now you can access the enabled napps with:
Expand Down Expand Up @@ -139,7 +139,8 @@ def start(self):

thrds = {'tcp_server': Thread(name='TCP server',
target=self.server.serve_forever),
'api_server': Thread(target=self.api_server.run,
'api_server': Thread(name='API server',
target=self.api_server.run,
args=['0.0.0.0', 8181]),
'raw_event_handler': Thread(name='RawEvent Handler',
target=raw_event_handler),
Expand Down Expand Up @@ -169,6 +170,18 @@ def register_rest_endpoint(self, *options, **kwargs):
"""Method used to return the endpoints registered by APIServer."""
self.api_server.register_rest_endpoint(*options, **kwargs)

def restart(self, graceful=True):
"""Restart Kytos SDN Controller.
Args:
graceful(bool): Represents the way that Kytos will restart.
"""
if self.started_at is not None:
self.stop(graceful)
self.__init__(self.options)

self.start()

def stop(self, graceful=True):
"""Method used to shutdown all services used by kytos.
Expand Down

0 comments on commit dd7079c

Please sign in to comment.