class FilterModule(object): def __init__(self): self._db_logger = DbLogger() self._logger = self._db_logger.logger self.db_client = None # end __init__ def filters(self): return { 'read_from_db': self.read_from_db } # end filters def _initialize_db_client(self, job_ctx): db_init_params = job_ctx.get('db_init_params') cred = None if (db_init_params.get('cassandra_user') is not None and db_init_params.get('cassandra_password') is not None): cred = {'username': db_init_params.get('cassandra_user'), 'password': db_init_params.get('cassandra_password')} if self.db_client is None: self.db_client = VncObjectDBClient( db_init_params.get('cassandra_server_list'), job_ctx.get('cluster_id'), None, None, logger=self._db_logger.log, credential=cred, ssl_enabled=db_init_params.get('cassandra_use_ssl'), ca_certs=db_init_params.get('cassandra_ca_certs')) # end _initialize_db_client def read_from_db(self, job_ctx, obj_type, obj_id, obj_fields=None, ret_readonly=False): if self.db_client is None: try: self._initialize_db_client(job_ctx) except Exception as e: msg = "Error while initializing the cassandra DB " \ "client. %s " % repr(e) self._logger.error(msg) return self._build_result(False, msg) try: ok, cassandra_result = self.db_client.object_read( obj_type, [obj_id], obj_fields, ret_readonly=ret_readonly) except Exception as e: self._logger.error("Exception while trying to read %s %s from db" " %s " % (obj_type, obj_id, repr(e))) return self._build_result(False, str(e)) return self._build_result(ok, cassandra_result[0]) # end db_read @staticmethod def _build_result(is_ok, result): if is_ok is not None and is_ok: status = 'success' else: status = 'false' return { 'status': status, 'result': result }