Hello all,

we have finally finished fixing contrail-packages and successfuly deployed functional Contrail 2.20 installation from these packages.

All these packages are available on our Launchpad PPA: https://launchpad.net/~tcpcloud Extra repository contains mostly dependencies for running and building Opencontrail and some packages not yet available in Ubuntu. These packages are not part of any git repository (except for kafka which was taken here [1] for the moment and I still wonder how this could pass QA) Packages in PPA are published automatically from our CI so they are always up to date.

I am soon going to finish blog post with instructions on how to build Opencontrail packages using clean chroot environments with Pbuilder.

In the meantime I hope our Gerrit fixes will be merged soon so we won't have to maintain tcpcloud/contrail-packages fork.
https://review.opencontrail.org/#/dashboard/191

Hope our fixes and packages will be useful for others.

[1] https://github.com/Juniper/contrail-third-party-packages/tree/master/upstream/debian/kafka_2.9.2-0.8.1.1/debian

---

Ad. choice of init systems. We should use what is default in distribution where out packages are going to be accepted. In case of Ubuntu it's upstart and systemd for future releases. I don't think upstream would ever accept packages that are forcing user to use non-standard system like supervisor.

Unfortunately nodemgr checks supervisord so it would require some patching.

Anyway I think the next step is to get rid of third party software bundled in contrail packages. I am definately in for further contribution. We should get list of used third parties and status in upstream (Debian and Ubuntu) to prepare backported builds for use with Contrail PPA and contribute missing software.

On CI enhancement, I will publish jenkins job builder setup for our contrail builds using jenkins debian glue and Pbuilder together with my blog post so then it can be modified and used for Juniper testing builds.


Filip

On 07/16/2015 09:01 PM, Pedro Marques wrote:
Filip,

On Jul 16, 2015, at 6:47 AM, Filip Pytloun <[email protected]> wrote:

Hello Martin,

so is there some repository that you use to track packaging changes when you 
don't contribute back to Juniper/contrail-packages?
I didn't found such repository or any more informations on how syseleven builds 
are done, so that was the main reason why we have chosen to use 
Juniper/contrail-packages to build packages and contribute back to it.

Are your changes and restructuring so huge or incompatible so they can't be 
contributed back to Juniper/contrail-packages?
There are probably the following categories of changes:
1. Migrating third-party downloads to a set of x-dev packages.
2. Choice of init systems (supervisor, systemd, initd).
3. Details that may depend on deployment design.

AFAIK,
In order to solve 1. we just need someone to upload the packages to the 
opencontrail PPA so they can be used as build dependencies; it would be good to 
have the packaging scripts committed to contrail-packages also so that these 
source packages can be recreated. This just means adding packages… Once this is 
done, the opencontral CI systems need to be modified so that they can use the 
PPA as a repository in order to download these files… then the build 
dependencies can be added. It is a sequence of steps requiring coordination but 
it not really a design issue.

To address the choice of init systems… I would defer to the debian experts to 
suggest an option. Please lets not try to re-hash which init system is best. It 
seems to me that there should be a reasonable method to select which one to use.

Options that may be design choices should be done in a way that doesn’t prevent 
multiple choice from being available.

OpenContrail is used with and without OpenStack (e.g. cloudstack, custom 
orchestration systems, kubernetes). So for instance OpenStack related 
dependencies need to be optional (that is the reason there is a 
config-openstack package).

Also which build is what you are using in real deployment? For example I didn't 
found package contrail-nova-vif in any of Syseleven's builds (including R2.20) 
and it's required for Nova API to start. So syseleven's distribution doesn't 
seem to be complete enough to be used as is.
BTW I am going to finish and contribute build of contrail-nova-vif to 
Juniper/contrail-packages soon.
AFAIK that package is no longer required on OpenStack Kilo.

Anyway it would be great to unify these builds, with support from Juniper where 
possible
Sure. It will just require coordination… and a bit of work. My understanding is 
that Cloudwatt is also working on 2.2 packaging… the Reliance Jio crowd also 
has their own build, i believe. We could probably put together a reasonably 
size team assuming we can coordinate. The other aspect is that build and 
packaging impacts the opencontrail CI… which is a non-trivial operational 
effort for the Juniper team. Contributions to making the CI more robust would 
also be greatly appreciated...


(eg. for third party stuff you have mentioned) maybe replacing supervisord by 
upstart/systemd integration - but these changes would require fixes in upstream 
code (nodemgr for sure, maybe other components).
I would prefer keeping package builds in Juniper/contrail-packages at the 
moment (if it's possible) or create Debian packaging team and use Debian's 
Alioth.
It is preferable if the packaging scripts are the ones used by the CI system in 
order to ensure that they are always functional. The contrail-packages 
repository is what the CI uses to build packages. Assuming that what is there 
works for everyone, it would be trivial to cut a release and propose that 
upstream to debian (along with a specific release of the contrail-source code).

The second option would be better if we are strong enough for it :-)

Filip

On 07/16/2015 07:49 AM, Martin Gerhard Loschwitz wrote:
Good morning,

Am 15.07.2015 um 22:17 schrieb Filip Pytloun <[email protected]>:

Hello Martin,

there are several reasons why we have decided to make our own build:

- at the beginning syseleven packages seemed to be built using 
contrail-packages as is (but now it seems there are probably some differences?)
Our packages are still built using the pristine Contrail source as delivered by 
GitHub.
Let's take contrail - 2.20~test+1+git+09345e6-1+syseleven2 from

https://launchpad.net/~syseleven-platform/+archive/ubuntu/contrail-2.20/+packages

as an example: The last part of the version number (everything behind the last 
+) is
the Git commit ID that was used as source for these packages. There have been a
number of changes to the source:

* Strip out the third_party-stuff after having built proper debian packages of 
all the
components that are introduced by third_party stuff -- this alone accomodates 
for a
number of patches in debian/patches

* Numerous bug fixes backported from R2.10 and R2.20 to work around issues that
we found in our Contrail installation, mostly suggested by Juniper

All patches can be found in the debian/patches subdirectory, so it's 
transparent by
all means to figure out how our contrail sources are different from the 
official ones.

Speaking of which: The debian/ subdirectory is also based on what can be found 
in
the packaging git repository; there were, however, a number of changes that were
required due to the package restructuring I conducted. Oh, and I did stuff like 
adding
back upstart files for all the Contrail daemons because Upstart is what Ubuntu 
14.04
uses as its default init system and if you want to support Ubuntu 14.04, you 
need to
have upstart scripts for the stuff.

  - still there are some missing packages so it doesn't seem to be deployable 
easily

For R2.20, we haven't build all the packages yet. For R2.0, we're running a 
cluster
automatically deployed with puppet-contrail using exactly these packages. We 
are,
in fact, probably not covering the complete Contrail control feature set yet 
(we have
left out all the nodemgr stuff, for instance). But the basic functionality is 
given by all
means.

- we wanted to have possibility to patch our builds and have some more control 
over it

See answer to 1. The Debian Package Source Format 3.0 supports a Quilt mode that
will easily allow to introduce patches and keep track of them.

- we decided not to use official distribution from contrail-packaging, because 
unfortunately it doesn't meet expected quality standards on packaging

We're totally on the same side here.

- also making our builds gives us some deeper insight on how the machine works 
under the hood

That I can relate to, too.

Anyway I would like to join and maintain contrail-packages so anyone can make 
own build and deploy without reinventing the wheel.

Possibly we can try to contribute to Debian so Opencontrail may be part of 
Debian and Ubuntu distributions once.

Filip

I'll be more than happy to help. As pointed out in my answer to Robert, there 
are some
show stoppers for this though. The third_party stuff is a major problem that we 
can
either wait for Juniper to solve or solve on our own. The SysEleven repos have 
proper
builds of all packages that would be build by the third_party directory, so 
there is a
base to start with. Our contrail-controller packages also contain the patches 
required to
make contrail-controller compile without anything from third_party, using the 
proper
packages instead. We'd just need a group of people large enough to create the 
needed
momentum, and we would need to be willing to create packages diverging from the
Juniper ones if it's necessary to stay compliant with the Debian and Ubuntu 
policies.
I'm thinking of stuff such as upstart/systemd integration.

Please let me know what you think.

Best regards
Martin

_______________________________________________
Dev mailing list
[email protected]
http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org


_______________________________________________
Dev mailing list
[email protected]
http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org

Reply via email to