ci: containerized undercloud does not test tripleo-common

Bug #1762422 reported by James Slagle
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
High
Emilien Macchi

Bug Description

In Ci, the containerized undercloud does not test tripleo-common patches since tripleo-common is part of the mistral container, and there is no mechanism in place to update containers with the new package build containing the patch being tested.

Tags: ci containers
Changed in tripleo:
status: New → Confirmed
importance: Undecided → Critical
tags: added: alert ci
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to tripleo-quickstart (master)

Fix proposed to branch: master
Review: https://review.openstack.org/559740

Changed in tripleo:
assignee: nobody → James Slagle (james-slagle)
status: Confirmed → In Progress
Revision history for this message
Emilien Macchi (emilienm) wrote :
Changed in tripleo:
milestone: none → rocky-1
Revision history for this message
Emilien Macchi (emilienm) wrote :

So the problem we're having right now is that the containerized undercloud deploys containers from a remote registry (and not local), and "container-check" tool only works with a local registry for now.

Revision history for this message
Emilien Macchi (emilienm) wrote :

The only way I see to move things forward is to deploy the Docker registry by hand (in quickstart probably) for the CI jobs only, so we can container-check before deploying the containerized undercloud. During the second image prepare command for the overcloud, the missing containers would be added to the local registry and we would run container-check again.

Revision history for this message
Emilien Macchi (emilienm) wrote :

so I managed to use container-check on a containerized undercloud by reproducing the same steps as we do on the overcloud:

openstack overcloud container image prepare \
    --images-file /home/zuul/undercloud_containers.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/tripleo-ui.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/mistral.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic-inspector.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/undercloud-haproxy.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/undercloud-keepalived.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/zaqar.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml \
    --namespace docker.io/tripleomaster \
    --tag $BUILD_ID \
    --push-destination 192.168.24.1:8787

openstack overcloud container image upload --debug --config-file /home/zuul/undercloud_containers.yaml

openstack overcloud container image prepare \
    --images-file /home/zuul/undercloud_containers.yaml \
    --env-file /home/zuul/undercloud-containers-default-parameters.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/tripleo-ui.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/mistral.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic-inspector.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/undercloud-haproxy.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/undercloud-keepalived.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/zaqar.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml \
    --namespace 192.168.24.1:8787/tripleomaster \
    --set ceph_namespace=192.168.24.1:8787/ceph \
    --tag $BUILD_ID

cat undercloud_containers.yaml | grep -v ceph > undercloud_containers_update.yaml
container-check -c /home/zuul/undercloud_containers_update.yaml -u -p 8

All containers were updated.

Now... what do we want?
One idea would be to deploy a docker registry via Ansible (we could create a role in tripleo-common), and deploy it via tripleoclient when preparing the containers for the undercloud (this could be used to prepare the containers for the overcloud too btw).

Revision history for this message
Ian Main (imain) wrote :

It would be nice all around to have the local registry set up for deploying the undercloud and overcloud. This way we don't have to download the containers twice as we are currently doing. Of course this is also nice in CI as we can update them once at the start also.

Revision history for this message
Emilien Macchi (emilienm) wrote :

The workflow could be:

1) Run openstack undercloud install --use-heat
2) tripleoclient will prepare the container files, deploy a docker registry (from an Ansible role in tripleo-common, since tripleo-common is a dependency of tripleoclient), run the upload for the containers needed by undercloud.
3) then we run the container-check to update the containers
4) it'll deploy the rest of the undercloud.

Then once we deploy the overcloud:
1) a workflow will update the containers registry and re-use containers already in the docker registry on the undercloud.
2) overcloud deploys, etc.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-quickstart (master)

Reviewed: https://review.openstack.org/559740
Committed: https://git.openstack.org/cgit/openstack/tripleo-quickstart/commit/?id=a76f5e5c3e37dc502da1ce6331b72e578924c535
Submitter: Zuul
Branch: master

commit a76f5e5c3e37dc502da1ce6331b72e578924c535
Author: James Slagle <email address hidden>
Date: Mon Apr 9 09:47:05 2018 -0400

    Revert "Deploy container-multinode (fs010) with a containerized undercloud"

    This reverts commit f61f8d0e60072b31878f795983e6862bbb955eb1.

    tripleo-common patches aren't being tested since this merged to convert
    the undercloud to containers on March 29th. Nothing updates the mistral
    container to use the tripleo-common code being tested.

    Change-Id: I2cb7d59ab1f42bfa6d852213b792b428a75c4fcc
    Partial-Bug: #1762422

Revision history for this message
James Slagle (james-slagle) wrote :

removing the alert tag since CI is fixed for now due to the revert

tags: removed: alert
Changed in tripleo:
importance: Critical → High
Changed in tripleo:
assignee: James Slagle (james-slagle) → Emilien Macchi (emilienm)
tags: added: containers
Revision history for this message
Bogdan Dobrelya (bogdando) wrote :

The issue seems more generic, like "a component foo can not be tested in CI, when bundled into some container", e.g. that all-in-one installer work planned for Rocky, and bundling the tripleo client and puppet packages into a runner container would highly likely be blocked by this type of a CI issue.

Changed in tripleo:
milestone: rocky-1 → rocky-2
Changed in tripleo:
milestone: rocky-2 → rocky-3
Revision history for this message
Emilien Macchi (emilienm) wrote :

it has been solved by Steve's work in container prepare commands.

Changed in tripleo:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.