コード例 #1
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classC').device(cfg.leaf0['id']).match(
            'precedence', 1).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()
        assert class_map.retrieve() == [{
            'matches': [{
                'type': 'precedence',
                'option': 1
            }],
            'name':
            'classC'
        }]

        new_class_map_cfg = (ClassMapCfg('classC').device(
            cfg.leaf0['id']).match('vlan', 2).create())

        class_map.update(new_class_map_cfg)
        assert class_map.retrieve() == [{
            'matches': [{
                'type': 'vlan',
                'option': 2
            }],
            'name':
            'classC'
        }]

        # clear
        class_map.delete()
コード例 #2
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classC').device(cfg.leaf0['id']).match(
            'cos', 2).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()

        policy_map_cfg = (
            PolicyMapCfg('policyC').class_map('classC').cos(6).flow(
                cir=2245000, bc=624288, conform="transmit",
                violate="drop").create())
        policy_map = PolicyMap(policy_map_cfg, cfg.leaf0['id'])

        assert policy_map.retrieve() == []
        policy_map.create()
        assert policy_map.retrieve() == policy_map_cfg['policyMap']
        policy_map.delete()
        assert policy_map.retrieve() == []
コード例 #3
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classD').device(cfg.leaf0['id']).match(
            'vlan', 15).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()

        policy_map_cfg = (
            PolicyMapCfg('policyD').class_map('classD').cos(7).flow(
                cir=1122000, bc=524288, conform="transmit",
                violate="drop").create())

        policy_map = PolicyMap(policy_map_cfg, cfg.leaf0['id'])
        policy_map.create()

        services_cfg = (ServicesCfg().policy_map('policyD').port(10).create())

        services = Services(services_cfg, cfg.leaf0['id'])

        services.create()
        assert services.retrieve() == services_cfg['services']

        new_services_cfg = (
            ServicesCfg().policy_map('policyD').port(20).create())

        services.update(new_services_cfg)
        assert services.retrieve() == new_services_cfg['services']

        # clear
        services.delete()
        policy_map.delete()
        class_map.delete()
コード例 #4
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classC').device(cfg.leaf0['id']).match(
            'cos', 3).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()

        policy_map_cfg = (
            PolicyMapCfg('policyC').class_map('classC').cos(2).flow(
                cir=1122000, bc=524288, conform="transmit",
                violate="drop").create())

        policy_map = PolicyMap(policy_map_cfg, cfg.leaf0['id'])
        policy_map.create()

        services_cfg = (ServicesCfg().policy_map('policyC').port(1).create())

        services = Services(services_cfg, cfg.leaf0['id'])

        assert services.retrieve() == []
        services.create()
        assert services.retrieve() == services_cfg['services']

        services.delete()
        assert services.retrieve() == []

        # clear
        policy_map.delete()
        class_map.delete()
コード例 #5
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classD').device(cfg.leaf0['id']).match(
            'dscp', 20).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()

        policy_map_cfg = (
            PolicyMapCfg('policyD').class_map('classD').phb(3).flow(
                cir=1245000, bc=324288, conform="transmit",
                violate="drop").create())

        policy_map = PolicyMap(policy_map_cfg, cfg.leaf0['id'])
        policy_map.create()

        assert policy_map.retrieve() == policy_map_cfg['policyMap']

        new_policy_map_cfg = (
            PolicyMapCfg('policyD').class_map('classD').cos(5).create())

        policy_map.update(new_policy_map_cfg)
        assert policy_map.retrieve() == new_policy_map_cfg['policyMap']

        # clear
        policy_map.delete()
        class_map.delete()
コード例 #6
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classB').device(cfg.leaf0['id']).match(
            'cos', 5).create())

        class_map = ClassMap(class_map_cfg)

        assert class_map.retrieve() == []
        class_map.create()
        assert class_map.retrieve() == [{
            'matches': [{
                'type': 'cos',
                'option': 5
            }],
            'name':
            'classB'
        }]
        class_map.delete()
        assert class_map.retrieve() == []
コード例 #7
0
    def runTest(self):
        class_map_cfg1 = (ClassMapCfg('classE').device(cfg.leaf0['id']).match(
            'vlan', 10).create())
        class_map_cfg2 = (ClassMapCfg('classF').device(cfg.leaf1['id']).match(
            'cos', 5).create())

        class_map_cfg_list = [class_map_cfg1, class_map_cfg2]

        class_map = ClassMap(class_map_cfg_list, multiple=True)

        for device in class_map.retrieve():
            assert device['classMap'] == []

        class_map.create()

        for device in class_map.retrieve():
            if device['deviceId'] == cfg.leaf0['id']:
                assert device['classMap'] == [{
                    'matches': [{
                        'type': 'vlan',
                        'option': 10
                    }],
                    'name':
                    'classE'
                }]
            elif device['deviceId'] == cfg.leaf1['id']:
                assert device['classMap'] == [{
                    'matches': [{
                        'type': 'cos',
                        'option': 5
                    }],
                    'name':
                    'classF'
                }]

        class_map.delete()

        for device in class_map.retrieve():
            assert device['classMap'] == []
コード例 #8
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classA').device(cfg.leaf0['id']).match(
            'dscp', 34).create())

        class_map = ClassMap(class_map_cfg)

        assert class_map.retrieve() == []
        class_map.create()
        assert class_map.retrieve() == [{
            'matches': [{
                'type': 'dscp',
                'option': 34
            }],
            'name':
            'classA'
        }]

        # clear
        class_map.delete()
コード例 #9
0
    def runTest(self):
        class_map_cfg1 = (ClassMapCfg('classC').device(cfg.leaf0['id']).match(
            'cos', 6).create())
        class_map_cfg2 = (ClassMapCfg('classD').device(cfg.leaf1['id']).match(
            'precedence', 2).create())

        class_map_cfg_list = [class_map_cfg1, class_map_cfg2]

        class_map = ClassMap(class_map_cfg_list, multiple=True)

        for device in class_map.retrieve():
            assert device['classMap'] == []

        class_map.create()

        for device in class_map.retrieve():
            if device['deviceId'] == cfg.leaf0['id']:
                assert device['classMap'] == [{
                    'matches': [{
                        'type': 'cos',
                        'option': 6
                    }],
                    'name':
                    'classC'
                }]
            elif device['deviceId'] == cfg.leaf1['id']:
                assert device['classMap'] == [{
                    'matches': [{
                        'type': 'precedence',
                        'option': 2
                    }],
                    'name':
                    'classD'
                }]

        # clear
        class_map.delete()
コード例 #10
0
    def runTest(self):
        class_map_cfg = (ClassMapCfg('classB').device(cfg.leaf0['id']).match(
            'vlan', 20).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()

        policy_map_cfg = (
            PolicyMapCfg('policyB').class_map('classB').phb(2).flow(
                cir=1045000, bc=524288, conform="transmit",
                violate="drop").create())
        policy_map = PolicyMap(policy_map_cfg, cfg.leaf0['id'])

        assert policy_map.retrieve() == []
        policy_map.create()
        assert policy_map.retrieve() == policy_map_cfg['policyMap']

        # clear
        policy_map.delete()
        class_map.delete()
コード例 #11
0
    def runTest(self):
        class_map_cfg1 = (ClassMapCfg('classE').device(cfg.leaf0['id']).match(
            'cos', 2).create())
        class_map_cfg2 = (ClassMapCfg('classF').device(cfg.leaf1['id']).match(
            'precedence', 3).create())

        class_map1 = ClassMap(class_map_cfg1)
        class_map1.create()
        class_map2 = ClassMap(class_map_cfg2)
        class_map2.create()

        policy_map_cfg1 = (PolicyMapCfg('policyE').device(
            cfg.leaf0['id']).class_map('classE').cos(6).create())
        policy_map_cfg2 = (PolicyMapCfg('policyF').device(
            cfg.leaf1['id']).class_map('classF').phb(7).create())

        policy_map_cfg_list = [policy_map_cfg1, policy_map_cfg2]

        policy_map = PolicyMap(policy_map_cfg_list, multiple=True)
        policy_map.create()

        services_cfg1 = (ServicesCfg().device(
            cfg.leaf0['id']).policy_map('policyE').port(18).create())
        services_cfg2 = (ServicesCfg().device(
            cfg.leaf1['id']).policy_map('policyF').port(28).create())

        services_cfg_list = [services_cfg1, services_cfg2]

        services = Services(services_cfg_list, multiple=True)

        for device in services.retrieve():
            assert device['services'] == []

        services.create()

        for device in services.retrieve():
            if device['deviceId'] == cfg.leaf0['id']:
                assert device['services'] == services_cfg1['services']
            elif device['deviceId'] == cfg.leaf1['id']:
                assert device['services'] == services_cfg2['services']

        services.delete()
        for device in services.retrieve():
            assert device['services'] == []

        # clear
        policy_map.delete()
        class_map1.delete()
        class_map2.delete()
コード例 #12
0
    def runTest(self):
        class_map_cfg1 = (ClassMapCfg('classC').device(cfg.leaf0['id']).match(
            'vlan', 25).create())
        class_map_cfg2 = (ClassMapCfg('classD').device(cfg.leaf1['id']).match(
            'dscp', 10).create())

        class_map1 = ClassMap(class_map_cfg1)
        class_map1.create()
        class_map2 = ClassMap(class_map_cfg2)
        class_map2.create()

        policy_map_cfg1 = (PolicyMapCfg('policyC').device(
            cfg.leaf0['id']).class_map('classC').cos(3).create())
        policy_map_cfg2 = (PolicyMapCfg('policyD').device(
            cfg.leaf1['id']).class_map('classD').phb(5).create())

        policy_map_cfg_list = [policy_map_cfg1, policy_map_cfg2]

        policy_map = PolicyMap(policy_map_cfg_list, multiple=True)
        policy_map.create()

        services_cfg1 = (ServicesCfg().device(
            cfg.leaf0['id']).policy_map('policyC').port(15).create())
        services_cfg2 = (ServicesCfg().device(
            cfg.leaf1['id']).policy_map('policyD').port(25).create())

        services_cfg_list = [services_cfg1, services_cfg2]

        services = Services(services_cfg_list, multiple=True)

        for device in services.retrieve():
            assert device['services'] == []

        services.create()

        for device in services.retrieve():
            if device['deviceId'] == cfg.leaf0['id']:
                assert device['services'] == services_cfg1['services']
            elif device['deviceId'] == cfg.leaf1['id']:
                assert device['services'] == services_cfg2['services']

        # clear
        services.delete()
        policy_map.delete()
        class_map1.delete()
        class_map2.delete()
コード例 #13
0
    def runTest(self):
        class_map_cfg1 = (ClassMapCfg('classA').device(cfg.leaf0['id']).match(
            'dscp', 32).create())
        class_map_cfg2 = (ClassMapCfg('classB').device(cfg.leaf1['id']).match(
            'cos', 3).create())

        class_map1 = ClassMap(class_map_cfg1)
        class_map1.create()
        class_map2 = ClassMap(class_map_cfg2)
        class_map2.create()

        policy_map_cfg1 = (PolicyMapCfg('policyA').device(
            cfg.leaf0['id']).class_map('classA').cos(7).flow(
                cir=1245000, bc=324288, conform="transmit",
                violate="drop").create())
        policy_map_cfg2 = (PolicyMapCfg('policyB').device(
            cfg.leaf1['id']).class_map('classB').phb(3).flow(
                cir=1000000, bc=224288, conform="transmit",
                violate="drop").create())

        policy_map_cfg_list = [policy_map_cfg1, policy_map_cfg2]

        policy_map = PolicyMap(policy_map_cfg_list, multiple=True)
        policy_map.create()

        services_cfg1 = (ServicesCfg().device(
            cfg.leaf0['id']).policy_map('policyA').port(10).create())
        services_cfg2 = (ServicesCfg().device(
            cfg.leaf1['id']).policy_map('policyB').port(20).create())

        services_cfg_list = [services_cfg1, services_cfg2]

        services = Services(services_cfg_list, multiple=True)

        for device in services.retrieve():
            assert device['services'] == []

        services.create()

        for device in services.retrieve():
            if device['deviceId'] == cfg.leaf0['id']:
                assert device['services'] == services_cfg1['services']
            elif device['deviceId'] == cfg.leaf1['id']:
                assert device['services'] == services_cfg2['services']

        # clear
        services.delete()
        policy_map.delete()
        class_map1.delete()
        class_map2.delete()
コード例 #14
0
    def runTest(self):
        class_map_cfg1 = (ClassMapCfg('classE').device(cfg.leaf0['id']).match(
            'vlan', 50).create())
        class_map_cfg2 = (ClassMapCfg('classF').device(cfg.leaf1['id']).match(
            'dscp', 60).create())

        class_map1 = ClassMap(class_map_cfg1)
        class_map1.create()
        class_map2 = ClassMap(class_map_cfg2)
        class_map2.create()

        policy_map_cfg1 = (PolicyMapCfg('policyE').device(
            cfg.leaf0['id']).class_map('classE').cos(2).flow(
                cir=1111000, bc=524288, conform="transmit",
                violate="drop").create())
        policy_map_cfg2 = (PolicyMapCfg('policyF').device(
            cfg.leaf1['id']).class_map('classF').cos(5).flow(
                cir=1660000, bc=114288, conform="transmit",
                violate="drop").create())

        policy_map_cfg_list = [policy_map_cfg1, policy_map_cfg2]

        policy_map = PolicyMap(policy_map_cfg_list, multiple=True)

        for device in policy_map.retrieve():
            assert device['policyMap'] == []

        policy_map.create()

        for device in policy_map.retrieve():
            if device['deviceId'] == cfg.leaf0['id']:
                assert device['policyMap'] == policy_map_cfg1['policyMap']
            elif device['deviceId'] == cfg.leaf1['id']:
                assert device['policyMap'] == policy_map_cfg2['policyMap']

        policy_map.delete()

        for device in policy_map.retrieve():
            assert device['policyMap'] == []

        # clear
        class_map1.delete()
        class_map2.delete()
コード例 #15
0
    def runTest(self):
        port_configuration()

        class_map_cfg = (ClassMapCfg('classA').device(cfg.leaf0['id']).match(
            'vlan', 10).create())

        class_map = ClassMap(class_map_cfg)
        class_map.create()

        policy_map_cfg = (
            PolicyMapCfg('policyA').class_map('classA').cos(7).create())

        policy_map = PolicyMap(policy_map_cfg, cfg.leaf0['id'])
        policy_map.create()

        services_cfg = (ServicesCfg().policy_map('policyA').port(
            cfg.leaf0['portA'].number).create())

        services = Services(services_cfg, cfg.leaf0['id'])
        services.create()

        vlan_id = 10
        ports = sorted(config["port_map"].keys())

        vlan_cfg_sw1 = {}
        vlan_cfg_sw1['device-id'] = cfg.leaf0['id']
        vlan_cfg_sw1['ports'] = [{
            "port": 46,
            "native": vlan_id,
            "mode": "hybrid",
            "vlans": [str(vlan_id) + "/untag"]
        }, {
            "port": 48,
            "native": vlan_id,
            "mode": "hybrid",
            "vlans": [str(vlan_id) + "/tag"]
        }]

        vlan_sw1 = StaticVLAN(vlan_cfg_sw1).build()

        wait_for_seconds(3)

        pkt_from_p0_to_p1 = simple_tcp_packet(pktlen=68,
                                              dl_vlan_enable=True,
                                              vlan_vid=vlan_id,
                                              eth_dst=cfg.host1['mac'],
                                              eth_src=cfg.host0['mac'],
                                              ip_dst=cfg.host1['ip'],
                                              ip_src=cfg.host0['ip'])

        expected_pkt = simple_tcp_packet(pktlen=68,
                                         dl_vlan_enable=True,
                                         vlan_vid=vlan_id,
                                         vlan_pcp=7,
                                         eth_dst=cfg.host1['mac'],
                                         eth_src=cfg.host0['mac'],
                                         ip_dst=cfg.host1['ip'],
                                         ip_src=cfg.host0['ip'])

        self.dataplane.send(ports[0], str(pkt_from_p0_to_p1))
        verify_packet(self, str(expected_pkt), ports[1])

        # clear
        services.delete()
        policy_map.delete()
        class_map.delete()