def post(self): ''' Create a foreign server ''' drivers = Database.notices(multicorn_drivers_sql)[-1] drivers = drivers.strip('NOTICE: \n').split(',') if api.payload['driver'] not in drivers: return abort( 400, '{} driver does not exist, available drivers are {}' .format(api.payload['driver'], drivers)) options = api.payload['options'] options.update(wrapper=api.payload['driver']) options = {k: str(v) for k, v in options.items()} options_sql = sql.SQL(', ').join([ sql.SQL(' ').join((sql.Identifier(opt), sql.Placeholder(opt))) for opt in options ]) req = sql.SQL(""" create server {name} foreign data wrapper multicorn options ( {options} ); """).format(name=sql.Identifier(api.payload['name']), options=options_sql) Database.rowcount(req, options) req = servers_sql + ' where srvname = %(name)s' return Database.query_asjson(req, api.payload), 201
def get(self): ''' Retrieve driver list (multicorn based wrappers) ''' drivers = Database.notices(multicorn_drivers_sql)[-1] return drivers.strip('NOTICE: \n').split(',')