Exemplo n.º 1
0
 def _mock_port_bound(self, ofport=None, new_local_vlan=None,
                      old_local_vlan=None):
     port = mock.Mock()
     port.ofport = ofport
     net_uuid = 'my-net-uuid'
     if old_local_vlan is not None:
         self.agent.local_vlan_map[net_uuid] = (
             ovs_neutron_agent.LocalVLANMapping(
                 old_local_vlan, None, None, None))
     with contextlib.nested(
         mock.patch('neutron.agent.linux.ovs_lib.OVSBridge.'
                    'set_db_attribute', return_value=True),
         mock.patch('neutron.agent.linux.ovs_lib.OVSBridge.'
                    'db_get_val', return_value=str(old_local_vlan)),
         mock.patch.object(self.agent.int_br, 'delete_flows')
     ) as (set_ovs_db_func, get_ovs_db_func, delete_flows_func):
         self.agent.port_bound(port, net_uuid, 'local', None, None)
     get_ovs_db_func.assert_called_once_with("Port", mock.ANY, "tag")
     if new_local_vlan != old_local_vlan:
         set_ovs_db_func.assert_called_once_with(
             "Port", mock.ANY, "tag", str(new_local_vlan))
         if ofport != -1:
             delete_flows_func.assert_called_once_with(in_port=port.ofport)
         else:
             self.assertFalse(delete_flows_func.called)
     else:
         self.assertFalse(set_ovs_db_func.called)
         self.assertFalse(delete_flows_func.called)
Exemplo n.º 2
0
 def test_update_ports_returns_changed_vlan(self):
     br = ovs_lib.OVSBridge('br-int', 'sudo')
     mac = "ca:fe:de:ad:be:ef"
     port = ovs_lib.VifPort(1, 1, 1, mac, br)
     lvm = ovs_neutron_agent.LocalVLANMapping(
         1, '1', None, 1, {port.vif_id: port})
     local_vlan_map = {'1': lvm}
     vif_port_set = set([1, 3])
     registered_ports = set([1, 2])
     port_tags_dict = {1: []}
     expected = dict(
         added=set([3]), current=vif_port_set,
         removed=set([2]), updated=set([1])
     )
     with mock.patch.dict(self.agent.local_vlan_map, local_vlan_map):
         actual = self.mock_scan_ports(
             vif_port_set, registered_ports, port_tags_dict=port_tags_dict)
     self.assertEqual(expected, actual)
Exemplo n.º 3
0
from neutron.plugins.common import constants as p_const
from neutron.plugins.openvswitch.agent import ovs_neutron_agent
from neutron.plugins.openvswitch.common import constants
from neutron.tests import base

# Useful global dummy variables.
NET_UUID = '3faeebfe-5d37-11e1-a64b-000c29d5f0a7'
LS_ID = 42
LV_ID = 42
LV_IDS = [42, 43]
VIF_ID = '404deaec-5d37-11e1-a64b-000c29d5f0a8'
VIF_MAC = '3c:09:24:1e:78:23'
OFPORT_NUM = 1
VIF_PORT = ovs_lib.VifPort('port', OFPORT_NUM, VIF_ID, VIF_MAC, 'switch')
VIF_PORTS = {VIF_ID: VIF_PORT}
LVM = ovs_neutron_agent.LocalVLANMapping(LV_ID, 'gre', None, LS_ID, VIF_PORTS)
LVM_FLAT = ovs_neutron_agent.LocalVLANMapping(LV_ID, 'flat', 'net1', LS_ID,
                                              VIF_PORTS)
LVM_VLAN = ovs_neutron_agent.LocalVLANMapping(LV_ID, 'vlan', 'net1', LS_ID,
                                              VIF_PORTS)
FIXED_IPS = [{'subnet_id': 'my-subnet-uuid', 'ip_address': '1.1.1.1'}]
VM_DEVICE_OWNER = "compute:None"

TUN_OFPORTS = {p_const.TYPE_GRE: {'ip1': '11', 'ip2': '12'}}

BCAST_MAC = "01:00:00:00:00:00/01:00:00:00:00:00"
UCAST_MAC = "00:00:00:00:00:00/01:00:00:00:00:00"


class DummyPort:
    def __init__(self, interface_id):
Exemplo n.º 4
0
    def setUp(self):
        super(TestL2populationRpcCallBackTunnelMixinBase, self).setUp()
        self.fakeagent = FakeNeutronAgent()
        self.fakebr = mock.Mock()
        Port = collections.namedtuple('Port', 'ip, ofport')
        LVM = collections.namedtuple(
            'LVM', 'net, vlan, phys, segid, mac, ip, vif, port')

        self.local_ip = '127.0.0.1'
        self.type_gre = 'gre'
        self.ports = [
            Port(ip='10.1.0.1', ofport='ofport1'),
            Port(ip='10.1.0.2', ofport='ofport2'),
            Port(ip='10.1.0.3', ofport='ofport3')
        ]
        self.ofports = {
            self.type_gre: {
                self.ports[0].ip: self.ports[0].ofport,
                self.ports[1].ip: self.ports[1].ofport,
                self.ports[2].ip: self.ports[2].ofport,
            }
        }

        self.lvms = [
            LVM(net='net1',
                vlan=1,
                phys='phys1',
                segid='tun1',
                mac='mac1',
                ip='1.1.1.1',
                vif='vifid1',
                port='port1'),
            LVM(net='net2',
                vlan=2,
                phys='phys2',
                segid='tun2',
                mac='mac2',
                ip='2.2.2.2',
                vif='vifid2',
                port='port2'),
            LVM(net='net3',
                vlan=3,
                phys='phys3',
                segid='tun3',
                mac='mac3',
                ip='3.3.3.3',
                vif='vifid3',
                port='port3')
        ]

        self.agent_ports = {
            self.ports[0].ip: [[self.lvms[0].mac, self.lvms[0].ip]],
            self.ports[1].ip: [[self.lvms[1].mac, self.lvms[1].ip]],
            self.ports[2].ip: [[self.lvms[2].mac, self.lvms[2].ip]],
        }

        self.fdb_entries1 = {
            self.lvms[0].net: {
                'network_type': self.type_gre,
                'segment_id': self.lvms[0].segid,
                'ports': {
                    self.local_ip: [],
                    self.ports[0].ip: [[self.lvms[0].mac, self.lvms[0].ip]]
                },
            },
            self.lvms[1].net: {
                'network_type': self.type_gre,
                'segment_id': self.lvms[1].segid,
                'ports': {
                    self.local_ip: [],
                    self.ports[1].ip: [[self.lvms[1].mac, self.lvms[1].ip]]
                },
            },
            self.lvms[2].net: {
                'network_type': self.type_gre,
                'segment_id': self.lvms[2].segid,
                'ports': {
                    self.local_ip: [],
                    self.ports[2].ip: [[self.lvms[2].mac, self.lvms[2].ip]]
                },
            },
        }

        self.lvm1 = ovs_neutron_agent.LocalVLANMapping(
            self.lvms[0].vlan, self.type_gre, self.lvms[0].phys,
            self.lvms[0].segid, {self.lvms[0].vif: self.lvms[0].port})
        self.lvm2 = ovs_neutron_agent.LocalVLANMapping(
            self.lvms[1].vlan, self.type_gre, self.lvms[1].phys,
            self.lvms[1].segid, {self.lvms[1].vif: self.lvms[1].port})
        self.lvm3 = ovs_neutron_agent.LocalVLANMapping(
            self.lvms[2].vlan, self.type_gre, self.lvms[2].phys,
            self.lvms[2].segid, {self.lvms[2].vif: self.lvms[2].port})

        self.local_vlan_map1 = {
            self.lvms[0].net: self.lvm1,
            self.lvms[1].net: self.lvm2,
            self.lvms[2].net: self.lvm3,
        }

        self.upd_fdb_entry1_val = {
            self.lvms[0].net: {
                self.ports[0].ip: {
                    'before': [[self.lvms[0].mac, self.lvms[0].ip]],
                    'after': [[self.lvms[1].mac, self.lvms[1].ip]],
                },
                self.ports[1].ip: {
                    'before': [[self.lvms[0].mac, self.lvms[0].ip]],
                    'after': [[self.lvms[1].mac, self.lvms[1].ip]],
                },
            },
            self.lvms[1].net: {
                self.ports[2].ip: {
                    'before': [[self.lvms[0].mac, self.lvms[0].ip]],
                    'after': [[self.lvms[2].mac, self.lvms[2].ip]],
                },
            },
        }
        self.upd_fdb_entry1 = {'chg_ip': self.upd_fdb_entry1_val}