예제 #1
0
파일: vif.py 프로젝트: hsluoyz/patron
    def _plug_bridge_with_port(self, instance, vif, port):
        iface_id = self.get_ovs_interfaceid(vif)
        br_name = self.get_br_name(vif['id'])
        v1_name, v2_name = self.get_veth_pair_names(vif['id'])

        if not linux_net.device_exists(br_name):
            utils.execute('brctl', 'addbr', br_name, run_as_root=True)
            utils.execute('brctl', 'setfd', br_name, 0, run_as_root=True)
            utils.execute('brctl', 'stp', br_name, 'off', run_as_root=True)
            utils.execute('tee',
                          ('/sys/class/net/%s/bridge/multicast_snooping' %
                           br_name),
                          process_input='0',
                          run_as_root=True,
                          check_exit_code=[0, 1])

        if not linux_net.device_exists(v2_name):
            linux_net._create_veth_pair(v1_name, v2_name)
            utils.execute('ip', 'link', 'set', br_name, 'up', run_as_root=True)
            utils.execute('brctl', 'addif', br_name, v1_name, run_as_root=True)
            if port == 'ovs':
                linux_net.create_ovs_vif_port(self.get_bridge_name(vif),
                                              v2_name, iface_id,
                                              vif['address'], instance.uuid)
            elif port == 'ivs':
                linux_net.create_ivs_vif_port(v2_name, iface_id,
                                              vif['address'], instance.uuid)
예제 #2
0
    def _plug_bridge_with_port(self, instance, vif, port):
        iface_id = self.get_ovs_interfaceid(vif)
        br_name = self.get_br_name(vif['id'])
        v1_name, v2_name = self.get_veth_pair_names(vif['id'])

        if not linux_net.device_exists(br_name):
            utils.execute('brctl', 'addbr', br_name, run_as_root=True)
            utils.execute('brctl', 'setfd', br_name, 0, run_as_root=True)
            utils.execute('brctl', 'stp', br_name, 'off', run_as_root=True)
            utils.execute(
                'tee',
                ('/sys/class/net/%s/bridge/multicast_snooping' % br_name),
                process_input='0',
                run_as_root=True,
                check_exit_code=[0, 1])

        if not linux_net.device_exists(v2_name):
            linux_net._create_veth_pair(v1_name, v2_name)
            utils.execute('ip', 'link', 'set', br_name, 'up', run_as_root=True)
            utils.execute('brctl', 'addif', br_name, v1_name, run_as_root=True)
            if port == 'ovs':
                linux_net.create_ovs_vif_port(self.get_bridge_name(vif),
                                              v2_name, iface_id,
                                              vif['address'], instance.uuid)
            elif port == 'ivs':
                linux_net.create_ivs_vif_port(v2_name, iface_id,
                                              vif['address'], instance.uuid)
예제 #3
0
 def plug_vhostuser(self, instance, vif):
     ovs_plug = vif['details'].get(
         network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False)
     if ovs_plug:
         iface_id = self.get_ovs_interfaceid(vif)
         port_name = os.path.basename(
             vif['details'][network_model.VIF_DETAILS_VHOSTUSER_SOCKET])
         linux_net.create_ovs_vif_port(self.get_bridge_name(vif), port_name,
                                       iface_id, vif['address'],
                                       instance.uuid)
         linux_net.ovs_set_vhostuser_port_type(port_name)
예제 #4
0
파일: vif.py 프로젝트: hsluoyz/patron
 def plug_vhostuser(self, instance, vif):
     ovs_plug = vif['details'].get(
                             network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG,
                             False)
     if ovs_plug:
         iface_id = self.get_ovs_interfaceid(vif)
         port_name = os.path.basename(
                 vif['details'][network_model.VIF_DETAILS_VHOSTUSER_SOCKET])
         linux_net.create_ovs_vif_port(self.get_bridge_name(vif),
                                       port_name, iface_id, vif['address'],
                                       instance.uuid)
         linux_net.ovs_set_vhostuser_port_type(port_name)