From 4d0219b691b53057ebd53765971fa216999e6255 Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Sat, 13 Oct 2018 22:46:46 +0200 Subject: [PATCH] Fix port profile + add datetime to template --- main.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/main.py b/main.py index f87f5bc..6178080 100644 --- a/main.py +++ b/main.py @@ -9,7 +9,7 @@ from jinja2 import Environment, FileSystemLoader import requests import base64 import json - +import datetime import sys config = ConfigParser() @@ -32,7 +32,6 @@ ENV = Environment(loader=FileSystemLoader('.')) # Création du template final avec les valeurs contenues dans le dictionnaire "valeurs" - Ces valeurs sont positionnées dans un objet "temp", qui sera utilisé par le moteur, et que l'on retrouve dans le template. - class Switch: @@ -53,7 +52,7 @@ class Switch: def preprocess_hp(self): """Prérempli certains valeurs renvoyées directement à jinja, pour plus de simplicité""" - + def add_to_vlans(vlans, vlan, port, tagged=True): if not vlan['vlan_id'] in vlans: if not tagged: @@ -69,10 +68,10 @@ class Switch: vlans = dict() for port in self.switch['ports']: - if port['get_port_profil']['vlan_untagged']: - add_to_vlans(vlans, port['get_port_profil']['vlan_untagged'], port, tagged=False) - if port['get_port_profil']['vlan_tagged']: - for vlan in port['get_port_profil']['vlan_tagged']: + if port['get_port_profile']['vlan_untagged']: + add_to_vlans(vlans, port['get_port_profile']['vlan_untagged'], port, tagged=False) + if port['get_port_profile']['vlan_tagged']: + for vlan in port['get_port_profile']['vlan_tagged']: add_to_vlans(vlans, vlan, port) #Trie les ip par vlan, et les ajoute ainsi que les subnet @@ -91,8 +90,8 @@ class Switch: dhcpv6_snooping_vlans = [vlan["vlan_id"] for vlan in self.all_vlans if vlan["dhcpv6_snooping"]] igmp_vlans = [vlan["vlan_id"] for vlan in self.all_vlans if vlan["igmp"]] mld_vlans = [vlan["vlan_id"] for vlan in self.all_vlans if vlan["mld"]] - ra_guarded = [str(port['port']) for port in self.switch['ports'] if port['get_port_profil']['ra_guard']] - loop_protected = [str(port['port']) for port in self.switch['ports'] if port['get_port_profil']['loop_protect']] + ra_guarded = [str(port['port']) for port in self.switch['ports'] if port['get_port_profile']['ra_guard']] + loop_protected = [str(port['port']) for port in self.switch['ports'] if port['get_port_profile']['loop_protect']] self.additionals = {'ra_guarded' : ra_guarded, 'loop_protected' : loop_protected, 'vlans' : vlans, 'arp_protect_vlans' : arp_protect_vlans, 'dhcp_snooping_vlans' : dhcp_snooping_vlans, 'dhcpv6_snooping_vlans' : dhcpv6_snooping_vlans, 'igmp_vlans' : igmp_vlans, 'mld_vlans': mld_vlans} @@ -100,7 +99,7 @@ class Switch: def gen_conf_hp(self): """Génère la config pour ce switch hp""" self.preprocess_hp() - self.conf = self.hp_tpl.render(switch=self.switch, settings=self.settings, additionals=self.additionals) + self.conf = self.hp_tpl.render(switch=self.switch, settings=self.settings, additionals=self.additionals, date_gen=datetime.datetime.now()) def check_and_get_login(self): """Récupère les login/mdp du switch, renvoie false si ils sont indisponibles""" @@ -113,9 +112,9 @@ class Switch: def login_hp(self): """Login into rest interface of this switch""" url_login = "http://" + self.switch["ipv4"] + "/rest/v3/login-sessions" - + payload_login = { - "userName" : self.creds_dict["id"], + "userName" : self.creds_dict["id"], "password" : self.creds_dict["pass"] } get_cookie = requests.post(url_login, data=json.dumps(payload_login)) @@ -202,5 +201,5 @@ for service in api_client.list("services/regen/"): try: sw.apply_conf() except: - error = True + error = True api_client.patch(service['api_url'], data={'need_regen': error})