Fixes Docker image upload for master/rocky
[apex.git] / apex / builders / common_builder.py
index b8894ec..e0e7303 100644 (file)
@@ -14,8 +14,11 @@ import git
 import json
 import logging
 import os
+import platform
+import pprint
 import re
 import urllib.parse
+import yaml
 
 import apex.builders.overcloud_builder as oc_builder
 from apex import build_utils
@@ -258,3 +261,39 @@ def create_git_archive(repo_url, repo_name, tmp_dir,
         repo.archive(fh, prefix=prefix)
     logging.debug("Wrote archive file: {}".format(archive_path))
     return archive_path
+
+
+def get_neutron_driver(ds_opts):
+    sdn = ds_opts.get('sdn_controller', None)
+    for controllers in 'opendaylight', 'ovn':
+        if sdn == controllers:
+            return sdn
+
+    if ds_opts.get('vpp', False):
+        return 'vpp'
+
+    return None
+
+
+def prepare_container_images(prep_file, branch='master', neutron_driver=None):
+    if not os.path.isfile(prep_file):
+        raise exc.ApexCommonBuilderException("Prep file does not exist: "
+                                             "{}".format(prep_file))
+    with open(prep_file) as fh:
+        data = yaml.safe_load(fh)
+    try:
+        p_set = data['parameter_defaults']['ContainerImagePrepare'][0]['set']
+        if neutron_driver:
+            p_set['neutron_driver'] = neutron_driver
+        p_set['namespace'] = "docker.io/tripleo{}".format(branch)
+        if platform.machine() == 'aarch64':
+            p_set['ceph_tag'] = 'master-fafda7d-luminous-centos-7-aarch64'
+
+    except KeyError:
+        logging.error("Invalid prep file format: {}".format(prep_file))
+        raise exc.ApexCommonBuilderException("Invalid format for prep file")
+
+    logging.debug("Writing new container prep file:\n{}".format(
+        pprint.pformat(data)))
+    with open(prep_file, 'w') as fh:
+        yaml.safe_dump(data, fh, default_flow_style=False)