def get_releases(self, filter_options): """Gets all releases fitting filter_options. Args: filter_options: object containing all filter parameters Returns: releases_data: a filtered, sorted list of release objects """ # build the SQL query release_query = to_sql_releases(filter_options) # get the data from SQL releases_data = {} for config in self._configs: raw_release_data = config.db.query(release_query) # it's a tuple, so no .append() # package the data into release objects with all neccessary info releases_data.update(read_releases(raw_release_data, config.db)) # filter for the stuff that SQL can't natively filter for, # due to some data being based on a tasks releases_data = filter_releases(releases_data, filter_options) # sort with the stuff that SQL can't natively sort according to, # due to some data being based on tasks releases_data = sort(releases_data, filter_options) return releases_data
def get_release(self, release_id): """Gets a single release, defined by release_id. Args: release_id: str, unique release identifier Returns: release_data: a release object in a list """ dag_id, execution_date = release_id_parser(release_id) # construct SQL query release_query = to_sql_release(dag_id, execution_date) # get data from SQL release_data = {} for config in self._configs: raw_release_data = config.db.query(release_query) # it's a tuple, so no .append() # package the data into release objects with all neccessary info release_data.update(read_releases(raw_release_data, config.db)) return release_data
def _update_cache(self): if (datetime.now() - self._cache_last_updated).total_seconds() < CACHE_TTL: return logging.info('Type and Branch cache updated') raw_release_data = () releases = {} for config in self._configs: raw_release_data += config.db.query('SELECT dag_id, execution_date FROM dag_run') # it's a tuple, so no .append() # package the data into release objects with all neccessary info releases.update(read_releases(raw_release_data, config.db)) branches = set() types = set() for release in releases: branches.add(releases[release].branch) types.add(releases[release].release_type) with self._lock: self._branches = list(branches) self._release_types = list(types) self._cache_last_updated = datetime.now() self._overall_status[releases[release].state] += 1 self._overall_status['total'] += 1