Fix port profile + add datetime to template
This commit is contained in:
parent
7e1e3ae347
commit
4d0219b691
1 changed files with 12 additions and 13 deletions
25
main.py
25
main.py
|
@ -9,7 +9,7 @@ from jinja2 import Environment, FileSystemLoader
|
||||||
import requests
|
import requests
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
|
import datetime
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
config = ConfigParser()
|
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.
|
# 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:
|
class Switch:
|
||||||
|
@ -53,7 +52,7 @@ class Switch:
|
||||||
|
|
||||||
def preprocess_hp(self):
|
def preprocess_hp(self):
|
||||||
"""Prérempli certains valeurs renvoyées directement à jinja, pour plus de simplicité"""
|
"""Prérempli certains valeurs renvoyées directement à jinja, pour plus de simplicité"""
|
||||||
|
|
||||||
def add_to_vlans(vlans, vlan, port, tagged=True):
|
def add_to_vlans(vlans, vlan, port, tagged=True):
|
||||||
if not vlan['vlan_id'] in vlans:
|
if not vlan['vlan_id'] in vlans:
|
||||||
if not tagged:
|
if not tagged:
|
||||||
|
@ -69,10 +68,10 @@ class Switch:
|
||||||
vlans = dict()
|
vlans = dict()
|
||||||
|
|
||||||
for port in self.switch['ports']:
|
for port in self.switch['ports']:
|
||||||
if port['get_port_profil']['vlan_untagged']:
|
if port['get_port_profile']['vlan_untagged']:
|
||||||
add_to_vlans(vlans, port['get_port_profil']['vlan_untagged'], port, tagged=False)
|
add_to_vlans(vlans, port['get_port_profile']['vlan_untagged'], port, tagged=False)
|
||||||
if port['get_port_profil']['vlan_tagged']:
|
if port['get_port_profile']['vlan_tagged']:
|
||||||
for vlan in port['get_port_profil']['vlan_tagged']:
|
for vlan in port['get_port_profile']['vlan_tagged']:
|
||||||
add_to_vlans(vlans, vlan, port)
|
add_to_vlans(vlans, vlan, port)
|
||||||
|
|
||||||
#Trie les ip par vlan, et les ajoute ainsi que les subnet
|
#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"]]
|
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"]]
|
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"]]
|
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']]
|
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_profil']['loop_protect']]
|
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}
|
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):
|
def gen_conf_hp(self):
|
||||||
"""Génère la config pour ce switch hp"""
|
"""Génère la config pour ce switch hp"""
|
||||||
self.preprocess_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):
|
def check_and_get_login(self):
|
||||||
"""Récupère les login/mdp du switch, renvoie false si ils sont indisponibles"""
|
"""Récupère les login/mdp du switch, renvoie false si ils sont indisponibles"""
|
||||||
|
@ -113,9 +112,9 @@ class Switch:
|
||||||
def login_hp(self):
|
def login_hp(self):
|
||||||
"""Login into rest interface of this switch"""
|
"""Login into rest interface of this switch"""
|
||||||
url_login = "http://" + self.switch["ipv4"] + "/rest/v3/login-sessions"
|
url_login = "http://" + self.switch["ipv4"] + "/rest/v3/login-sessions"
|
||||||
|
|
||||||
payload_login = {
|
payload_login = {
|
||||||
"userName" : self.creds_dict["id"],
|
"userName" : self.creds_dict["id"],
|
||||||
"password" : self.creds_dict["pass"]
|
"password" : self.creds_dict["pass"]
|
||||||
}
|
}
|
||||||
get_cookie = requests.post(url_login, data=json.dumps(payload_login))
|
get_cookie = requests.post(url_login, data=json.dumps(payload_login))
|
||||||
|
@ -202,5 +201,5 @@ for service in api_client.list("services/regen/"):
|
||||||
try:
|
try:
|
||||||
sw.apply_conf()
|
sw.apply_conf()
|
||||||
except:
|
except:
|
||||||
error = True
|
error = True
|
||||||
api_client.patch(service['api_url'], data={'need_regen': error})
|
api_client.patch(service['api_url'], data={'need_regen': error})
|
||||||
|
|
Loading…
Reference in a new issue