From 98547f05902d73a80a97f7d3f6de1970b38adaba Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Wed, 20 Oct 2010 17:55:55 +0200 Subject: [PATCH] =?UTF-8?q?mises=20=C3=A0=20jours=20des=20uplinks=20pour?= =?UTF-8?q?=20les=20batiments=20a,=20b,=20c,=20h,=20i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignore-this: 77bbcb9112d08247b2d3b95cdaf8b124 darcs-hash:20101020155555-af139-ca387cdc9c58f43d10602e016e617e09a3cc9dfc.gz --- gestion/annuaires_pg.py | 217 ---------------------------------------- 1 file changed, 217 deletions(-) delete mode 100755 gestion/annuaires_pg.py diff --git a/gestion/annuaires_pg.py b/gestion/annuaires_pg.py deleted file mode 100755 index 3aa4e298..00000000 --- a/gestion/annuaires_pg.py +++ /dev/null @@ -1,217 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import psycopg2 - -try: - conn = psycopg2.connect("user=crans dbname=switchs host=pgsql.adm.crans.org") - - # Population de la tâble avec les bâtiments - cur = conn.cursor() - - cur.execute("SELECT DISTINCT batiment FROM prises") - bat_switchs = [i[0] for i in cur.fetchall()] -except psycopg2.OperationalError: - bat_switchs = ["a", "b", "c", "g", "h", "i", "j", "m", "o", "p"] - - -bat_manuels = [] - - -def chbre_prises(batiment, chambre = None): - """Correspondance chambre -> prise""" - batiment = batiment.lower() - if chambre: - chambre = chambre.lower() - cur = conn.cursor() - cur.execute("SELECT prise_crans FROM prises WHERE (batiment, chambre) = (%s, %s)", (batiment, chambre)) - try: - return "%03d" % cur.fetchone()[0] - except TypeError: - raise ValueError("Chambre inexistante") - else: - cur = conn.cursor() - cur.execute("SELECT chambre, prise_crans FROM prises WHERE batiment = %s", batiment) - ret = {} - for chambre, prise_crans in cur.fetchall(): - ret[chambre] = "%03d" % prise_crans - if not ret: - raise ValueError("Batiment inexistant") - return ret - -def reverse(batiment, prise = None): - """Correspondance prise -> chambre""" - batiment = batiment.lower() - if prise: - cur = conn.cursor() - cur.execute("SELECT chambre FROM prises WHERE (batiment, prise_crans) = (%s, %s)", (batiment, int(prise))) - try: - return [chbre for (chbre,) in cur.fetchall()] - except TypeError: - raise ValueError("Prise inexistante") - else: - cur = conn.cursor() - cur.execute("SELECT chambre, prise_crans FROM prises WHERE batiment = %s", batiment) - ret = {} - for chambre, prise_crans in cur.fetchall(): - try: - ret["%03d" % prise_crans].append(chambre) - except KeyError: - ret["%03d" % prise_crans] = [chambre] - - if not ret: - raise ValueError("Batiment inexistant") - return ret - -def is_crans(batiment, chambre): - """Chambre cablee au Cr@ns ?""" - batiment = batiment.lower() - chambre = chambre.lower() - cur = conn.cursor() - cur.execute("SELECT crans FROM prises WHERE (batiment, chambre) = (%s, %s)", (batiment, chambre)) - return cur.fetchone()[0] - -def is_connected(batiment, chambre): - """Cablage physique effectue ?""" - batiment = batiment.lower() - chambre = chambre.lower() - cur = conn.cursor() - cur.execute("SELECT cablage_effectue FROM prises WHERE (batiment, chambre) = (%s, %s)", (batiment, chambre)) - return cur.fetchone()[0] - -def crous_to_crans(batiment, chambre): - """Passage d'une chambre de CROUS a Cr@ns""" - batiment = batiment.lower() - chambre = chambre.lower() - if is_crans(batiment, chambre): - return - cur = conn.cursor() - cur.execute("UPDATE prises SET (crans, crous, cablage_effectue) = (TRUE, FALSE, not cablage_effectue) WHERE (batiment, chambre) = (%s, %s)", (batiment, chambre)) - conn.commit() - cur.close() - -# Prises d'uplink, de machines du crans / Prises d'utilité CRANS -uplink_prises={ 'a' : -{ 49 : 'uplink->backbone', 50 : 'uplink->bata-1', - 149 : 'uplink->bata-0', 150 : 'uplink->bata-2', - 202 : 'libre-service', - 225 : 'uplink->bata-1', 226 : 'uplink->bata-3', - 325 : 'uplink->bata-2', 326 : 'libre-service' }, -'b' : -{ 48 : 'libre-service', - 49 : 'uplink->backbone', 50 : 'uplink->batb-1', - 149 : 'uplink->batb-0', 150 : 'uplink->batb-3', - 249 : 'libre-service', 250 : 'uplink->batb-3', # 249 morte ?! (olasd 21/01/2010) - 349 : 'uplink->batb-1', 350 : 'uplink->batb-2'}, -'c' : -{ 49 : 'uplink->backbone', 50 : 'uplink->batc-1', - 149 : 'uplink->batc-0', 150 : 'uplink->batc-2', - 225 : 'uplink->batc-1' }, -'g' : -{ 25 : 'libre-service', 26 : 'libre-service', - 27 : 'uplink->backbone', 28 : 'uplink->batg-1', - 149 : 'uplink->batg-4', 150 : 'uplink->batg-2', - 151 : 'uplink->batg-0', # fibre - 249 : 'uplink->batg-1', 250 : 'uplink->batg-3', - 325 : 'uplink->batg-2', 326 : 'libre-service', - 449 : 'uplink->batg-1', 450 : 'uplink->batg-5', - 549 : 'uplink->batg-4', 550 : 'uplink->batg-6', - 649 : 'uplink->batg-5', 650 : 'uplink->batg-5', - 725 : 'uplink->batg-6', 726 : 'libre-service'}, -'h' : -{ 49 : 'uplink->backbone', 50 : 'uplink->bath-1', - 149 : 'uplink->bath-0', 150 : 'uplink->bath-2', - 225 : 'uplink->bath-1' }, -'i' : -{ 49 : 'uplink->backbone', 50 : 'uplink->bati-1', - 149 : 'uplink->bati-0', 150 : 'uplink->bati-2', - 225 : 'uplink->bati-1', 226 : 'libre-service' }, -'j' : -{ 49 : 'uplink->batj-3', 50 : 'libre-service', - 149 : 'uplink->batj-3', 150 : 'libre-service', # XXX: 150 semble morte - 225 : 'uplink->batj-3', 226 : 'libre-service', - 321 : 'uplink->backbone', - 301 : 'uplink->batj-0', 303 : 'uplink->batj-1', - 305 : 'uplink->batj-2', 307 : 'uplink->multiprise', -}, -'m' : -{ - 49 : 'libre-service', 50 : 'uplink->batm-7', - 149 : 'libre-service', 150 : 'uplink->batm-7', - 249 : 'libre-service', 250 : 'uplink->batm-7', - 349 : 'libre-service', 350 : 'uplink->batm-7', - 449 : 'libre-service', 450 : 'uplink->batm-7', - 549 : 'libre-service', 550 : 'uplink->batm-7', - 649 : 'libre-service', 650 : 'uplink->batm-7', - - 724 : 'libre-service', 723 : 'libre-service', - 722 : 'libre-service', - - 721 : 'uplink->backbone', 720 : 'uplink->batm-0', - 719 : 'uplink->batm-1', 718 : 'uplink->batm-2', - 717 : 'uplink->batm-3', 716 : 'uplink->batm-4', - 715 : 'uplink->batm-5', 714 : 'uplink->batm-6', - }, - 'p' : -{349 : 'uplink->batp-2', 350 : 'libre-service', - 249 : 'uplink->batp-1', 247 : 'uplink->batp-3', - 149 : 'uplink->batp-0', 150 : 'uplink->batp-2', - 49 : 'uplink->backbone', 50 : 'uplink->batp-1' } , - 'o' : - { 25 : 'uplink->D-Link(autocom)', 26 : 'libre-service' } , - 'v' : -{ 49 : 'libre-service', 50 : 'libre-service', - 51 : 'uplink->backbone', 52 : 'libre-service', - 149 : 'libre-service', 150 : 'libre-service', - 749 : 'libre-service', 750 : 'libre-service' } -} - -def all_switchs(bat=None): - """Retourne la liste des switchs pour un batiment. - - Si bat est donné, seulement pour le bâtiment demandé, sinon pour - tous les bâtiments. bat peut être une liste aussi. Le backbone n'est - pas pris en compte. La convention est batx-y sauf si y=0 et on a donc - simplement batx""" - def cmp(x,y): - if int(x[5]) < int(y[5]): return 1 - if x[3] < y[3]: return 1 - return -1 - - if bat == None: - bat = bat_switchs - if type(bat) not in [ tuple, list ] : - bat = [bat] - switchs = [] - for b in map(lambda x: x.lower(), bat): - dup = map(lambda x: x[0], reverse(b).keys()) - # dup contient des elements en double - for n in list(dict(zip(dup,[None]*len(dup)))): - switchs.append("bat%s-%s.adm.crans.org" % (b, n)) - switchs.sort(cmp) - return switchs - -# Locaux clubs : lecture dans chbre_prises et ajout des locaux dans les bats non -# manageables -def locaux_clubs() : - """ Retourne le dictionaire des locaux club : {bat: [locaux]} """ - # Corespondance chbre -> nom du local club - locaux_clubs = { 'Bcl0' : 'Kfet' , - 'Bcl1' : 'Med', - 'Pcl0' : 'Bds' , - 'Mcl0' : 'Shape', - 'Mcl1' : 'Krobot', - 'EXT' : 'EXT' } - # Ajout des locaux d'étage A, B et C - for b in 'ABC' : - for i in range(2,7) : - locaux_clubs['%scl%i' % ( b, i)] = '%i@%s' % (i, b) - # Ajout de ceux des H, I et J - for b in 'HIJ' : - for i in range(1,5) : - locaux_clubs['%scl%i' % ( b, i)] = '%i@%s' % (i, b) - # Supression du 2@B et 4@J - locaux_clubs.pop('Bcl2') - locaux_clubs.pop('Jcl4') - - return locaux_clubs