@@ -354,6 +354,20 @@ def create_vxlan_tunnel(dvs, name, src_ip):
354
354
)
355
355
356
356
357
+ def create_vxlan_tunnel_map (dvs , tunnel_name , tunnel_map_entry_name , vlan , vni_id ):
358
+ conf_db = swsscommon .DBConnector (swsscommon .CONFIG_DB , dvs .redis_sock , 0 )
359
+
360
+ # create the VXLAN tunnel map entry in Config DB
361
+ create_entry_tbl (
362
+ conf_db ,
363
+ "VXLAN_TUNNEL_MAP" , '|' , "%s|%s" % (tunnel_name , tunnel_map_entry_name ),
364
+ [
365
+ ("vni" , vni_id ),
366
+ ("vlan" , vlan ),
367
+ ],
368
+ )
369
+
370
+
357
371
def get_lo (dvs ):
358
372
asic_db = swsscommon .DBConnector (swsscommon .ASIC_DB , dvs .redis_sock , 0 )
359
373
vr_id = get_default_vr_id (dvs )
@@ -451,34 +465,46 @@ def check_vxlan_tunnel(self, dvs, tunnel_name, src_ip):
451
465
asic_db = swsscommon .DBConnector (swsscommon .ASIC_DB , dvs .redis_sock , 0 )
452
466
global loopback_id , def_vr_id
453
467
454
- tunnel_map_id = get_created_entries (asic_db , self .ASIC_TUNNEL_MAP , self .tunnel_map_ids , 2 )
468
+ tunnel_map_id = get_created_entries (asic_db , self .ASIC_TUNNEL_MAP , self .tunnel_map_ids , 4 )
455
469
tunnel_id = get_created_entry (asic_db , self .ASIC_TUNNEL_TABLE , self .tunnel_ids )
456
470
tunnel_term_id = get_created_entry (asic_db , self .ASIC_TUNNEL_TERM_ENTRY , self .tunnel_term_ids )
457
471
458
472
# check that the vxlan tunnel termination are there
459
- assert how_many_entries_exist (asic_db , self .ASIC_TUNNEL_MAP ) == (len (self .tunnel_map_ids ) + 2 ), "The TUNNEL_MAP wasn't created"
473
+ assert how_many_entries_exist (asic_db , self .ASIC_TUNNEL_MAP ) == (len (self .tunnel_map_ids ) + 4 ), "The TUNNEL_MAP wasn't created"
460
474
assert how_many_entries_exist (asic_db , self .ASIC_TUNNEL_MAP_ENTRY ) == len (self .tunnel_map_entry_ids ), "The TUNNEL_MAP_ENTRY is created"
461
475
assert how_many_entries_exist (asic_db , self .ASIC_TUNNEL_TABLE ) == (len (self .tunnel_ids ) + 1 ), "The TUNNEL wasn't created"
462
476
assert how_many_entries_exist (asic_db , self .ASIC_TUNNEL_TERM_ENTRY ) == (len (self .tunnel_term_ids ) + 1 ), "The TUNNEL_TERM_TABLE_ENTRY wasm't created"
463
477
464
- check_object (asic_db , self .ASIC_TUNNEL_MAP , tunnel_map_id [0 ],
478
+ check_object (asic_db , self .ASIC_TUNNEL_MAP , tunnel_map_id [2 ],
465
479
{
466
480
'SAI_TUNNEL_MAP_ATTR_TYPE' : 'SAI_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID' ,
467
481
}
468
482
)
469
483
470
- check_object (asic_db , self .ASIC_TUNNEL_MAP , tunnel_map_id [1 ],
484
+ check_object (asic_db , self .ASIC_TUNNEL_MAP , tunnel_map_id [3 ],
471
485
{
472
486
'SAI_TUNNEL_MAP_ATTR_TYPE' : 'SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI' ,
473
487
}
474
488
)
475
489
490
+ check_object (asic_db , self .ASIC_TUNNEL_MAP , tunnel_map_id [0 ],
491
+ {
492
+ 'SAI_TUNNEL_MAP_ATTR_TYPE' : 'SAI_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID' ,
493
+ }
494
+ )
495
+
496
+ check_object (asic_db , self .ASIC_TUNNEL_MAP , tunnel_map_id [1 ],
497
+ {
498
+ 'SAI_TUNNEL_MAP_ATTR_TYPE' : 'SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI' ,
499
+ }
500
+ )
501
+
476
502
check_object (asic_db , self .ASIC_TUNNEL_TABLE , tunnel_id ,
477
503
{
478
504
'SAI_TUNNEL_ATTR_TYPE' : 'SAI_TUNNEL_TYPE_VXLAN' ,
479
505
'SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE' : loopback_id ,
480
- 'SAI_TUNNEL_ATTR_DECAP_MAPPERS' : '1 :%s' % tunnel_map_id [0 ],
481
- 'SAI_TUNNEL_ATTR_ENCAP_MAPPERS' : '1 :%s' % tunnel_map_id [1 ],
506
+ 'SAI_TUNNEL_ATTR_DECAP_MAPPERS' : '2 :%s,%s ' % ( tunnel_map_id [0 ], tunnel_map_id [ 2 ]) ,
507
+ 'SAI_TUNNEL_ATTR_ENCAP_MAPPERS' : '2 :%s,%s ' % ( tunnel_map_id [1 ], tunnel_map_id [ 3 ]) ,
482
508
'SAI_TUNNEL_ATTR_ENCAP_SRC_IP' : src_ip ,
483
509
}
484
510
)
@@ -506,7 +532,7 @@ def check_vxlan_tunnel_entry(self, dvs, tunnel_name, vnet_name, vni_id):
506
532
time .sleep (2 )
507
533
508
534
if (self .tunnel_map_map .get (tunnel_name ) is None ):
509
- tunnel_map_id = get_created_entries (asic_db , self .ASIC_TUNNEL_MAP , self .tunnel_map_ids , 2 )
535
+ tunnel_map_id = get_created_entries (asic_db , self .ASIC_TUNNEL_MAP , self .tunnel_map_ids , 4 )
510
536
else :
511
537
tunnel_map_id = self .tunnel_map_map [tunnel_name ]
512
538
@@ -518,7 +544,7 @@ def check_vxlan_tunnel_entry(self, dvs, tunnel_name, vnet_name, vni_id):
518
544
check_object (asic_db , self .ASIC_TUNNEL_MAP_ENTRY , tunnel_map_entry_id [0 ],
519
545
{
520
546
'SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE' : 'SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI' ,
521
- 'SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP' : tunnel_map_id [1 ],
547
+ 'SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP' : tunnel_map_id [3 ],
522
548
'SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY' : self .vr_map [vnet_name ].get ('ing' ),
523
549
'SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE' : vni_id ,
524
550
}
@@ -527,7 +553,7 @@ def check_vxlan_tunnel_entry(self, dvs, tunnel_name, vnet_name, vni_id):
527
553
check_object (asic_db , self .ASIC_TUNNEL_MAP_ENTRY , tunnel_map_entry_id [1 ],
528
554
{
529
555
'SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE' : 'SAI_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID' ,
530
- 'SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP' : tunnel_map_id [0 ],
556
+ 'SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP' : tunnel_map_id [2 ],
531
557
'SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY' : vni_id ,
532
558
'SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE' : self .vr_map [vnet_name ].get ('egr' ),
533
559
}
@@ -1080,6 +1106,25 @@ def test_vnet_orch_5(self, dvs, testlog):
1080
1106
vnet_obj .check_default_vnet_entry (dvs , 'Vnet_5' )
1081
1107
vnet_obj .check_vxlan_tunnel_entry (dvs , tunnel_name , 'Vnet_5' , '4789' )
1082
1108
1109
+ '''
1110
+ Test 6 - Test VxLAN tunnel with multiple maps
1111
+ '''
1112
+ def test_vnet_vxlan_multi_map (self , dvs , testlog ):
1113
+ vnet_obj = self .get_vnet_obj ()
1114
+
1115
+ tunnel_name = 'tunnel_v4'
1116
+
1117
+ vnet_obj .fetch_exist_entries (dvs )
1118
+
1119
+ create_vxlan_tunnel (dvs , tunnel_name , '10.1.0.32' )
1120
+ create_vnet_entry (dvs , 'Vnet1' , tunnel_name , '10001' , "" )
1121
+
1122
+ vnet_obj .check_vnet_entry (dvs , 'Vnet1' )
1123
+ vnet_obj .check_vxlan_tunnel_entry (dvs , tunnel_name , 'Vnet1' , '10001' )
1124
+ vnet_obj .check_vxlan_tunnel (dvs , tunnel_name , '10.1.0.32' )
1125
+
1126
+ create_vxlan_tunnel_map (dvs , tunnel_name , 'map_1' , 'Vlan1000' , '1000' )
1127
+
1083
1128
1084
1129
# Add Dummy always-pass test at end as workaroud
1085
1130
# for issue when Flaky fail on final test it invokes module tear-down before retrying
0 commit comments