예제 #1
0
 def test_get_port_by_tag_not_found_returns_None(self):
     tenant_id = 'pippo'
     quantum_port_id = 'whatever'
     lswitch = nvplib.create_lswitch(self.fake_cluster, tenant_id,
                                     'fake-switch')
     lport = nvplib.get_port_by_quantum_tag(self.fake_cluster,
                                            lswitch['uuid'],
                                            quantum_port_id)
     self.assertIsNone(lport)
예제 #2
0
 def test_get_port_by_tag_not_found_returns_None(self):
     tenant_id = 'pippo'
     quantum_port_id = 'whatever'
     lswitch = nvplib.create_lswitch(self.fake_cluster, tenant_id,
                                     'fake-switch')
     lport = nvplib.get_port_by_quantum_tag(self.fake_cluster,
                                            lswitch['uuid'],
                                            quantum_port_id)
     self.assertIsNone(lport)
예제 #3
0
 def update_port(self, context, id, port):
     params = {}
     port_quantum = super(NvpPluginV2, self).get_port(context, id)
     port_nvp, cluster = (
         nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),
                                        port_quantum["network_id"], id))
     params["cluster"] = cluster
     params["port"] = port_quantum
     LOG.debug(_("Update port request: %s"), params)
     nvplib.update_port(port_quantum['network_id'],
                        port_nvp['uuid'], **params)
     return super(NvpPluginV2, self).update_port(context, id, port)
예제 #4
0
 def test_get_port_by_tag(self):
     tenant_id = 'pippo'
     quantum_port_id = 'whatever'
     lswitch = nvplib.create_lswitch(self.fake_cluster, tenant_id,
                                     'fake-switch')
     lport = nvplib.create_lport(self.fake_cluster, lswitch['uuid'],
                                 tenant_id, quantum_port_id, 'name',
                                 'device_id', True)
     lport2 = nvplib.get_port_by_quantum_tag(self.fake_cluster,
                                             lswitch['uuid'],
                                             quantum_port_id)
     self.assertIsNotNone(lport2)
     self.assertEqual(lport['uuid'], lport2['uuid'])
예제 #5
0
 def test_get_port_by_tag(self):
     tenant_id = 'pippo'
     quantum_port_id = 'whatever'
     lswitch = nvplib.create_lswitch(self.fake_cluster, tenant_id,
                                     'fake-switch')
     lport = nvplib.create_lport(self.fake_cluster, lswitch['uuid'],
                                 tenant_id, quantum_port_id,
                                 'name', 'device_id', True)
     lport2 = nvplib.get_port_by_quantum_tag(self.fake_cluster,
                                             lswitch['uuid'],
                                             quantum_port_id)
     self.assertIsNotNone(lport2)
     self.assertEqual(lport['uuid'], lport2['uuid'])
예제 #6
0
    def delete_port(self, context, id):
        # TODO(salvatore-orlando): pass only actual cluster
        port, cluster = nvplib.get_port_by_quantum_tag(
            self.clusters.itervalues(), '*', id)
        if port is None:
            raise q_exc.PortNotFound(port_id=id)
        # TODO(bgh): if this is a bridged network and the lswitch we just got
        # back will have zero ports after the delete we should garbage collect
        # the lswitch.
        nvplib.delete_port(cluster, port)

        LOG.debug(_("delete_port() completed for tenant: %s"),
                  context.tenant_id)
        return super(NvpPluginV2, self).delete_port(context, id)
예제 #7
0
    def get_port(self, context, id, fields=None):
        quantum_db = super(NvpPluginV2, self).get_port(context, id, fields)

        #TODO: pass only the appropriate cluster here
        #Look for port in all lswitches
        port, cluster = (
            nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),
                                           "*", id))

        quantum_db["admin_state_up"] = port["admin_status_enabled"]
        if port["_relations"]["LogicalPortStatus"]["fabric_status_up"]:
            quantum_db["status"] = constants.PORT_STATUS_ACTIVE
        else:
            quantum_db["status"] = constants.PORT_STATUS_DOWN

        LOG.debug(_("Port details for tenant %(tenant_id)s: %(quantum_db)s"),
                  {'tenant_id': context.tenant_id, 'quantum_db': quantum_db})
        return quantum_db
예제 #8
0
    def update_port(self, context, id, port):
        self._enforce_set_auth(context, port,
                               self.port_security_enabled_update)
        tenant_id = self._get_tenant_id_for_create(context, port)
        with context.session.begin(subtransactions=True):
            ret_port = super(NvpPluginV2, self).update_port(
                context, id, port)
            # copy values over
            ret_port.update(port['port'])

            # Handle port security
            if psec.PORTSECURITY in port['port']:
                self._update_port_security_binding(
                    context, id, ret_port[psec.PORTSECURITY])
            # populate with value
            else:
                ret_port[psec.PORTSECURITY] = self._get_port_security_binding(
                    context, id)

            port_nvp, cluster = (
                nvplib.get_port_by_quantum_tag(self.clusters.itervalues(),
                                               ret_port["network_id"], id))
            LOG.debug(_("Update port request: %s"), port)
            nvplib.update_port(cluster, ret_port['network_id'],
                               port_nvp['uuid'], id, tenant_id,
                               ret_port['name'], ret_port['device_id'],
                               ret_port['admin_state_up'],
                               ret_port['mac_address'],
                               ret_port['fixed_ips'],
                               ret_port[psec.PORTSECURITY])

        # Update the port status from nvp. If we fail here hide it since
        # the port was successfully updated but we were not able to retrieve
        # the status.
        try:
            ret_port['status'] = nvplib.get_port_status(
                cluster, ret_port['network_id'], port_nvp['uuid'])
        except:
            LOG.warn(_("Unable to retrieve port status for: %s."),
                     port_nvp['uuid'])
        return ret_port