コード例 #1
0
 def unplug(self, instance, network, mapping):
     dev = self.get_dev_name(mapping["vif_uuid"])
     client = VIFINFOClient(FLAGS.quantum_host, FLAGS.quantum_port)
     client.delete_vifinfo(mapping["vif_uuid"])
     try:
         utils.execute("ovs-vsctl", "del-port", FLAGS.libvirt_ovs_bridge, dev, run_as_root=True)
         utils.execute("ip", "link", "delete", dev, run_as_root=True)
     except exception.ProcessExecutionError:
         LOG.warning(_("Failed while unplugging vif of instance '%s'"), instance["name"])
         raise
コード例 #2
0
    def plug(self, instance, network, mapping):
        iface_id = mapping["vif_uuid"]
        dev = self.get_dev_name(iface_id)
        if not linux_net._device_exists(dev):
            utils.execute("ip", "tuntap", "add", dev, "mode", "tap", run_as_root=True)
            utils.execute("ip", "link", "set", dev, "up", run_as_root=True)
        utils.execute(
            "ovs-vsctl",
            "--",
            "--may-exist",
            "add-port",
            FLAGS.libvirt_ovs_bridge,
            dev,
            "--",
            "set",
            "Interface",
            dev,
            "external-ids:iface-id=%s" % iface_id,
            "--",
            "set",
            "Interface",
            dev,
            "external-ids:iface-status=active",
            "--",
            "set",
            "Interface",
            dev,
            "external-ids:attached-mac=%s" % mapping["mac"],
            run_as_root=True,
        )

        ret, left = utils.execute(
            "ovs-vsctl", "get", "bridge", FLAGS.libvirt_ovs_bridge, "datapath_id", run_as_root=True
        )
        datapath_id = "0x" + ret.strip('"\n')
        ret, left = utils.execute("ovs-vsctl", "get", "Interface", dev, "ofport", run_as_root=True)
        port_no = ret.strip()
        client = VIFINFOClient(FLAGS.quantum_host, FLAGS.quantum_port)
        client.create_vifinfo(mapping["vif_uuid"], datapath_id, port_no)

        result = {"script": "", "name": dev, "mac_address": mapping["mac"]}
        return result