diff options
author | Charalampos Kominos <Charalampos.Kominos@enea.com> | 2018-10-01 13:12:46 +0200 |
---|---|---|
committer | Charalampos Kominos <charalampos.kominos@enea.com> | 2018-11-18 16:18:08 +0100 |
commit | 8f75445a37099590f36ce6044109209c67ef0deb (patch) | |
tree | b34e9c39054ab86520e00465c09e574d4d1e4f94 /apex/builders | |
parent | 9066cb52523aeb4a5b98c634aa6616233b0c0237 (diff) |
Bring in aarch64 support in apex
RDO builds packages which are aarch64 compatible but some configuration
is needed to succesfully deploy.
This change:
- Prepares the aarch64 docker.io repo as the source for Kolla Containers
- Configures VM sizing for aarch64 undercloud.
- Configures VM sizing for aarch64 virtual deploy targets.
Vms need to be larger on aarch64 compared to x86 to avoid
starvation of resources. (MYSQL)
- Configures vda2 as the location of the Linux Kernel in aarch64 in
an UEFI system
- Configures the vNICs to be on the pci-bus instead of the virtio-mmio
bus.This will enalbe the Nics to come up in the same order as the
x86 ones, so the extra configuration in ansible is not needed
- Configures apex to use a stable version of the ceph:daemon container
- Configure apex for containerized undercloud in Rocky
- Add extra ansible.cfg file for aarch64 which increases waiting
times in ansible for aarch64
- Provide helper scripts for DIB to create aarch64 UEFI images
Known limitations:
- Selinux is interfering with DHCP requests in ironic and ssh
so it must be disabled before the deploy command is ran.
- The aarch64 containers are frozen for in this commit:
https://trunk.rdoproject.org/centos7-rocky/f3/18/f3180de6439333a2813119ad4b00ef897fcd596f_70883030
- The 600s timeout defined in :
https://bugs.launchpad.net/tripleo/+bug/1789680 is not enough for
aarch64. A value of 1200s is recommended
JIRA: APEX-619
Change-Id: Ia3f067821e12bba44939bbf8c0e4676f2da70239
Signed-off-by: Charalampos Kominos <Charalampos.Kominos@enea.com>
Signed-off-by: ting wu <ting.wu@enea.com>
Diffstat (limited to 'apex/builders')
-rw-r--r-- | apex/builders/common_builder.py | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/apex/builders/common_builder.py b/apex/builders/common_builder.py index 2934a1d8..7627ae3c 100644 --- a/apex/builders/common_builder.py +++ b/apex/builders/common_builder.py @@ -59,7 +59,7 @@ def project_to_path(project, patch=None): return "/usr/lib/python2.7/site-packages/" -def project_to_docker_image(project): +def project_to_docker_image(project, docker_url): """ Translates OpenStack project to OOO services that are containerized :param project: name of OpenStack project @@ -69,7 +69,8 @@ def project_to_docker_image(project): # based on project hub_output = utils.open_webpage( - urllib.parse.urljoin(con.DOCKERHUB_OOO, '?page_size=1024'), timeout=10) + urllib.parse.urljoin(docker_url, + '?page_size=1024'), timeout=10) try: results = json.loads(hub_output.decode())['results'] except Exception as e: @@ -89,7 +90,7 @@ def project_to_docker_image(project): return docker_images -def is_patch_promoted(change, branch, docker_image=None): +def is_patch_promoted(change, branch, docker_url, docker_image=None): """ Checks to see if a patch that is in merged exists in either the docker container or the promoted tripleo images @@ -122,8 +123,8 @@ def is_patch_promoted(change, branch, docker_image=None): return True else: # must be a docker patch, check docker tag modified time - docker_url = con.DOCKERHUB_OOO.replace('tripleomaster', - "tripleo{}".format(branch)) + docker_url = docker_url.replace('tripleomaster', + "tripleo{}".format(branch)) url_path = "{}/tags/{}".format(docker_image, con.DOCKER_TAG) docker_url = urllib.parse.urljoin(docker_url, url_path) logging.debug("docker url is: {}".format(docker_url)) @@ -176,10 +177,15 @@ def add_upstream_patches(patches, image, tmp_dir, # and move the patch into the containers directory. We also assume # this builder call is for overcloud, because we do not support # undercloud containers + if platform.machine() == 'aarch64': + docker_url = con.DOCKERHUB_AARCH64 + else: + docker_url = con.DOCKERHUB_OOO if docker_tag and 'python' in project_path: # Projects map to multiple THT services, need to check which # are supported - ooo_docker_services = project_to_docker_image(patch['project']) + ooo_docker_services = project_to_docker_image(patch['project'], + docker_url) docker_img = ooo_docker_services[0] else: ooo_docker_services = [] @@ -189,6 +195,7 @@ def add_upstream_patches(patches, image, tmp_dir, patch['change-id']) patch_promoted = is_patch_promoted(change, branch.replace('stable/', ''), + docker_url, docker_img) if patch_diff and not patch_promoted: @@ -288,7 +295,8 @@ def prepare_container_images(prep_file, branch='master', neutron_driver=None): 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' + p_set['namespace'] = "docker.io/armbandapex" + p_set['ceph_tag'] = 'v3.1.0-stable-3.1-luminous-centos-7-aarch64' except KeyError: logging.error("Invalid prep file format: {}".format(prep_file)) |