aboutsummaryrefslogtreecommitdiffstats
path: root/fap/dhcpd/module_lease.py
diff options
context:
space:
mode:
Diffstat (limited to 'fap/dhcpd/module_lease.py')
-rwxr-xr-xfap/dhcpd/module_lease.py174
1 files changed, 0 insertions, 174 deletions
diff --git a/fap/dhcpd/module_lease.py b/fap/dhcpd/module_lease.py
deleted file mode 100755
index 0473579..0000000
--- a/fap/dhcpd/module_lease.py
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-'''
- Created by Jonas 'j' Lindstad for The Gathering 2015
- License: GPLv3
-
- Class used to fetch data from the Postgres DB
-
- Usage examples:
- lease.debug = True
- x = lease({'distro_name': 'distro-test', 'distro_phy_port': 'ge-0/0/6'}).get_dict()
- print('key lookup - hostname: %s' % x['hostname'])
-'''
-
-import psycopg2
-import psycopg2.extras
-
-# settings
-settings = dict(
- db = dict(
- user = 'fap',
- password = '<sensored>',
- dbname = 'fap',
- host = 'localhost'
- )
-)
-
-# connect to Postgres DB
-connect_params = ("dbname='%s' user='%s' host='%s' password='%s'" % (settings['db']['dbname'], settings['db']['user'], settings['db']['host'], settings['db']['password']))
-conn = psycopg2.connect(connect_params)
-cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
-
-class lease(object):
- debug = False
-
- def __init__(self, identifiers):
- if len(identifiers) > 0: # 1 or more identifiers - we're good to go
-
- # build query string
- where_pieces = []
- for x in identifiers.items():
- where_pieces.append(str(x[0]) + " = '" + str(x[1]) + "'")
- where = ' AND '.join(where_pieces)
- select = "SELECT * FROM switches WHERE " + where + " LIMIT 1"
-
- if self.debug is True:
- print('Executing query: ' + select)
-
- cur.execute(select)
-
- rows = cur.fetchall()
- if len(rows) is 1:
- if self.debug is True:
- print('returned from DB:')
- for key, value in rows[0].items():
- print('%s: %s' % (key, value))
-
- self.row = rows[0]
- else:
- self.row = False
- else:
- print('Missing identifier parameter')
- exit()
-
- def get_ip(self):
- if self.row is not False:
- return self.row['ip']
- else:
- print('identifiers (%s) not found' % self.row)
- return False
-
- def get_config(self):
- if self.row is not False:
- return self.row['config']
- else:
- print('identifiers (%s) not found' % self.row)
- return False
-
- def get_dict(self):
- if self.row is not False:
- return self.row
- else:
- print('identifiers (%s) not found' % self.row)
- return False
-
-
-#
-# TESTING - Bruker ID fra DB-en som identifier, og kjører en query per lease.get_x()
-#
-class lease2(object):
- debug = False
- hostname = False
- identifiers = False
-
- # identifiers = dict of field/values
- def __init__(self, identifiers):
- cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
-
- if len(identifiers) > 0: # 1 or more identifiers - we're good to go
- self.identifiers = identifiers # Used to debug if no match for the identifiers is given
-
- # build query string
- where_pieces = []
- for identifier in identifiers.items():
- where_pieces.append(str(identifier[0]) + " = '" + str(identifier[1]) + "'")
- where = ' AND '.join(where_pieces)
- select = "SELECT hostname FROM switches WHERE " + where + " LIMIT 1"
-
- if self.debug is True:
- print('Executing query: ' + select)
-
- cur.execute(select)
- rows = cur.fetchall()
- cur.close()
- if len(rows) is 1:
- if self.debug is True:
- print('returned from DB:')
- print(rows[0][0])
- self.hostname = rows[0][0]
- else:
- self.hostname = False
- else:
- print('Missing identifier parameter')
- exit()
-
- # Used to fetch fields from DB
- def get(self, field):
- if self.hostname is not False:
- cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
-
- query = "SELECT %s FROM switches WHERE hostname = '%s' LIMIT 1" % (field, self.hostname)
- if self.debug is True:
- print('Query: %s' % query)
-
- try:
- cur.execute(query)
- rows = cur.fetchall()
-
- if len(rows) is 1:
- if self.debug is True:
- print('returned from DB:')
- print(rows[0][0])
- return rows[0][0]
- else:
- if self.debug is True:
- print('No data found - field: %s' % field)
- return False
- except psycopg2.ProgrammingError:
- print('Field (%s) not found' % field)
- conn.rollback() # Prevents DB from locking up the next queries - http://initd.org/psycopg/docs/connection.html#connection.rollback
- return False
- else:
- print('identifiers (%s) not found' % self.identifiers)
- return False
-
- # Used to set fields in DB
- def set(self, field, value):
- if self.hostname is not False:
- cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
- query = "UPDATE switches SET %s = '%s' WHERE hostname = '%s'" % (field, value, self.hostname)
- if self.debug is True:
- print('Query: %s' % query)
- try:
- cur.execute(query)
- conn.commit()
- return True
- except psycopg2.ProgrammingError:
- print('Field (%s) not found' % field)
- conn.rollback()
- return False
- else:
- print('identifiers (%s) not found' % self.identifiers)
- return False