[openstack-dev] [Nova][Deployers] Optional, platform specific, dependancies in requirements.txt

Monty Taylor mordred at inaugust.com
Thu Apr 12 18:54:46 UTC 2018


On 04/12/2018 11:27 AM, Clark Boylan wrote:
> On Wed, Apr 11, 2018, at 5:45 PM, Matt Riedemann wrote:
>> I also seem to remember that [extras] was less than user-friendly for
>> some reason, but maybe that was just because of how our CI jobs are
>> setup? Or I'm just making that up. I know it's pretty simple to install
>> the stuff from extras for tox runs, it's just an extra set of
>> dependencies to list in the tox.ini.
> 
> One concern I have as a user is that extras are not very discoverable without reading the source setup.cfg file. This can be addressed by improving installation docs to explain what the extras options are and why you might want to use them.

Yeah - they're kind of an advanced feature that most python people don't 
seem to know exists at all.

I'm honestly worried about us expanding our use of them and would prefer 
we got rid of our usage. I don't think the upcoming Pipfile stuff 
supports them at all - and I believe that's on purpose.

> Another idea was to add a 'all' extras that installed all of the more fine grained extra's options. That way a user can just say give me all the features I don't care even if I can't use them all I know the ones I can use will be properly installed.
> 
> As for the CI jobs its just a matter of listing the extras in the appropriate requirements files or explicitly installing them.

How about instead of extras we just make some additional packages? Like, 
for instance make a "nova-zvm-support" repo that contains the extra 
requirements in it and that we publish to PyPI. Then a user could do 
"pip install nova nova-zvm-support" instead of "pip install nova[zvm]".

That way we can avoid installing optional things for the common case 
when they're not going to be used (including in the gate where we have 
no Z machines) but still provide a mechanism for users to easily install 
the software they need. It would also let a 3rd-party ci that DOES have 
some Z to test against to set up a zuul job that puts nova-zvm-support 
into its required-projects and test the combination of the two.

We could do a similar thing for the extras in keystoneauth. Make a 
keystoneauth-kerberos and a keystoneauth-saml2 and a keystoneauth-oauth1.

Just a thought...

Monty



More information about the OpenStack-dev mailing list