Fixed missing license headers
[osm/vim-emu.git] / src / emuvim / api / rest / rest_api_endpoint.py
index 10b6c26..0539e7d 100755 (executable)
@@ -14,7 +14,7 @@ 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.
 
 See the License for the specific language governing permissions and
 limitations under the License.
 
-Neither the name of the SONATA-NFV [, ANY ADDITIONAL AFFILIATION]
+Neither the name of the SONATA-NFV, Paderborn University
 nor the names of its contributors may be used to endorse or promote
 products derived from this software without specific prior written
 permission.
 nor the names of its contributors may be used to endorse or promote
 products derived from this software without specific prior written
 permission.
@@ -46,7 +46,7 @@ from monitor import MonitorInterfaceAction, MonitorFlowAction, MonitorLinkAction
 import pkg_resources
 from os import path
 
 import pkg_resources
 from os import path
 
-logging.basicConfig(level=logging.INFO)
+logging.basicConfig()
 
 
 class RestApiEndpoint(object):
 
 
 class RestApiEndpoint(object):
@@ -56,10 +56,13 @@ class RestApiEndpoint(object):
     default command line client.
     """
 
     default command line client.
     """
 
-    def __init__(self, listenip, port):
+    def __init__(self, listenip, port, DCnetwork=None):
         self.ip = listenip
         self.port = port
 
         self.ip = listenip
         self.port = port
 
+        # connect this DC network to the rest api endpoint (needed for the networking and monitoring api)
+        self.connectDCNetwork(DCnetwork)
+
         # setup Flask
         # find directory of dashboard files
         dashboard_file = pkg_resources.resource_filename('emuvim.dashboard', "index.html")
         # setup Flask
         # find directory of dashboard files
         dashboard_file = pkg_resources.resource_filename('emuvim.dashboard', "index.html")
@@ -124,17 +127,21 @@ class RestApiEndpoint(object):
             self.__class__.__name__, self.ip, self.port))
 
     def start(self):
             self.__class__.__name__, self.ip, self.port))
 
     def start(self):
-        thread = threading.Thread(target=self._start_flask, args=())
-        thread.daemon = True
-        thread.start()
+        self.thread = threading.Thread(target=self._start_flask, args=())
+        self.thread.daemon = True
+        self.thread.start()
         logging.info("Started API endpoint @ http://%s:%d" % (self.ip, self.port))
 
         logging.info("Started API endpoint @ http://%s:%d" % (self.ip, self.port))
 
+    def stop(self):
+        if self.http_server:
+            self.http_server.close()
+
     def _start_flask(self):
         #self.app.run(self.ip, self.port, debug=False, use_reloader=False)
         #this should be a more production-fit http-server
         #self.app.logger.setLevel(logging.ERROR)
     def _start_flask(self):
         #self.app.run(self.ip, self.port, debug=False, use_reloader=False)
         #this should be a more production-fit http-server
         #self.app.logger.setLevel(logging.ERROR)
-        http_server = WSGIServer((self.ip, self.port),
+        self.http_server = WSGIServer((self.ip, self.port),
                                  self.app,
                                  log=open("/dev/null", "w")  # This disables HTTP request logs to not mess up the CLI when e.g. the auto-updated dashboard is used
         )
                                  self.app,
                                  log=open("/dev/null", "w")  # This disables HTTP request logs to not mess up the CLI when e.g. the auto-updated dashboard is used
         )
-        http_server.serve_forever()
+        self.http_server.serve_forever()