File: //lib/python2.7/site-packages/lwdbadmin/bottlelibs/bottlepgsql.py
import logging
from lwdbadmin.bottle import abort, get, post, delete, request, route
from lwdbadmin.pgsql import libpgsql
@post('/pgsql')
def createDatabase():
entity = request.json
database = entity.get('database')
username = entity.get('username')
password = entity.get('password')
encoding = entity.get('encoding')
collate = entity.get('collate')
ctype = entity.get('ctype')
# hide host from panel, it's not wise to let the logic
# outside the operations side
host = '%'
if not encoding:
encoding = 'UTF-8'
if not collate:
collate = 'en_US.UTF-8'
if not ctype:
ctype = 'en_US.UTF-8'
try:
libpgsql.createdatabase(database, username, password, host, encoding, collate, ctype)
logging.info('Database created: {0}'.format(database))
except Exception, e:
logging.error("Could not create database {0}: {1}".format(database, str(e)))
abort(500, str(e))
return 'Database {0} created'.format(database)
@delete('/pgsql/:database')
def deleteDatabase(database):
try:
libpgsql.removedatabase(database)
logging.info('Database removed: {0}'.format(database))
except libpgsql.DatabaseNotExists, le:
logging.error("Database '{0}' does not exits".format(database))
abort(404, 'Database does not exists')
except Exception, e:
logging.error(e)
abort(500, str(e))
return "Database {0} removed".format(database)
@get('/pgsql/:database')
def isActive(database):
try:
status = libpgsql.isactive(database)
except libpgsql.DatabaseNotExists, le:
logging.error("Database '{0}' does not exits".format(database))
abort(404, 'Database does not exists')
except Exception, e:
logging.error(e)
abort(500, str(e))
return { 'database': database,
'status': status}
@route('/pgsql/:database', 'PATCH')
def changeDatabase(database):
entity = request.json
password = entity.get('password')
status = entity.get('status')
try:
if password:
libpgsql.setpassword(database, password)
logging.info('New password for: {0}'.format(database))
return 'Password set for user {0}'.format(database)
if status == 'enabled':
libpgsql.activatedatabase(database)
logging.info('Database {0} is now enabled'.format(database))
elif status == 'disabled':
libpgsql.deactivatedatabase(database)
logging.info('Database {0} is now disabled'.format(database))
else:
abort(400, "'status' must be one of {'enabled', 'disabled'}")
except libpgsql.DatabaseNotExists, le:
logging.error("Database '{0}' does not exits".format(database))
abort(404, 'Database does not exists')
except Exception, e:
logging.error(e)
abort(500, str(e))
return "Login {0} is now {1}".format(database, status)