Bug 1395516 - releasetasks_graph_gen.py should use release-runner.yml, not ini r=mtabara
authorRail Aliiev <rail@mozilla.com>
Thu, 31 Aug 2017 13:47:07 +0300
changeset 8050 8d9a5ba92c39f5eeaff96ea0acd2c5b240f6cbf8
parent 8049 b95457fed83e887febbd922e599d01691416446c
child 8051 9b23939ed3acf152bcc9a162e517d8ffee1620a4
push id240
push userbmo:rail@mozilla.com
push dateThu, 31 Aug 2017 10:47:18 +0000
reviewersmtabara
bugs1395516
Bug 1395516 - releasetasks_graph_gen.py should use release-runner.yml, not ini r=mtabara MozReview-Commit-ID: Gc9btCE2946
buildfarm/release/release-runner.ini.example
buildfarm/release/releasetasks_graph_gen.py
deleted file mode 100644
--- a/buildfarm/release/release-runner.ini.example
+++ /dev/null
@@ -1,32 +0,0 @@
-[api]
-
-api_root: http://dev-master1.srv.releng.scl3.mozilla.com:5000
-username: user
-password: password
-
-[release-runner]
-notify_from: Release Eng <DONOTreleaseME@mozilla.com>
-notify_to: Release Duty <you@example.com>
-notify_to_announce: Release Drivers <the-mailing-list@mozilla.org>
-smtp_server: localhost
-hg_host: hg.mozilla.org
-hg_username: ffxbld
-hg_ssh_key: ~/.ssh/ffxbld_rsa
-buildbot_configs: https://hg.mozilla.org/build/buildbot-configs
-buildbot_configs_branch: production
-buildbotcustom: https://hg.mozilla.org/build/buildbotcustom
-buildbotcustom_branch: production-0.8
-tools: https://hg.mozilla.org/build/tools
-tools_branch: default
-masters_json: https://hg.mozilla.org/build/tools/raw-file/default/buildfarm/maintenance/production-masters.json
-sendchange_master: localhost:9001
-staging: false
-verbose: true
-sleeptime: 30
-ssh_username: cltbld
-ssh_key: /home/cltbld/.ssh/release-runner
-docker_worker_key: /home/cltbld/docker-worker-public.pem
-
-[symlinks]
-production_config.py: {buildbot_configs}/mozilla/localconfig.py
-thunderbird_production_config.py: {buildbot_configs}/mozilla/thunderbird_localconfig.py
--- a/buildfarm/release/releasetasks_graph_gen.py
+++ b/buildfarm/release/releasetasks_graph_gen.py
@@ -9,29 +9,28 @@ import yaml
 site.addsitedir(os.path.join(os.path.dirname(__file__), "../../lib/python"))
 
 from kickoff import get_partials, ReleaseRunner, make_task_graph_strict_kwargs
 from kickoff import get_l10n_config, get_en_US_config, get_mar_signing_format
 from kickoff import bump_version
 from kickoff.tc import resolve_task, submit_parallelized
 
 from release.versions import getAppVersion
-from util.file import load_config, get_config
 
 from taskcluster import Index, Queue
 from taskcluster.utils import slugId
 
 log = logging.getLogger(__name__)
 
 
 def main(release_runner_config, release_config, tc_config):
 
-    api_root = release_runner_config.get('api', 'api_root')
-    username = release_runner_config.get('api', 'username')
-    password = release_runner_config.get('api', 'password')
+    api_root = release_runner_config['api']['api_root']
+    username = release_runner_config['api']['username']
+    password = release_runner_config['api']['password']
 
     queue = Queue(tc_config)
     index = Index(tc_config)
 
     rr = ReleaseRunner(api_root=api_root, username=username, password=password)
     log.info('Generating task graph')
     kwargs = {
         # release-runner.ini
@@ -166,70 +165,69 @@ def get_unique_release_items(options, tc
         unique_items['partials'] = options.partials
 
     # TODO have ability to pass l10n_changesets whether based on previous release or new one
     unique_items["l10n_changesets"] = {}
 
     return unique_items
 
 
-def get_release_items_from_runner_config(release_runner_ini):
+def get_release_items_from_runner_config(release_runner_config):
     ini_items = {}
-    ini_items['signing_pvt_key'] = release_runner_ini.get('signing', 'pvt_key')
-    ini_items['docker_worker_key'] = release_runner_ini.get('release-runner', 'docker_worker_key')
-    ini_items['balrog_username'] = release_runner_ini.get("balrog", "username")
-    ini_items['balrog_password'] = release_runner_ini.get("balrog", "password")
-    ini_items['beetmover_aws_access_key_id'] = release_runner_ini.get("beetmover", "aws_access_key_id")
-    ini_items['beetmover_aws_secret_access_key'] = release_runner_ini.get("beetmover", "aws_secret_access_key")
-    ini_items['extra_balrog_submitter_params'] = get_config(release_runner_ini, "balrog",
-                                                            "extra_balrog_submitter_params", None)
+    ini_items['signing_pvt_key'] = release_runner_config['signing']['pvt_key']
+    ini_items['docker_worker_key'] = release_runner_config['release-runner']['docker_worker_key']
+    ini_items['balrog_username'] = release_runner_config["balrog"]["username"]
+    ini_items['balrog_password'] = release_runner_config["balrog"]["password"]
+    ini_items['beetmover_aws_access_key_id'] = release_runner_config["beetmover"]["aws_access_key_id"]
+    ini_items['beetmover_aws_secret_access_key'] = release_runner_config["beetmover"]["aws_secret_access_key"]
+    ini_items['extra_balrog_submitter_params'] = release_runner_config["balrog"].get("extra_balrog_submitter_params")
     return ini_items
 
 
 def load_branch_and_product_config(config_file):
     with open(config_file, 'r') as rc_file:
         return yaml.load(rc_file)
 
 
 if __name__ == '__main__':
     parser = OptionParser(__doc__)
-    parser.add_option('--release-runner-ini', dest='release_runner_ini',
+    parser.add_option('--release-runner-config', dest='release_runner_config',
                       help='ini file that contains things like sensitive credentials')
     parser.add_option('--branch-and-product-config', dest='branch_and_product_config',
                       help='config items specific to certain product and branch')
     parser.add_option('--version', dest='version', help='full version of release, e.g. 46.0b1')
     parser.add_option('--build-number', dest='build_number', help='build number of release')
     parser.add_option('--partials', type="string", dest='partials',
                       help='list of partials for the release')
     parser.add_option('--mozilla-revision', dest='mozilla_revision',
                       help='gecko revision to build ff from')
     parser.add_option('--common-task-id', dest='common_task_id',
                       help='a task id of a task that shares the same release info')
     parser.add_option('--dry-run', dest='dry_run', action='store_true', default=False,
                       help="render the task graph from yaml tmpl but don't submit to taskcluster")
 
     options = parser.parse_args()[0]
 
-    if not options.release_runner_ini:
+    if not options.release_runner_config:
         parser.error('Need to pass a release runner config')
     if not options.branch_and_product_config:
         parser.error('Need to pass a branch and product config')
 
     # load config files
-    release_runner_config = load_config(options.release_runner_ini)
+    release_runner_config = yaml.safe_load(open(options.release_runner_config))
     tc_config = {
         "credentials": {
-            "clientId": get_config(release_runner_config, "taskcluster", "client_id", None),
-            "accessToken": get_config(release_runner_config, "taskcluster", "access_token", None),
+            "clientId": release_runner_config["taskcluster"].get("client_id"),
+            "accessToken": release_runner_config["taskcluster"].get("access_token"),
         },
         "maxRetries": 12,
     }
     branch_product_config = load_branch_and_product_config(options.branch_and_product_config)
 
-    if release_runner_config.getboolean('release-runner', 'verbose'):
+    if release_runner_config['release-runner']['verbose']:
         log_level = logging.DEBUG
     else:
         log_level = logging.INFO
     logging.basicConfig(filename='releasetasks_graph_gen.log',
                         format="%(asctime)s - %(levelname)s - %(message)s",
                         level=log_level)