migration to python3 (#1)
[osm/vim-emu.git] / src / emuvim / api / openstack / openstack_dummies / neutron_dummy_api.py
index e094f0e..2f11d9f 100755 (executable)
 # partner consortium (www.sonata-nfv.eu).
 from flask_restful import Resource
 from flask import request, Response
-from emuvim.api.openstack.openstack_dummies.base_openstack_dummy import BaseOpenstackDummy
+from emuvim.api.openstack.openstack_dummies.base_openstack_dummy import \
+    BaseOpenstackDummy
 from datetime import datetime
-import neutron_sfc_dummy_api as SFC
+import emuvim.api.openstack.openstack_dummies.neutron_sfc_dummy_api as SFC
 import logging
 import json
 import uuid
@@ -269,7 +270,7 @@ class NeutronListNetworks(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: List networks exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -319,7 +320,7 @@ class NeutronShowNetwork(Resource):
 
         except Exception as ex:
             logging.exception("Neutron: Show network exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -350,7 +351,7 @@ class NeutronCreateNetwork(Resource):
                 {"network": net.create_network_dict()}), status=201, mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Create network excepiton.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -397,7 +398,7 @@ class NeutronUpdateNetwork(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: Show networks exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -434,7 +435,7 @@ class NeutronDeleteNetwork(Resource):
             return Response('', status=204, mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Delete network exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -481,7 +482,7 @@ class NeutronListSubnets(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: List subnets exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -529,7 +530,7 @@ class NeutronShowSubnet(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: Show subnet exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -589,7 +590,7 @@ class NeutronCreateSubnet(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: Create network excepiton.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -643,7 +644,7 @@ class NeutronUpdateSubnet(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: Show networks exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -691,7 +692,7 @@ class NeutronDeleteSubnet(Resource):
                             status=404, mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Delete subnet exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -717,27 +718,36 @@ class NeutronListPorts(Resource):
                 show_port = NeutronShowPort(self.api)
                 return show_port.get_port(request.args.get('id'), True)
 
-            port_list = list()
-            port_dict = dict()
-
-            if len(id_list) == 0:
-                for port in self.api.compute.ports.values():
-                    tmp_port_dict = port.create_port_dict(self.api.compute)
-                    port_list.append(tmp_port_dict)
-            else:
-                for port in self.api.compute.ports.values():
-                    if port.id in id_list:
-                        tmp_port_dict = port.create_port_dict(self.api.compute)
-                        port_list.append(tmp_port_dict)
+            ports = self.api.compute.ports.values()
+            if len(id_list) != 0:
+                ports = filter(lambda port: port.id in id_list, ports)
+
+            device_id = request.args.get('device_id')
+            if device_id:
+                server = self.api.compute.find_server_by_name_or_id(device_id)
+                if not server:
+                    raise RuntimeError("Unable to find server '%s' in order to return it's ports" % server)
+
+                ports = filter(lambda port: (
+                    any(
+                        filter(
+                            lambda server_port_name_or_id: (
+                                port.id == server_port_name_or_id or port.name == server_port_name_or_id
+                            ),
+                            server.port_names
+                        )
+                    )
+                ), ports)
 
-            port_dict["ports"] = port_list
+            port_dict = dict()
+            port_dict["ports"] = list(map(lambda x: x.create_port_dict(self.api.compute), ports))
 
             return Response(json.dumps(port_dict), status=200,
                             mimetype='application/json')
 
         except Exception as ex:
             LOG.exception("Neutron: List ports exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -783,7 +793,7 @@ class NeutronShowPort(Resource):
                             mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Show port exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -816,10 +826,6 @@ class NeutronCreatePort(Resource):
                 num_ports = len(self.api.compute.ports)
                 name = "port:cp%s:man:%s" % (num_ports, str(uuid.uuid4()))
 
-            if self.api.compute.find_port_by_name_or_id(name):
-                return Response("Port with name %s already exists.\n" %
-                                name, status=500, mimetype='application/json')
-
             port = self.api.compute.create_port(name)
 
             port.net_name = net.name
@@ -851,7 +857,7 @@ class NeutronCreatePort(Resource):
                             mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Show port exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -915,7 +921,7 @@ class NeutronUpdatePort(Resource):
                             mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Update port exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -962,7 +968,7 @@ class NeutronDeletePort(Resource):
 
         except Exception as ex:
             LOG.exception("Neutron: Delete port exception.")
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')
 
 
@@ -1043,5 +1049,5 @@ class NeutronAddFloatingIp(Resource):
                             mimetype='application/json')
         except Exception as ex:
             LOG.exception("Neutron: Create FloatingIP exception %s.", ex)
-            return Response(ex.message, status=500,
+            return Response(str(ex), status=500,
                             mimetype='application/json')