import psycopg2 def connect_starrs(db, user, host, password): try: starrs = psycopg2.connect( "dbname='{}' user='{}' host='{}' password='{}'".format( db, user, host, password)) except: print("Unable to connect to STARRS database.") raise return starrs def get_next_ip(starrs, range_name): c = starrs.cursor() try: c.execute("BEGIN") c.callproc("api.initialize", ('root', )) c.callproc("api.get_address_from_range", (range_name, )) results = c.fetchall() c.execute("COMMIT") finally: c.close() return results def register_starrs(starrs, name, owner, mac, addr): c = starrs.cursor() try: c.execute("BEGIN") c.callproc("api.initialize", ('root', )) c.callproc( "api.create_system_quick", (name, owner, 'members', mac, addr, 'csh.rit.edu', 'dhcp', True)) results = c.fetchall() c.execute("COMMIT") finally: c.close() return results def delete_starrs(starrs, name): c = starrs.cursor() try: c.execute("BEGIN") c.callproc("api.initialize", ('root', )) c.callproc("api.remove_system", (name, )) results = c.fetchall() c.execute("COMMIT") finally: c.close() return results