[openstack-dev] [kolla] my work on Debian and non-x86 architectures

Marcin Juszkiewicz marcin.juszkiewicz at linaro.org
Fri Feb 17 11:47:46 UTC 2017

Ok, I mailed separately about each of them but I work on them at once so
hard to split.

As you know I added support for non-x86 architectures: aarch64 and
ppc64le. Also resurrected Debian support.

# A bit of background

At Linaro we work on getting AArch64 (64-bit ARM, arm64) to be present
in many places. We have at least two OpenStack instances running at the
moment - on AArch64 hardware only.

First we used Debian/jessie and 'liberty' version. Was working. Not best
but we helped many projects by providing virtual machines for porting

It was built from packages and later (when 'mitaka' was released) we
moved to virtualenv per component. Out second "cloud" runs that. With
proper Neutron networking, live migration and few other nice things.

But virtualenvs were done as quick solution. We decided to move to
Docker containers for next release.

And Kolla was chosen as a tool for it. We do not like to reinvent the
wheel again and again...

# Non-x86 support in Kolla

Kolla is x86-64 centric. As most of software nowadays. But thanks to
work done by Sajauddin Mohammad I had something [1] to use as a base for
adding aarch64 support.

1. https://review.openstack.org/#/c/423239/6

I took his patch, slashed out most of it and concentrated on getting
minimal changes needed to get something built on AArch64. Effect was
sent for review [2] and is now at 9th version (few more changes coming).

2. https://review.openstack.org/#/c/430940

Docker images started to appear. But at beginning I was building Ubuntu
ones as Debian support was "basically abandoned, on a way out". From
CentOS guys I got confirmation that official Docker image will be
generated (it is done already).

I spent some time on making sure that whole non-x86 support is free from
any hardcoding wherever possible. As you can see in my working branch
[3] it went quite well. Most of arch related changes are related to
"distro does not provide package ZYS for that architecture" or to
handling of external repositories.


# Debian support

And here we come to Debian support. At Linaro we decided to support two
community based distributions: CentOS and Debian. But Debian was on
a way out in Kolla...

As this was not related much to non-x86 work I decided to use one of
x86-64 machines for that stuff.

First builds were against 'jessie-backports' base tag. I had to make
a patch to tell APT that if I want backports then I really want them. It
was sent for review [4] as rest of patches.

4. https://review.openstack.org/432780

Images were building but not so many as for Ubuntu. So I went through
all of them and enabled Debian where it was possible. Resulting patch
went for review [5] as usual.

5. https://review.openstack.org/432787

Effect was quite nice (on x86-64):

debian-binary:  158
debian-source:  201

But 'jessie' was missing several packages even with backports enabled.
So after discussion with my team I decided to drop it and go for
Debian/testing 'stretch' one instead. It is already frozen for release
so no big changes are allowed. Patch in review [6] of course.

6. https://review.openstack.org/434453

At that moment I abandoned patch [4] as 'jessie-backports' are not
something I plan to support.

Turned out that 'stretch' images have a bit different set of packages
installed than 'jessie' had. So 'gnupg' and 'dirmngr' were missing while
we need them for importing GPG keys into APT. Proper patch went to
review [7] again.

7. https://review.openstack.org/434431

Did rebuild on x86-64:

stretch-binary: 137
stretch-source: 195

A bit less than 'jessie-backports' had, right? Sure, but it also shows
that I have to make a new build to check numbers (laptop already has
~1500 docker images generated by kolla).

# Cleaning of old Power patch

Remember [1] which all that started from? I did not forgot it and after
building all those images I went back to it.

Some parts are just fugly so I skipped them but others were useful if
done properly. That's how new changes were done: [8], [9], [10] and some
updates to previous ones ([2], [5]).

8.  https://review.openstack.org/434810
9.  https://review.openstack.org/434809
10. https://review.openstack.org/434817

Then I managed to put remote hands on one of Power machines at Red Hat
and started builds:

debian-binary:  134
debian-source:  184
ubuntu-binary:  147
ubuntu-source:  190

No CentOS builds as there is no centos/ppc64le image available yet.

# Summary

Non-x86 support looks quite nice. There are some images which can not be
built as they rely on external repositories so no aarch64 nor ppc64le
packages to use.

Debian 'stretch' support is not perfect yet but it is something which
I plan to maintain so situation will be going to improve. Note that most
of my work will go into 'source' type of builds as we want to have same
images for both Debian and CentOS systems.

Next week I am on holidays Tue->Sun.

More information about the OpenStack-dev mailing list