def stop_listening(self): logger.info("Stopping listening for perm_checks for workspace %i." % ( self.ws.id ) ) exec_pg_query_rb_on_except(kcd_db_conn, "UNLISTEN kws_%i_perm_check" % ( self.ws.id ) ) logger.info("Stopping listening for events for workspace %i." % ( self.ws.id ) ) exec_pg_query_rb_on_except(kcd_db_conn, "UNLISTEN kws_%i_event_log" % ( self.ws.id ) ) kcd_db_conn.commit()
def start_listening(self): logger.info("Listening for perm_checks for workspace %i." % ( self.ws.id ) ) exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_%i_perm_check" % ( self.ws.id ) ) logger.info("Listening for events for workspace %i." % ( self.ws.id ) ) exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_%i_event_log" % ( self.ws.id ) ) kcd_db_conn.commit() self.perm_check_flag = 1 self.poll_flag = 1
def stop_listening(self): logger.info("Stopping listening for perm_checks for workspace %i." % (self.ws.id)) exec_pg_query_rb_on_except(kcd_db_conn, "UNLISTEN kws_%i_perm_check" % (self.ws.id)) logger.info("Stopping listening for events for workspace %i." % (self.ws.id)) exec_pg_query_rb_on_except(kcd_db_conn, "UNLISTEN kws_%i_event_log" % (self.ws.id)) kcd_db_conn.commit()
def start_listening(self): logger.info("Listening for perm_checks for workspace %i." % (self.ws.id)) exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_%i_perm_check" % (self.ws.id)) logger.info("Listening for events for workspace %i." % (self.ws.id)) exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_%i_event_log" % (self.ws.id)) kcd_db_conn.commit() self.perm_check_flag = 1 self.poll_flag = 1
def set_freemium_user(self, email, license): # Connect to database if needed. self.db_connect() # Build ANP arguments list. m = kanp.ANP_msg() m.add_str(email) m.add_str(license) # Do the query. query = "SELECT set_freemium_user('%s')" % ( pgdb.escape_bytea(m.get_payload()) ) cur = kpg.exec_pg_query_rb_on_except(self.db_conn, query) row = cur.fetchone() self.db_conn.commit() return 0
def workspace_bound_request(self, stored_proc_name, args_payload): # Connect or reuse DB connection. self.db_connect() # Do the query. query = "SELECT %s('%s')" % (stored_proc_name, pgdb.escape_bytea(args_payload)) cur = kpg.exec_pg_query_rb_on_except(self.db_conn, query) row = cur.fetchone() self.db_conn.commit() # Handle result. am = kanp.ANP_msg() am.parse(row[0].value) # Get generic error status. error_status = am.get_u32() if error_status == -1: # Generic error. err_msg = am.get_str() raise Exception("Error: '%s'." % (err_msg)) else: # No generic error... continue parsing. # Get result type. res_type = am.get_u32() res_buf = am.get_bin() res_error = am.get_u32() if res_type == kanp.KANP_RES_OK: # Success ext_buf_am = am res_buf_am = kanp.ANP_msg() res_buf_am.parse(res_buf) return ext_buf_am, res_buf_am else: # Specific error am = kanp.ANP_msg() am.parse(res_buf) err_code = am.get_u32() err_msg = am.get_str() raise Exception("Error: '%s' stored procedure failed: error: %i ('%s')" % \ ( stored_proc_name, err_code, err_msg ) )
def save_notification_policy(self, workspace_id, user_id, notification_policy): # Connect to database if needed. self.db_connect() # Build ANP arguments list. am = kanp.ANP_msg() am.add_u64(int(workspace_id)) am.add_u32(int(user_id)) am.add_u32(notification_policy) # Do the query. query = "SELECT do_notif_mgt(E'%s')" % ( pgdb.escape_bytea(am.get_payload()) ) cur = kpg.exec_pg_query_rb_on_except(self.db_conn, query) row = cur.fetchone() self.db_conn.commit() return 0
def workspace_bound_request(self, stored_proc_name, args_payload): # Connect or reuse DB connection. self.db_connect() # Do the query. query = "SELECT %s('%s')" % ( stored_proc_name, pgdb.escape_bytea(args_payload) ) cur = kpg.exec_pg_query_rb_on_except(self.db_conn, query) row = cur.fetchone() self.db_conn.commit() # Handle result. am = kanp.ANP_msg() am.parse(row[0].value) # Get generic error status. error_status = am.get_u32() if error_status == -1: # Generic error. err_msg = am.get_str() raise Exception("Error: '%s'." % ( err_msg ) ) else: # No generic error... continue parsing. # Get result type. res_type = am.get_u32() res_buf = am.get_bin() res_error = am.get_u32() if res_type == kanp.KANP_RES_OK: # Success ext_buf_am = am res_buf_am = kanp.ANP_msg() res_buf_am.parse(res_buf) return ext_buf_am, res_buf_am else: # Specific error am = kanp.ANP_msg() am.parse(res_buf) err_code = am.get_u32() err_msg = am.get_str() raise Exception("Error: '%s' stored procedure failed: error: %i ('%s')" % \ ( stored_proc_name, err_code, err_msg ) )
def save_notification_policy(self, workspace_id, user_id, notification_policy): # Connect to database if needed. self.db_connect() # Build ANP arguments list. am = kanp.ANP_msg() am.add_u64(int(workspace_id)) am.add_u32(int(user_id)) am.add_u32(notification_policy) # Do the query. query = "SELECT do_notif_mgt(E'%s')" % (pgdb.escape_bytea( am.get_payload())) cur = kpg.exec_pg_query_rb_on_except(self.db_conn, query) row = cur.fetchone() self.db_conn.commit() return 0
class FreemiumKcdClient: # Constructor # parameters: # conf: configuration object, or None def __init__(self, conf, db_conn=None): # Get config object. self.conf = conf # Get db connection if provited. self.db_conn = db_conn # Command ID. self.command_id = 0 # Initialize parent class, but do not connect. #tcp_client.TcpClient.__init__(self, self.conf.kcd_host, self.conf.kcd_port, use_openssl=True, allow_dh=True) # This method connects or reuse a DB connection to KCD. def db_connect(self): if not self.db_conn: self.db_conn = get_kcd_db_conn(self.conf) def set_freemium_user(self, email, license): # Connect to database if needed. try: self.db_connect() except Exception, e: raise KcdDbConnectException("Couldn't connect to kcd db: " + str(e)) # Build ANP arguments list. m = kanp.ANP_msg() m.add_str(email) m.add_str(license) # Do the query. query = "SELECT set_freemium_user(E'%s')" % ( pgdb.escape_bytea(m.get_payload()) ) cur = kpg.exec_pg_query_rb_on_except(self.db_conn, query) row = cur.fetchone() self.db_conn.commit() return 0
def listen_kws_list(): exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_list") kcd_db_conn.commit()