X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fopenstack%2Fopenstack_dummies%2Fneutron_dummy_api.py;fp=src%2Femuvim%2Fapi%2Fopenstack%2Fopenstack_dummies%2Fneutron_dummy_api.py;h=e017660df214f6f1c9a03aaaa529da8f7e2609ff;hb=c3d1e25f455b70ac944d1d668aaad1b8e74eb61b;hp=13698bdfba9264c1a84aa5ac8dd128513122b1c5;hpb=0e10819e9f46c6d00c2e54e544c8df4a2f1ce9a2;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/openstack/openstack_dummies/neutron_dummy_api.py b/src/emuvim/api/openstack/openstack_dummies/neutron_dummy_api.py index 13698bd..e017660 100755 --- a/src/emuvim/api/openstack/openstack_dummies/neutron_dummy_api.py +++ b/src/emuvim/api/openstack/openstack_dummies/neutron_dummy_api.py @@ -717,20 +717,29 @@ class NeutronListPorts(Resource): show_port = NeutronShowPort(self.api) return show_port.get_port(request.args.get('id'), True) - port_list = list() - port_dict = 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) - 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) - - port_dict["ports"] = port_list + port_dict = dict() + port_dict["ports"] = map(lambda x: x.create_port_dict(self.api.compute), ports) return Response(json.dumps(port_dict), status=200, mimetype='application/json')