Sync_diff() не может сохранить последовательность/порядок конфигурации F5Python

Программы на Python
Anonymous
Sync_diff() не может сохранить последовательность/порядок конфигурации F5

Сообщение Anonymous »

В конечном итоге я пытаюсь разобраться в обозначениях фигурных скобок. Аналогично выводу «показать | сравнить» в Junos. К сожалению, установка синтаксиса «junos» не сохраняет фигурные скобки в выводе. Однако установка значения «ios» помогает. Кажется, он выполнил большую часть работы, когда в коде F5 синтаксис установлен на «ios», однако он все еще жалуется, что в некоторых частях есть разница, где ее быть не должно.
from ciscoconfparse import CiscoConfParse

BASELINE = """ltm virtual ACME {
destination 192.168.1.191:http
ip-protocol tcp
mask 255.255.255.255
pool pool1
profiles {
http { }
tcp { }
}
rules {
MOBILE
}
source 0.0.0.0/0
source-address-translation {
type automap
}
translate-address enabled
translate-port enabled
vs-index 17
}""".splitlines()

REQUIRED = """ltm virtual ACME {
destination 192.168.2.191:http
ip-protocol tcp
mask 255.255.255.255
pool pool2
profiles {
http { }
tcp { }
}
rules {
BLAH
}
source 0.0.0.0/0
source-address-translation {
type automap
}
translate-address enabled
translate-port enabled
vs-index 17
}""".splitlines()

parse = CiscoConfParse(BASELINE, syntax='ios')
print('\n'.join(parse.sync_diff(REQUIRED, '')))

Выдает следующее:
ltm virtual ACME {
no }
no rules {
no destination 192.168.1.191:http
no pool pool1
no MOBILE
ltm virtual ACME {
destination 192.168.2.191:http
pool pool2
rules {
BLAH
}

Обратите внимание на вторую и третью строку вывода.
no }
no rules {

Порядок отличается от требуемого кода, и я думаю, поэтому он выдает «разницу». Есть ли способ обеспечить сохранение последовательности?
Ожидаемый результат:
ltm virtual ACME {
no destination 192.168.1.191:http
no pool pool1
rules {
no MOBILE
}
ltm virtual ACME {
destination 192.168.2.191:http
pool pool2
rules {
BLAH
}


Подробнее здесь: https://stackoverflow.com/questions/649 ... cing-order

Вернуться в «Python»