[openstack-dev] [ANVIL] Missing openvswitch dependency for basic-neutron.yaml persona

Joshua Harlow harlowja at yahoo-inc.com
Wed Aug 14 17:22:02 UTC 2013


Hi Sylvain,

Thanks for checking looking it over.

I think another anvil dev has started looking at the bug but here is an explanation of the spec process anyway :-)

Preparing: which does the creation of the SRPMs
0. https://github.com/stackforge/anvil/blob/master/anvil/actions/prepare.py#L71
  a. This then creates a yum class (which will do the work, this was abstracted so that its relatively easy to say have deb packaging later if ever wanted…)
1. https://github.com/stackforge/anvil/blob/master/anvil/packaging/yum.py#L150 then gets called will either package the openstack dependencies or the openstack component itself.
  a. Lets go down the openstack component itself path for now (the other path is simpler).
2. https://github.com/stackforge/anvil/blob/master/anvil/packaging/yum.py#L572 gets called
  a. This will create the SRPM (and in that SRPM will be the spec file itself), the rest of that function creates the parameters for the spec file to be expanded with (see _write_spec_file also for how requirements, epoch get determined).

Building: aka, converting the SRPMs -> RPMs
0. https://github.com/stackforge/anvil/blob/master/anvil/actions/build.py#L44
1. https://github.com/stackforge/anvil/blob/master/anvil/packaging/yum.py#L172
  a. This is actually a simpler process since yum has a nice way to easily translate SRPMs->RPMs so all we do is use a make file with a parallel number of jobs to do that.

So your hook could be at #2 if you wanted to not include the openvswitch logic in the spec file, u can hook in there to determine if say openvswitch is in this variable (which each instance/component that gets built should have populated, https://github.com/stackforge/anvil/blob/master/anvil/components/base.py#L30 and then easily switch on/off the spec file inclusion of the openvswitch packaging logic).

I hope that makes sense, try printing out the subsystems variable (which comes in from https://github.com/stackforge/anvil/blob/master/conf/personas/in-a-box/basic.yaml#L37 , for example) .

-Josh

From: Sylvain Bauza <sylvain.bauza at bull.net<mailto:sylvain.bauza at bull.net>>
Date: Wednesday, August 14, 2013 2:23 AM
To: Joshua Harlow <harlowja at yahoo-inc.com<mailto:harlowja at yahoo-inc.com>>
Cc: OpenStack Development Mailing List <openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>>
Subject: Re: [openstack-dev] [ANVIL] Missing openvswitch dependency for basic-neutron.yaml persona

Thanks for the links, pretty useful. I do understand the process, but I have to admin I don't catch which Cheetah placeholder I would use for doing a big 'if' statement conditioning the package openstack-neutron-openvswitch on the core_plugin yaml option.

As you said, this is not enough, if asked, openvswitch should also either be compiled or fetched from RDO.
I filed a bug : https://bugs.launchpad.net/anvil/+bug/1212165


Anyway, I'm pretty much interested in doing the 1. you mentioned, I still need to understand things, tho. Could you be more precise on the way the spec files are populated ?

Thanks,
-Sylvain


Le 13/08/2013 19:55, Joshua Harlow a écrit :
Haha, no problem. Darn time differences.

So some other useful links that I think will be helpful.

- https://github.com/stackforge/anvil/blob/master/conf/templates/packaging/specs/openstack-neutron.spec

This one is likely the biggest part of the issue, since it is the combination of all of neutron into 1 package (which has sub-packages).

- One of those sub-packages is https://github.com/stackforge/anvil/blob/master/conf/templates/packaging/specs/openstack-neutron.spec#L274

This is pulling in the openvswitch part, that I think u don't want (at least not always want, it's wanted if neutron is going to use it, which under certain plugins it will).

As you've seen it likely shouldn't be installing/needing that if https://github.com/stackforge/anvil/blob/master/anvil/components/configurators/neutron_plugins/linuxbridge.py is used.

This should be coming from the following config (which will come from the yaml files) 'get_option' 'call':

https://github.com/stackforge/anvil/blob/master/anvil/components/configurators/neutron.py#L49

So I think what can be done is a couple of things:

  1.  Don't include sub-packages that we don't want (the spec files are cheetah<http://www.cheetahtemplate.org/> templates, so this can be done dynamically).
  2.  See if there is a way to make yum (or via yyoom) not pull in the dependencies for a sub-package when it won't be used (?)
  3.  Always build openvswitch (not as preferable) and include it (https://github.com/stackforge/anvil/blob/master/tools/build-openvswitch.sh)
     *   I think the RDO repos might have some of these components.
     *   http://openstack.redhat.com/Frequently_Asked_Questions#For_which_distributions_does_RDO_provide_packages.3F
     *   This means we can just include the RDO repo rpm (like epel and use that openvswitch version there) instead of build your own.

Hope some of this offers some good pointers.

-Josh

From: Sylvain Bauza <sylvain.bauza at bull.net<mailto:sylvain.bauza at bull.net>>
Date: Tuesday, August 13, 2013 9:52 AM
To: Joshua Harlow <harlowja at yahoo-inc.com<mailto:harlowja at yahoo-inc.com>>
Cc: OpenStack Development Mailing List <openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>>
Subject: Re: [openstack-dev] [ANVIL] Missing openvswitch dependency for basic-neutron.yaml persona

Well, then I have to read thru the docs to see how it can be done thru a config option... =)

Nope, I won't be able to catch you up on IRC, time difference you know :-)
Anyway, let me go thru it, I'll try to sort it out.

I RTFM'd all the anvil docs, but do you have any other pointer for me ?

Thanks,
-Sylvain

Le 13/08/2013 18:39, Joshua Harlow a écrit :
Well open switch is likely needed still when it's really needed right? So I think there is a need for it. It just might have to be a dynamic choice (based on a config option) instead of a static choice. Make sense??

The other personas don't use neutron so I think that's how they work, since nova-network base functionality still exists.

Any patches would be great, will be on irc soon if u want to discuss more.

Josh

Sent from my really tiny device...

On Aug 13, 2013, at 9:23 AM, "Sylvain Bauza" <sylvain.bauza at bull.net<mailto:sylvain.bauza at bull.net>> wrote:

Do you confirm the basic idea would be to get rid of any openvswitch reference in rhel.yaml ?
If so, wouldn't it be breaking other personas ?

I can provide a patch so the team would review it.

-Sylvain

Le 13/08/2013 17:57, Joshua Harlow a écrit :
It likely shouldn't be needed :)

I haven't personally messes around with the neutron persona to much and I know that it just underwent the "great rename of 2013" so u might be hitting issues due to that.

Try seeing if u can adjust the yaml file and if not I am on irc to help more.

Sent from my really tiny device...

On Aug 12, 2013, at 9:14 AM, "Sylvain Bauza" <sylvain.bauza at bull.net<mailto:sylvain.bauza at bull.net>> wrote:

Hi,

./smithy -a install -p conf/personas/in-a-box/basic-neutron.yaml is failing because of openvswitch missing.
See logs here [1].

Does anyone knows why openvswitch is needed when asking for linuxbridge in components/neutron.yaml ?
Shall I update distros/rhel.yaml ?

-Sylvain



[1] : http://pastebin.com/TFkDrrDc


_______________________________________________
OpenStack-dev mailing list
OpenStack-dev at lists.openstack.org<mailto:OpenStack-dev at lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



_______________________________________________
OpenStack-dev mailing list
OpenStack-dev at lists.openstack.org<mailto:OpenStack-dev at lists.openstack.org>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130814/60efda1b/attachment-0001.html>


More information about the OpenStack-dev mailing list