diff options
Diffstat (limited to 'netmon')
-rw-r--r-- | netmon/__init__.py | 0 | ||||
-rw-r--r-- | netmon/bin/__init__.py | 0 | ||||
-rwxr-xr-x | netmon/bin/netmon.py | 76 |
3 files changed, 76 insertions, 0 deletions
diff --git a/netmon/__init__.py b/netmon/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/netmon/__init__.py diff --git a/netmon/bin/__init__.py b/netmon/bin/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/netmon/bin/__init__.py diff --git a/netmon/bin/netmon.py b/netmon/bin/netmon.py new file mode 100755 index 00000000..65ef9f8d --- /dev/null +++ b/netmon/bin/netmon.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Copyright (c) 2017 Cisco and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import asyncio +import logging +import os +import sys + +PATH=os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir) +sys.path.insert(0, os.path.abspath(PATH)) + +from netmodel.network.interfaces +from netmodel.network.router import Router +from netmodel.model.query import Query, ACTION_SELECT, ACTION_SUBSCRIBE +from netmodel.util.daemon import Daemon +from netmodel.util.log import initialize_logging + +log = logging.getLogger(__name__) + +class RouterDaemon(Daemon): + + def initialize(self): + log.info("Starting RouterServer") + + initialize_logging() + register_interfaces() + + self._router = Router() + + self._router.add_interface('websocketserver') + self._router.add_interface('bwm') + self._router.add_interface('local', router = self._router) + + + def main(self): + loop = asyncio.get_event_loop() + try: + loop.run_forever() + except KeyboardInterrupt: + pass + except Exception as e: + import traceback + traceback.print_exc() + + def terminate(self): + """ + Function called when the RouterDaemon must stops. + """ + try: + log.info("Stopping gracefully RouterServer") + self._router.terminate() + except AttributeError: + # self._router_server may not exists for instance if the + # socket is already in use. + pass + +def main(): + RouterDaemon('router', no_daemon = True).start() + +if __name__ == "__main__": + main() |