Здесь у меня есть два блока во входном файле: один начинается с «interface GigabitEthernet0 / 1/1» [субблок - «экземпляр службы»], а другой - с «interface BDI101». Каждый раз в al oop мне приходится сравнивать значение домена моста 1-го блока со значением BDI второго блока. Если значение совпадает, он должен вернуть значение BDI.
Input:
interface GigabitEthernet0/1/1
description ff=A825
service instance 1010
description ff=A825
encapsulation dot1q 10
bridge-domain 101
!
service instance 1002
description ff=A825
encapsulation dot1q 10
bridge-domain 102
!
!
interface BDI101
description vf=4445:cn=VODAMS:tl=3C02093047:st=act:
vrf forwarding VF_RAN_SPK_OMCH_VRF1
!
interface BDI103
description vf=4445:cn=VODAMS:tl=3C02093047:st=act:
vrf forwarding VF_RAN_SPK_OMCH_VRF1
!
Code:
class a
def compare(self):
filePattern = '!*\n' + "interface" + "\sBDI" + ".*"
bdiPattern = re.compile(filePattern)
filePartPattern = '!*\n' + "interface" + '\s+.*' + "Ethernet" + '.*'
pattern = re.compile(filePartPattern)
for fileLine in fileLines:
checkPartPattern = re.findall(bdiPattern,fileLine)
checkFilePartPattern = re.findall(pattern, fileLine)
for num in checkPartPattern:
interBdiBlock = bdiBlock = re.search('('+num+'\n.*?)'+'!',logText,re.DOTALL)
value = interBdiBlock.group(1)
bdiValue = num.split()[2]
bdi = re.search(r"([a-z]+)([0-9]+)", bdiValue, re.I)
items = bdi.groups()
BDI.append(items[1])
#print(BDI)
for domain in checkFilePartPattern:
interfaceBlock = re.search('('+domain+'\n.*?)'+'\n!',logText, re.DOTALL)
if interfaceBlock is not None:
block = interfaceBlock.group(1)
servicePattern = '\sservice instance' + '\s.*' + 'ethernet'
pattern1 = re.compile(servicePattern, re.I)
checkPattern = re.findall(pattern1, block)
if len(checkPattern) != 0:
for service in checkPattern:
serviceData = re.search('(' + service + '.*?\n)' + '\sservice', block, re.DOTALL)
if serviceData is not None:
block2 = serviceData.group(1)
name = re.search("\s\sbridge-domain" + "\s.*", block2)
if name is not None:
block5 = name.group(0).split()
BD.append(block5[1])
This is what I have tried till now but got stuck while comparing BDI and BD values.
Expected output : GigabitEthernet0/1/1.BDI101