Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions junos_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,52 @@ def replace_curly(s):
return s.replace("{", "{\n").replace("}", "\n}")


def vlan_members_to_leaves(data):
new_data = []
in_members_array = False
for line in data.splitlines():
if line.strip().startswith("members ["):
in_members_array = True

if in_members_array:
if "];" in line:
in_members_array = False
new_leaves_update(line, new_data)

else:
new_data.append(line)
return "\n".join(new_data)


def new_leaves_update(line, new_data):
chunks = line.split()
for chunk in chunks:
if chunks[0] == "members ":
startwhites = line[: len(line) - len(line.lstrip())]
new_data.append(f"{startwhites}{chunks[0]} {chunk};")
elif chunk in ["];", "]", "[", "members"]:
continue
else:
startwhites = line[: len(line) - len(line.lstrip())]
new_data.append(f"{startwhites}members {chunk};")


def new_leaf_line(line):
chunks = line.split()
for chunk in chunks:
if chunks[0] == "members ":
startwhites = line[: len(line) - len(line.lstrip())]
line = f"{startwhites}{chunks[0]} {chunk};"
elif chunk in ["];", "]", "[", "members"]:
continue
else:
startwhites = line[: len(line) - len(line.lstrip())]
line = f"{startwhites}members {chunk};"

in_members_array = False if "];" in line else True
return in_members_array, line


def get_set_config(filein, ignore_annotations):
try:
with open(filein, "r") as f:
Expand All @@ -34,6 +80,7 @@ def get_set_config(filein, ignore_annotations):
print("Error: Could not read input file:", filein)
exit()

data = vlan_members_to_leaves(data)
# Add \n for one-line configs
if not '"' in data:
data = replace_curly(data)
Expand Down
3 changes: 2 additions & 1 deletion test_junos_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@ def test_junos_converter(capsys):

test_files = filter(lambda x: ".set" not in x, os.listdir(directory))
for file in test_files:

get_set_config(directory + file, False)
out, err = capsys.readouterr()

# Make the output visible in the pytest report
# import sys

# sys.stdout.write(out)

# Convert unicode to str and remove the last carriage return
Expand Down
59 changes: 59 additions & 0 deletions tests/example9.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
interfaces {
ge-0/0/5 {
native-vlan-id 706;
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members [ VLAN842 VLAN841 VLAN703 VLAN704 VLAN900 VLAN706 VLAN800 VLAN802 VLAN811 VLAN826 VLAN828 VLAN830 VLAN999 VLAN839 VLAN840 VLAN684 VLAN846 VLAN848 ];
}
}
}
}
ge-0/0/6 {
unit 0 {
family ethernet-switching {
interface-mode access;
vlan {
members VLAN710;
}
}
}
}
ae1 {
description "Interfaces ae1";
aggregated-ether-options {
lacp {
active;
periodic slow;
}
}
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members [ VLAN101 VLAN102 VLAN103 VLAN110 VLAN684 VLAN310 VLAN699 VLAN700 VLAN702 VLAN703 VLAN704 VLAN705 VLAN706 VLAN708 VLAN709 VLAN710 VLAN711 VLAN712 VLAN713 VLAN740 VLAN741 VLAN800 VLAN801 VLAN802 VLAN811 VLAN812 VLAN813 VLAN814 VLAN815 VLAN816 VLAN817 VLAN818 VLAN819 VLAN820 VLAN821 VLAN822 VLAN823 VLAN826 VLAN827 VLAN828 VLAN829 VLAN830 VLAN831 VLAN835 VLAN839 VLAN840 VLAN843 VLAN844 VLAN848 VLAN845 VLAN846 VLAN850 VLAN847 VLAN849 VLAN851 VLAN836 VLAN837 VLAN899 VLAN900 VLAN912 VLAN999 VLAN841 VLAN842
1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102
VLAN833 VLAN854 VLAN855 VLAN856 VLAN857 VLAN858 VLAN859 VLAN860 VLAN891 VLAN892 VLAN893 VLAN895 VLAN852 894 ];
}
}
}
}
ae2 {
description "Interfaces ae2";
aggregated-ether-options {
lacp {
active;
periodic slow;
}
}
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members [ VLAN101 VLAN102 ];
}
}
}
}
}
211 changes: 211 additions & 0 deletions tests/example9.set
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
set interfaces ge-0/0/5 native-vlan-id 706
set interfaces ge-0/0/5 unit 0 family ethernet-switching interface-mode trunk
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN842
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN841
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN703
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN704
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN900
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN706
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN800
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN802
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN811
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN826
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN828
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN830
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN999
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN839
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN840
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN684
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN846
set interfaces ge-0/0/5 unit 0 family ethernet-switching vlan members VLAN848
set interfaces ge-0/0/6 unit 0 family ethernet-switching interface-mode access
set interfaces ge-0/0/6 unit 0 family ethernet-switching vlan members VLAN710
set interfaces ae1 description "Interfaces ae1"
set interfaces ae1 aggregated-ether-options lacp active
set interfaces ae1 aggregated-ether-options lacp periodic slow
set interfaces ae1 unit 0 family ethernet-switching interface-mode trunk
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN101
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN102
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN103
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN110
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN684
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN310
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN699
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN700
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN702
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN703
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN704
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN705
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN706
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN708
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN709
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN710
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN711
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN712
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN713
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN740
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN741
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN800
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN801
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN802
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN811
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN812
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN813
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN814
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN815
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN816
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN817
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN818
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN819
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN820
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN821
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN822
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN823
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN826
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN827
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN828
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN829
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN830
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN831
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN835
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN839
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN840
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN843
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN844
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN848
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN845
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN846
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN850
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN847
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN849
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN851
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN836
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN837
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN899
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN900
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN912
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN999
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN841
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN842
set interfaces ae1 unit 0 family ethernet-switching vlan members 1001
set interfaces ae1 unit 0 family ethernet-switching vlan members 1002
set interfaces ae1 unit 0 family ethernet-switching vlan members 1003
set interfaces ae1 unit 0 family ethernet-switching vlan members 1004
set interfaces ae1 unit 0 family ethernet-switching vlan members 1005
set interfaces ae1 unit 0 family ethernet-switching vlan members 1006
set interfaces ae1 unit 0 family ethernet-switching vlan members 1007
set interfaces ae1 unit 0 family ethernet-switching vlan members 1008
set interfaces ae1 unit 0 family ethernet-switching vlan members 1009
set interfaces ae1 unit 0 family ethernet-switching vlan members 1010
set interfaces ae1 unit 0 family ethernet-switching vlan members 1011
set interfaces ae1 unit 0 family ethernet-switching vlan members 1012
set interfaces ae1 unit 0 family ethernet-switching vlan members 1013
set interfaces ae1 unit 0 family ethernet-switching vlan members 1014
set interfaces ae1 unit 0 family ethernet-switching vlan members 1015
set interfaces ae1 unit 0 family ethernet-switching vlan members 1016
set interfaces ae1 unit 0 family ethernet-switching vlan members 1017
set interfaces ae1 unit 0 family ethernet-switching vlan members 1018
set interfaces ae1 unit 0 family ethernet-switching vlan members 1019
set interfaces ae1 unit 0 family ethernet-switching vlan members 1020
set interfaces ae1 unit 0 family ethernet-switching vlan members 1021
set interfaces ae1 unit 0 family ethernet-switching vlan members 1022
set interfaces ae1 unit 0 family ethernet-switching vlan members 1023
set interfaces ae1 unit 0 family ethernet-switching vlan members 1024
set interfaces ae1 unit 0 family ethernet-switching vlan members 1025
set interfaces ae1 unit 0 family ethernet-switching vlan members 1026
set interfaces ae1 unit 0 family ethernet-switching vlan members 1027
set interfaces ae1 unit 0 family ethernet-switching vlan members 1028
set interfaces ae1 unit 0 family ethernet-switching vlan members 1029
set interfaces ae1 unit 0 family ethernet-switching vlan members 1030
set interfaces ae1 unit 0 family ethernet-switching vlan members 1031
set interfaces ae1 unit 0 family ethernet-switching vlan members 1032
set interfaces ae1 unit 0 family ethernet-switching vlan members 1033
set interfaces ae1 unit 0 family ethernet-switching vlan members 1034
set interfaces ae1 unit 0 family ethernet-switching vlan members 1035
set interfaces ae1 unit 0 family ethernet-switching vlan members 1036
set interfaces ae1 unit 0 family ethernet-switching vlan members 1037
set interfaces ae1 unit 0 family ethernet-switching vlan members 1038
set interfaces ae1 unit 0 family ethernet-switching vlan members 1039
set interfaces ae1 unit 0 family ethernet-switching vlan members 1040
set interfaces ae1 unit 0 family ethernet-switching vlan members 1041
set interfaces ae1 unit 0 family ethernet-switching vlan members 1042
set interfaces ae1 unit 0 family ethernet-switching vlan members 1043
set interfaces ae1 unit 0 family ethernet-switching vlan members 1044
set interfaces ae1 unit 0 family ethernet-switching vlan members 1045
set interfaces ae1 unit 0 family ethernet-switching vlan members 1046
set interfaces ae1 unit 0 family ethernet-switching vlan members 1047
set interfaces ae1 unit 0 family ethernet-switching vlan members 1048
set interfaces ae1 unit 0 family ethernet-switching vlan members 1049
set interfaces ae1 unit 0 family ethernet-switching vlan members 1050
set interfaces ae1 unit 0 family ethernet-switching vlan members 1051
set interfaces ae1 unit 0 family ethernet-switching vlan members 1052
set interfaces ae1 unit 0 family ethernet-switching vlan members 1053
set interfaces ae1 unit 0 family ethernet-switching vlan members 1054
set interfaces ae1 unit 0 family ethernet-switching vlan members 1055
set interfaces ae1 unit 0 family ethernet-switching vlan members 1056
set interfaces ae1 unit 0 family ethernet-switching vlan members 1057
set interfaces ae1 unit 0 family ethernet-switching vlan members 1058
set interfaces ae1 unit 0 family ethernet-switching vlan members 1059
set interfaces ae1 unit 0 family ethernet-switching vlan members 1060
set interfaces ae1 unit 0 family ethernet-switching vlan members 1061
set interfaces ae1 unit 0 family ethernet-switching vlan members 1062
set interfaces ae1 unit 0 family ethernet-switching vlan members 1063
set interfaces ae1 unit 0 family ethernet-switching vlan members 1064
set interfaces ae1 unit 0 family ethernet-switching vlan members 1065
set interfaces ae1 unit 0 family ethernet-switching vlan members 1066
set interfaces ae1 unit 0 family ethernet-switching vlan members 1067
set interfaces ae1 unit 0 family ethernet-switching vlan members 1068
set interfaces ae1 unit 0 family ethernet-switching vlan members 1069
set interfaces ae1 unit 0 family ethernet-switching vlan members 1070
set interfaces ae1 unit 0 family ethernet-switching vlan members 1071
set interfaces ae1 unit 0 family ethernet-switching vlan members 1072
set interfaces ae1 unit 0 family ethernet-switching vlan members 1073
set interfaces ae1 unit 0 family ethernet-switching vlan members 1074
set interfaces ae1 unit 0 family ethernet-switching vlan members 1075
set interfaces ae1 unit 0 family ethernet-switching vlan members 1076
set interfaces ae1 unit 0 family ethernet-switching vlan members 1077
set interfaces ae1 unit 0 family ethernet-switching vlan members 1078
set interfaces ae1 unit 0 family ethernet-switching vlan members 1079
set interfaces ae1 unit 0 family ethernet-switching vlan members 1080
set interfaces ae1 unit 0 family ethernet-switching vlan members 1081
set interfaces ae1 unit 0 family ethernet-switching vlan members 1082
set interfaces ae1 unit 0 family ethernet-switching vlan members 1083
set interfaces ae1 unit 0 family ethernet-switching vlan members 1084
set interfaces ae1 unit 0 family ethernet-switching vlan members 1085
set interfaces ae1 unit 0 family ethernet-switching vlan members 1086
set interfaces ae1 unit 0 family ethernet-switching vlan members 1087
set interfaces ae1 unit 0 family ethernet-switching vlan members 1088
set interfaces ae1 unit 0 family ethernet-switching vlan members 1089
set interfaces ae1 unit 0 family ethernet-switching vlan members 1090
set interfaces ae1 unit 0 family ethernet-switching vlan members 1091
set interfaces ae1 unit 0 family ethernet-switching vlan members 1092
set interfaces ae1 unit 0 family ethernet-switching vlan members 1093
set interfaces ae1 unit 0 family ethernet-switching vlan members 1094
set interfaces ae1 unit 0 family ethernet-switching vlan members 1095
set interfaces ae1 unit 0 family ethernet-switching vlan members 1096
set interfaces ae1 unit 0 family ethernet-switching vlan members 1097
set interfaces ae1 unit 0 family ethernet-switching vlan members 1098
set interfaces ae1 unit 0 family ethernet-switching vlan members 1099
set interfaces ae1 unit 0 family ethernet-switching vlan members 1100
set interfaces ae1 unit 0 family ethernet-switching vlan members 1101
set interfaces ae1 unit 0 family ethernet-switching vlan members 1102
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN833
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN854
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN855
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN856
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN857
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN858
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN859
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN860
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN891
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN892
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN893
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN895
set interfaces ae1 unit 0 family ethernet-switching vlan members VLAN852
set interfaces ae1 unit 0 family ethernet-switching vlan members 894
set interfaces ae2 description "Interfaces ae2"
set interfaces ae2 aggregated-ether-options lacp active
set interfaces ae2 aggregated-ether-options lacp periodic slow
set interfaces ae2 unit 0 family ethernet-switching interface-mode trunk
set interfaces ae2 unit 0 family ethernet-switching vlan members VLAN101
set interfaces ae2 unit 0 family ethernet-switching vlan members VLAN102