tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bouncer_aliases.py (3460B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 """
      5 Add from parameters.yml into bouncer submission tasks.
      6 """
      7 
      8 import logging
      9 
     10 from taskgraph.transforms.base import TransformSequence
     11 from taskgraph.util.schema import resolve_keyed_by
     12 
     13 from gecko_taskgraph.transforms.bouncer_submission import craft_bouncer_product_name
     14 from gecko_taskgraph.transforms.bouncer_submission_partners import (
     15    craft_partner_bouncer_product_name,
     16 )
     17 from gecko_taskgraph.util.attributes import release_level
     18 from gecko_taskgraph.util.partners import get_partners_to_be_published
     19 from gecko_taskgraph.util.scriptworker import get_release_config
     20 
     21 logger = logging.getLogger(__name__)
     22 
     23 transforms = TransformSequence()
     24 
     25 
     26 @transforms.add
     27 def make_task_worker(config, jobs):
     28    for job in jobs:
     29        resolve_keyed_by(
     30            job,
     31            "worker-type",
     32            item_name=job["name"],
     33            **{"release-level": release_level(config.params)},
     34        )
     35        resolve_keyed_by(
     36            job,
     37            "scopes",
     38            item_name=job["name"],
     39            **{"release-level": release_level(config.params)},
     40        )
     41        resolve_keyed_by(
     42            job,
     43            "bouncer-products-per-alias",
     44            item_name=job["name"],
     45            **{"release-type": config.params["release_type"]},
     46        )
     47        if "partner-bouncer-products-per-alias" in job:
     48            resolve_keyed_by(
     49                job,
     50                "partner-bouncer-products-per-alias",
     51                item_name=job["name"],
     52                **{"release-type": config.params["release_type"]},
     53            )
     54 
     55        job["worker"]["entries"] = craft_bouncer_entries(config, job)
     56 
     57        del job["bouncer-products-per-alias"]
     58        if "partner-bouncer-products-per-alias" in job:
     59            del job["partner-bouncer-products-per-alias"]
     60 
     61        if job["worker"]["entries"]:
     62            yield job
     63        else:
     64            logger.warning(
     65                'No bouncer entries defined in bouncer submission task for "{}". \
     66 Job deleted.'.format(job["name"])
     67            )
     68 
     69 
     70 def craft_bouncer_entries(config, job):
     71    release_config = get_release_config(config)
     72 
     73    product = job["shipping-product"]
     74    current_version = release_config["version"]
     75    bouncer_products_per_alias = job["bouncer-products-per-alias"]
     76 
     77    entries = {
     78        bouncer_alias: craft_bouncer_product_name(
     79            product,
     80            bouncer_product,
     81            current_version,
     82        )
     83        for bouncer_alias, bouncer_product in bouncer_products_per_alias.items()
     84    }
     85 
     86    partner_bouncer_products_per_alias = job.get("partner-bouncer-products-per-alias")
     87    if partner_bouncer_products_per_alias:
     88        partners = get_partners_to_be_published(config)
     89        for partner, sub_config_name, _ in partners:
     90            entries.update({
     91                bouncer_alias.replace(
     92                    "PARTNER", f"{partner}-{sub_config_name}"
     93                ): craft_partner_bouncer_product_name(
     94                    product,
     95                    bouncer_product,
     96                    current_version,
     97                    partner,
     98                    sub_config_name,
     99                )
    100                for bouncer_alias, bouncer_product in partner_bouncer_products_per_alias.items()  # NOQA: E501
    101            })
    102 
    103    return entries