Skip to content

Commit

Permalink
ART-8680: fixed art-bot query using catalogs
Browse files Browse the repository at this point in the history
Update artbotlib/brew_list.py

Co-authored-by: Daniele Paolella <[email protected]>
  • Loading branch information
mbiarnes and locriandev committed Sep 2, 2024
1 parent 06cec01 commit f739d95
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
53 changes: 49 additions & 4 deletions artbotlib/brew_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import artbotlib.exectools

from . import util
from .constants import NIGHTLY_REGISTRY, QUAY_REGISTRY
from .constants import NIGHTLY_REGISTRY, QUAY_REGISTRY, CATALOG_URL, DISTGIT_URL, ART_DASH_API_ROUTE
from .rhcos import RHCOSBuildInfo

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -108,7 +108,7 @@ async def get_tag_specs(so, tag_spec, data_type, sem) -> str:
component_release = component_labels.get('release', '?')
component_upstream_commit_url = component_labels.get('io.openshift.build.commit.url', '?')
component_distgit_commit = component_labels.get('vcs-ref', '?')
component_rhcc_url = component_labels.get('url', '?')
logger.info(f"COMPONENT_NAME: {component_name}")

result = f'{release_component_name}='
if data_type.startswith('nvr'):
Expand All @@ -120,18 +120,63 @@ async def get_tag_specs(so, tag_spec, data_type, sem) -> str:
distgit_name = component_name.rstrip('container')
distgit_name = distgit_name.rstrip("-")

result += f'https://pkgs.devel.redhat.com/cgit/containers/{distgit_name}/commit/?id={component_distgit_commit}'
result += f'{DISTGIT_URL}/{distgit_name}/commit/?id={component_distgit_commit}'

elif data_type.startswith('commit'):
result += f'{component_upstream_commit_url}'
elif data_type.startswith('catalog'):
result += f'{component_rhcc_url}'
image_type = 'distgit'
suffix = "-container"
catalog_name = ""
if suffix in component_name:
catalog_name = component_name.rstrip('container')
catalog_name = catalog_name.rstrip("-")
# component_version comes in format i.e. v4.14.18 - needed version in four digits format (i.e. 4.14)
version = component_version.strip('v')
version = version[:4]
data_info = catalog_api_query(so, image_type, catalog_name, version)

try:
for item in data_info:
cat_id, cat_name = item
result += f"{CATALOG_URL}/{cat_name}/{cat_id}\n"
except TypeError as e:
# Handle TypeError exceptions that might occur within the try block
logger.warning("Payload is empty:", e)

elif data_type.startswith('image'):
result += release_component_image

logger.debug('Tag specs for %s: %s', data_type, result)
return result


def catalog_api_query(so, image_type, catalog_name, version):
url = f"{ART_DASH_API_ROUTE}/" \
f"pipeline-image?starting_from={image_type}&name={catalog_name}&version={version}"
logger.info(f"URL: {url} \n\n")
response = requests.get(url)

if response.status_code != 200:
logger.error(f"API Server error. Status code: {response.status_code}")
so.say("API server error. Contact ART Team.")
so.monitoring_say("ERROR: API server error.")
return

try:
catalogs_info = response.json()
except Exception as e:
logger.error(f"JSON Error: {e}")
so.say("Error. Contact ART Team")
so.monitoring_say(f"JSON Error: {e}")
return

catalog_data = [(repo['delivery']['delivery_repo_id'], repo['delivery']['delivery_repo_name']) for dg in catalogs_info["payload"]["distgit"] for repo in dg["brew"]["cdn"]]
#logger.info(f"CATALOG_DATA: {catalog_data}")

return catalog_data


def list_component_data_for_release_tag(so, data_type, release_tag):
data_type = data_type.lower()
data_types = ('nvr', 'distgit', 'commit', 'catalog', 'image')
Expand Down
4 changes: 4 additions & 0 deletions artbotlib/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,14 @@

BREW_URL = 'https://brewweb.engineering.redhat.com/brew'

CATALOG_URL = 'https://catalog.redhat.com/software/containers'

CGIT_URL = 'https://pkgs.devel.redhat.com/cgit'

COMET_URL = 'https://comet.engineering.redhat.com/containers/repositories'

DISTGIT_URL = 'https://pkgs.devel.redhat.com/cgit/containers'

ERRATA_TOOL_URL = 'https://errata.devel.redhat.com'

GITHUB_API_REPO_URL = "https://api.github.com/repos"
Expand Down

0 comments on commit f739d95

Please sign in to comment.