コード例 #1
0
  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
コード例 #2
0
  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
コード例 #3
0
  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