예제 #1
0
    def test_linux_bridge_sort_slaves(self):
        iface_info1 = gen_bridge_iface_info()
        iface_info2 = gen_bridge_iface_info()
        iface_info2[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE].reverse()

        assert (LinuxBridgeIface(iface_info1).state_for_verify() ==
                LinuxBridgeIface(iface_info2).state_for_verify())
예제 #2
0
    def test_validate_enable_native_in_access_mode(self):
        iface_info = gen_bridge_iface_info_with_vlan_filter()
        port_conf = iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][0]
        port_conf[Port.VLAN_SUBTREE][Vlan.ENABLE_NATIVE] = True
        iface = LinuxBridgeIface(iface_info)

        with pytest.raises(NmstateValueError):
            iface.pre_edit_validation_and_cleanup()
예제 #3
0
    def test_validate_trunk_port_without_trunk_tag(self):
        iface_info = gen_bridge_iface_info_with_vlan_filter()
        port_config = iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][1]
        port_config[Port.VLAN_SUBTREE].pop(Vlan.TRUNK_TAGS)

        iface = LinuxBridgeIface(iface_info)
        with pytest.raises(NmstateValueError):
            iface.pre_edit_validation_and_cleanup()
예제 #4
0
    def test_state_for_verify_normalize_port_vlan(self):
        iface = LinuxBridgeIface(gen_bridge_iface_info())
        expected_iface_info = gen_bridge_iface_info()
        for port_config in expected_iface_info[LB.CONFIG_SUBTREE][
                LB.PORT_SUBTREE]:
            port_config[Port.VLAN_SUBTREE] = {}

        assert iface.state_for_verify() == expected_iface_info
예제 #5
0
    def test_validate_trunk_mixing_id_and_id_range(self):
        iface_info = gen_bridge_iface_info_with_vlan_filter()
        port_config = iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][1]
        port_config[Port.VLAN_SUBTREE][Vlan.TRUNK_TAGS][0].update(
            TRUNK_TAGS_ID_RANGES[0])

        iface = LinuxBridgeIface(iface_info)
        with pytest.raises(NmstateValueError):
            iface.pre_edit_validation_and_cleanup()
예제 #6
0
    def test_verify_when_vlantree_not_defined_in_desire(self):
        iface_info = gen_bridge_iface_info()
        expected_iface_info = gen_bridge_iface_info()
        for port_config in expected_iface_info[LB.CONFIG_SUBTREE][
                LB.PORT_SUBTREE]:
            port_config[Port.VLAN_SUBTREE] = {}

        iface = LinuxBridgeIface(iface_info)

        assert iface.state_for_verify() == expected_iface_info
예제 #7
0
    def test_remove_slave(self):
        iface_info = gen_bridge_iface_info()
        expected_iface_info = gen_bridge_iface_info()
        expected_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = [
            deepcopy(SLAVE1_PORT_CONFIG)
        ]

        iface = LinuxBridgeIface(iface_info)
        iface.remove_slave(SLAVE2_IFACE_NAME)

        assert iface.to_dict() == expected_iface_info
예제 #8
0
    def test_validate_access_port_with_trunk_tag(self):
        iface_info = gen_bridge_iface_info_with_vlan_filter()
        port_config = iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][0]
        port_config[Port.VLAN_SUBTREE][Vlan.TRUNK_TAGS] = [{
            Vlan.TrunkTags.ID:
            101
        }]

        iface = LinuxBridgeIface(iface_info)
        with pytest.raises(NmstateValueError):
            iface.pre_edit_validation_and_cleanup()
예제 #9
0
    def test_get_config_changed_slaves(self):
        des_iface_info = gen_bridge_iface_info()
        des_port_config = des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][0]
        des_port_config[Port.STP_PATH_COST] += 1
        cur_iface_info = gen_bridge_iface_info()

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)

        assert des_iface.config_changed_slaves(cur_iface) == [
            SLAVE1_IFACE_NAME
        ]
예제 #10
0
    def test_fix_access_mode_with_enable_native(self):
        cur_iface_info = gen_bridge_iface_info_with_vlan_filter()
        des_iface_info = gen_bridge_iface_info_with_vlan_filter()
        expected_iface_info = gen_bridge_iface_info_with_vlan_filter()
        cur_vlan_conf = cur_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][0][
            Port.VLAN_SUBTREE]
        cur_vlan_conf[Vlan.ENABLE_NATIVE] = True
        cur_vlan_conf[Vlan.MODE] = Vlan.Mode.TRUNK

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)
        des_iface.pre_edit_validation_and_cleanup()

        assert des_iface.to_dict() == expected_iface_info
예제 #11
0
    def test_merge_with_desired_ports_not_defined(self):
        cur_iface_info = gen_bridge_iface_info()
        des_iface_info = gen_bridge_iface_info()
        expected_iface_info = gen_bridge_iface_info()
        des_iface_info[LB.CONFIG_SUBTREE].pop(LB.PORT_SUBTREE)

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)

        assert des_iface.to_dict() == expected_iface_info
예제 #12
0
    def test_merge_fix_tag_with_trunk_disabled_native(self):
        cur_iface_info = gen_bridge_iface_info_with_vlan_filter()
        des_iface_info = gen_bridge_iface_info_with_vlan_filter()
        des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][0][
            Port.VLAN_SUBTREE] = {
                Vlan.ENABLE_NATIVE: False,
                Vlan.MODE: Vlan.Mode.TRUNK,
                Vlan.TRUNK_TAGS: [{
                    Vlan.TrunkTags.ID: 101
                }],
            }
        expected_iface_info = deepcopy(des_iface_info)

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)
        des_iface.pre_edit_validation_and_cleanup()

        assert des_iface.to_dict() == expected_iface_info
예제 #13
0
    def test_merged_with_desire_remove_all_ports(self):
        cur_iface_info = gen_bridge_iface_info()
        des_iface_info = gen_bridge_iface_info()
        expected_iface_info = gen_bridge_iface_info()
        expected_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = []
        des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = []

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)

        assert des_iface.to_dict() == expected_iface_info
예제 #14
0
    def test_remove_trunk_tag_if_access_mode(self):
        cur_iface_info = gen_bridge_iface_info_with_vlan_filter()
        des_iface_info = gen_bridge_iface_info_with_vlan_filter()
        des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][1][
            Port.VLAN_SUBTREE] = {
                Vlan.MODE: Vlan.Mode.ACCESS,
            }
        expected_iface_info = gen_bridge_iface_info_with_vlan_filter()
        expected_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][1][
            Port.VLAN_SUBTREE] = {
                Vlan.MODE: Vlan.Mode.ACCESS,
                Vlan.TAG: 105
            }

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)
        des_iface.pre_edit_validation_and_cleanup()

        assert des_iface.to_dict() == expected_iface_info
예제 #15
0
    def test_validate_trunk_id_range_missing_min_or_max(self):
        iface_info = gen_bridge_iface_info_with_vlan_filter()
        port_config = iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE][1]
        port_config[Port.VLAN_SUBTREE][Vlan.TRUNK_TAGS][0] = {
            Vlan.TrunkTags.ID_RANGE: {
                Vlan.TrunkTags.MIN_RANGE: 400
            }
        }

        iface = LinuxBridgeIface(iface_info)
        with pytest.raises(NmstateValueError):
            iface.pre_edit_validation_and_cleanup()

        port_config[Port.VLAN_SUBTREE][Vlan.TRUNK_TAGS][0] = {
            Vlan.TrunkTags.ID_RANGE: {
                Vlan.TrunkTags.MAX_RANGE: 400
            }
        }

        iface = LinuxBridgeIface(iface_info)
        with pytest.raises(NmstateValueError):
            iface.pre_edit_validation_and_cleanup()
예제 #16
0
    def test_desire_port_name_only_merge_config_from_current(self):
        cur_iface_info = gen_bridge_iface_info()
        des_iface_info = gen_bridge_iface_info()
        expected_iface_info = gen_bridge_iface_info()
        expected_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = [
            deepcopy(SLAVE2_PORT_CONFIG)
        ]
        des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = [
            {
                Port.NAME: SLAVE2_IFACE_NAME
            },
        ]

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)

        assert des_iface.to_dict() == expected_iface_info
예제 #17
0
    def test_desire_port_name_partial_merge_from_current_with_vlan_filter(
        self, ):
        cur_iface_info = gen_bridge_iface_info_with_vlan_filter()
        des_iface_info = gen_bridge_iface_info_with_vlan_filter()
        expected_port_config = deepcopy(SLAVE2_PORT_CONFIG)
        expected_port_config[Port.VLAN_SUBTREE] = SLAVE2_VLAN_CONFIG_TRUNK
        expected_iface_info = gen_bridge_iface_info()
        expected_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = [
            expected_port_config
        ]
        des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = [
            {
                Port.NAME: SLAVE2_IFACE_NAME
            },
        ]

        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)
        des_iface.merge(cur_iface)

        assert des_iface.to_dict() == expected_iface_info
예제 #18
0
    def test_validate_tag_in_access_mode_and_native_trunk(self):
        iface_info = gen_bridge_iface_info_with_vlan_filter()
        iface = LinuxBridgeIface(iface_info)

        iface.pre_edit_validation_and_cleanup()
예제 #19
0
    def test_desire_port_name_full_merge_from_current(self):
        cur_iface_info = gen_bridge_iface_info()
        des_iface_info = gen_bridge_iface_info()
        des_iface_info[LB.CONFIG_SUBTREE][LB.PORT_SUBTREE] = [
            {
                Port.NAME: SLAVE2_IFACE_NAME
            },
            {
                Port.NAME: SLAVE1_IFACE_NAME
            },
        ]
        des_iface = LinuxBridgeIface(des_iface_info)
        cur_iface = LinuxBridgeIface(cur_iface_info)

        des_iface.merge(cur_iface)
        des_iface.sort_slaves()
        cur_iface.sort_slaves()

        assert des_iface.to_dict() == gen_bridge_iface_info()
예제 #20
0
    def test_get_slaves(self):
        iface = LinuxBridgeIface(gen_bridge_iface_info())

        assert iface.slaves == TEST_SLAVE_NAMES
예제 #21
0
    def test_is_virtual(self):
        iface = LinuxBridgeIface(gen_bridge_iface_info())

        assert iface.is_virtual
예제 #22
0
    def test_is_master(self):
        iface = LinuxBridgeIface(gen_bridge_iface_info())

        assert iface.is_master