def getProductConfiguration(self, product_id): """ Get the product configuration --- WITHOUT THE DB PASSWORD --- of the given product. """ try: session = self.__session() product = session.query(Product).get(product_id) if product is None: msg = "Product with ID {0} does not exist!".format(product_id) LOG.error(msg) raise shared.ttypes.RequestFailed( shared.ttypes.ErrorCode.DATABASE, msg) # Put together the database connection's descriptor. args = SQLServer.connection_string_to_args(product.connection) if args['postgresql']: db_engine = 'postgresql' db_host = args['dbaddress'] db_port = args['dbport'] db_user = args['dbusername'] db_name = args['dbname'] else: db_engine = 'sqlite' db_host = "" db_port = 0 db_user = "" db_name = args['sqlite'] dbc = ttypes.DatabaseConnection( engine=db_engine, host=db_host, port=db_port, username_b64=base64.b64encode(db_user), # DO NOT TRANSPORT PASSWORD BACK TO THE USER! database=db_name) # Put together the product configuration. name = base64.b64encode(product.display_name.encode('utf-8')) descr = base64.b64encode(product.description.encode('utf-8')) \ if product.description else None prod = ttypes.ProductConfiguration( id=product.id, endpoint=product.endpoint, displayedName_b64=name, description_b64=descr, connection=dbc, runLimit=product.run_limit) return prod except sqlalchemy.exc.SQLAlchemyError as alchemy_ex: msg = str(alchemy_ex) LOG.error(msg) raise shared.ttypes.RequestFailed(shared.ttypes.ErrorCode.DATABASE, msg) finally: session.close()
def getProductConfiguration(self, product_id): """ Get the product configuration --- WITHOUT THE DB PASSWORD --- of the given product. """ with DBSession(self.__session) as session: product = session.query(Product).get(product_id) if product is None: msg = "Product with ID {0} does not exist!".format(product_id) LOG.error(msg) raise codechecker_api_shared.ttypes.RequestFailed( codechecker_api_shared.ttypes.ErrorCode.DATABASE, msg) # Put together the database connection's descriptor. args = SQLServer.connection_string_to_args(product.connection) if args['postgresql']: db_engine = 'postgresql' db_host = args['dbaddress'] db_port = args['dbport'] db_user = args['dbusername'] db_name = args['dbname'] else: db_engine = 'sqlite' db_host = "" db_port = 0 db_user = "" db_name = args['sqlite'] dbc = ttypes.DatabaseConnection( engine=db_engine, host=db_host, port=db_port, username_b64=base64.b64encode(db_user), # DO NOT TRANSPORT PASSWORD BACK TO THE USER! database=db_name) # Put together the product configuration. name = base64.b64encode(product.display_name.encode('utf-8')) descr = base64.b64encode(product.description.encode('utf-8')) \ if product.description else None is_review_status_change_disabled = \ product.is_review_status_change_disabled prod = ttypes.ProductConfiguration( id=product.id, endpoint=product.endpoint, displayedName_b64=name, description_b64=descr, connection=dbc, runLimit=product.run_limit, isReviewStatusChangeDisabled=is_review_status_change_disabled) return prod