requirements + clean prints + colored diff
This commit is contained in:
parent
9894c0f240
commit
e5b989b367
2 changed files with 15 additions and 6 deletions
|
@ -5,6 +5,7 @@ import logging
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
import colorlog
|
import colorlog
|
||||||
|
import termcolor
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from jinja2 import Template
|
from jinja2 import Template
|
||||||
|
@ -21,7 +22,6 @@ def syntax_from_range(value, vlan_syntax=False):
|
||||||
syntax = ""
|
syntax = ""
|
||||||
in_range = False
|
in_range = False
|
||||||
for i in value:
|
for i in value:
|
||||||
print(i, type(i))
|
|
||||||
if prec is None or prec != i - 1:
|
if prec is None or prec != i - 1:
|
||||||
if syntax == "":
|
if syntax == "":
|
||||||
syntax = str(i)
|
syntax = str(i)
|
||||||
|
@ -105,7 +105,6 @@ def gen_interfaces(switch_config):
|
||||||
if_profile = yaml.load(open("configs/profiles/{}.yml".format(if_config.get("profile"))), yaml.Loader)
|
if_profile = yaml.load(open("configs/profiles/{}.yml".format(if_config.get("profile"))), yaml.Loader)
|
||||||
iface = range_from_syntax(iface)
|
iface = range_from_syntax(iface)
|
||||||
for iface_number in iface:
|
for iface_number in iface:
|
||||||
print("if_num", iface_number)
|
|
||||||
if not if_profile.get("ignore_port", False):
|
if not if_profile.get("ignore_port", False):
|
||||||
interface = {
|
interface = {
|
||||||
"number": iface_number,
|
"number": iface_number,
|
||||||
|
@ -146,9 +145,6 @@ def gen_interfaces(switch_config):
|
||||||
def gen_conf(master_config, switch_config, old_config):
|
def gen_conf(master_config, switch_config, old_config):
|
||||||
header = "\n".join(old_config.split("\n")[:2])
|
header = "\n".join(old_config.split("\n")[:2])
|
||||||
interfaces, vlans, mac_based_ports, ra_guard_ports, dhcp_snooping_vlans = gen_interfaces(switch_config)
|
interfaces, vlans, mac_based_ports, ra_guard_ports, dhcp_snooping_vlans = gen_interfaces(switch_config)
|
||||||
print("mac", set(mac_based_ports))
|
|
||||||
print("ra", set(ra_guard_ports))
|
|
||||||
print("dhcp", set(dhcp_snooping_vlans))
|
|
||||||
config_dict = {
|
config_dict = {
|
||||||
"header": header,
|
"header": header,
|
||||||
"hostname": switch_config.get("hostname"),
|
"hostname": switch_config.get("hostname"),
|
||||||
|
@ -211,6 +207,13 @@ if __name__ == "__main__":
|
||||||
logging.info("Generating configuration for {}".format(args.switch_name))
|
logging.info("Generating configuration for {}".format(args.switch_name))
|
||||||
configuration = gen_conf(master_config, switch_config, old_config)
|
configuration = gen_conf(master_config, switch_config, old_config)
|
||||||
for line in difflib.unified_diff(old_config.split("\n"), configuration.split("\n"), fromfile='origin', tofile='new', lineterm=""):
|
for line in difflib.unified_diff(old_config.split("\n"), configuration.split("\n"), fromfile='origin', tofile='new', lineterm=""):
|
||||||
|
if line.startswith("-"):
|
||||||
|
termcolor.cprint(line, "red")
|
||||||
|
elif line.startswith("+"):
|
||||||
|
termcolor.cprint(line, "green")
|
||||||
|
elif line.startswith("@"):
|
||||||
|
termcolor.cprint(line, "yellow")
|
||||||
|
else:
|
||||||
print(line)
|
print(line)
|
||||||
if args.dry_run or input("Voulez-vous déployer la configuration sur le switch ? y/[n]").lower() not in ["o","y"]:
|
if args.dry_run or input("Voulez-vous déployer la configuration sur le switch ? y/[n]").lower() not in ["o","y"]:
|
||||||
logger.info("Aborting deployement")
|
logger.info("Aborting deployement")
|
||||||
|
|
|
@ -1 +1,7 @@
|
||||||
|
colorlog==4.2.1
|
||||||
|
Jinja2==2.11.2
|
||||||
|
MarkupSafe==1.1.1
|
||||||
|
pkg-resources==0.0.0
|
||||||
|
PyYAML==5.3.1
|
||||||
ssh2-python==0.18.0.post1
|
ssh2-python==0.18.0.post1
|
||||||
|
termcolor==1.1.0
|
||||||
|
|
Loading…
Reference in a new issue