Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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
Exemplo n.º 6
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 ) )
Exemplo n.º 7
0
    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
Exemplo n.º 8
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 ) )
Exemplo n.º 9
0
    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
Exemplo n.º 10
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
Exemplo n.º 11
0
def listen_kws_list():
    exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_list")
    kcd_db_conn.commit()
Exemplo n.º 12
0
def listen_kws_list():
    exec_pg_query_rb_on_except(kcd_db_conn, "LISTEN kws_list")
    kcd_db_conn.commit()