Devstack cannot install Horizon plugins using pip version > 8

Bug #1540328 reported by Valeriy Ponomaryov on 2016-02-01
44
This bug affects 9 people
Affects Status Importance Assigned to Milestone
Magnum UI
High
Shu Muto
devstack
Undecided
YAMAMOTO Takashi

Bug Description

Devstack always installs "test-requirements" for all projects, but lots of UI plugins for Horizon install "Horizon" from url for tests, and it should not be installed in Devstack, only for tests env.

Latest pip (8.0.2) fails to do it with following error:

Could not satisfy constraints for 'horizon': installation from path or url cannot be constrained to a version

Example in Manila project logs that installs its Manila UI plugin for Horizon in CI:

http://logs.openstack.org/36/274136/2/check/gate-manila-tempest-dsvm-neutron/3b33fd6/logs/devstacklog.txt.gz#_2016-02-01_08_30_54_723
(copied to http://paste.openstack.org/show/486969/)

Problem appeared after merge of following change to devstack:

https://review.openstack.org/#/c/271985/

List of potentially affected UI projects, that are going to fail:

evoque-dashboard
cue-dashboard
trove-dashboard
senlin-dashboard
neutron-lbaas-dashboard
sahara-dashboard
mistral-dashboard
manila-ui
horizon-cisco-ui
zaqar-ui
group-based-policy-ui
monasca-ui
magnum-ui

and project "manila-ui" fails for sure.

summary: - devstack cannot install Horizon plugins using pip 8.x
+ Devstack cannot install Horizon plugins using pip 8.x
tags: added: devstack gate-failure horizon
Matt Riedemann (mriedem) on 2016-02-01
Changed in devstack:
status: New → Confirmed
Chad Roberts (croberts) wrote :

Indeed, I can confirm that sahara-dashboard is affected by this

Akihiro Motoki (amotoki) wrote :

In neutron subprojects, we install neutron (as dependency) as part of tox install_command like [1] and [2].
Of course, it is great if pip handles it appropriately, but I think the way neutron team uses is a good possible workaround.

[1] http://git.openstack.org/cgit/openstack/neutron-lbaas/tree/tox.ini#n11
[2] http://git.openstack.org/cgit/openstack/neutron-lbaas/tree/tools/tox_install.sh

Akihiro Motoki (amotoki) on 2016-02-15
description: updated
Mathieu Rohon (mathieu-rohon) wrote :

I can confirm that for bgpvpn, the devstack script works on a fresh deployment, but subsequent call to stack.sh fails with the error :

Could not satisfy constraints for 'networking-bagpipe': installation from path or url cannot be constrained to a version

Shu Muto (shu-mutou) on 2016-03-17
Changed in magnum-ui:
assignee: nobody → Shu Muto (shu-mutou)
status: New → In Progress

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

Changed in devstack:
assignee: nobody → YAMAMOTO Takashi (yamamoto)
status: Confirmed → In Progress

Change abandoned by YAMAMOTO Takashi (<email address hidden>) on branch: master
Review: https://review.openstack.org/294627
Reason: see https://review.openstack.org/#/c/295629/

Shu Muto (shu-mutou) on 2016-03-24
Changed in magnum-ui:
importance: Undecided → High
status: In Progress → Fix Released
milestone: none → mitaka-3

The bug is definitely in second+ calls to stack.sh.

A workaround is to git reset --hard on /opt/stack/requirements.

I suspect there is a bad dependency / pip call somewhere but I haven't tracked it down yet.

Changed in devstack:
status: In Progress → Confirmed
purandarrao (purandarrao) wrote :

I was still facing this problem today when stack.sh is ran after the 1st time again. Robert Collins work around suggestion worked for me, Thanks!

Sean Murphy (murp) wrote :

Robert's workaround also worked for me.

Sharat Sharma (sharat-sharma) wrote :

Robert Collins, that's a great workaround. Thanks. But we should find a solution for this problem

fengchaoyang (fengchaoyang) wrote :

Now pip version = 9.0.1, This bug still exists. We only have to wait for the pip developer community to fix this bug.:(

summary: - Devstack cannot install Horizon plugins using pip 8.x
+ Devstack cannot install Horizon plugins using pip version > 8
zhangdetong (zhangdetong) wrote :

Affected when installing mistral.

Tony Breeds (o-tony) wrote :

So this isn't a pip issue. It's doing *exactly* what it's designed to do.

I'm not convinced it's a devstack *bug*, it could be considered a missing feature but that's a differnt thing.

When devstack installs a $service from git it also updates the constraints to denote the "one true version". Later when a $project comes along (say a *-ui which depends on horizon, or blazar-nova which depends on nova) pip cannot install from the tarball fro $service because it doesn't match the "one true version" already recorded in the upper-constraints.txt

Listing the tarball in *requirements.txt is great from an installation POV but it causes problem like this in the gate.

There are 4 main installation methods:
1. Dirsto packages[1]
2. Some variation of git clone $project_url && cd $project" && pip install .
3. A developer wanting to run tox unit tests in $project (where $project *needs* $service)
4. An integration test (devstack) that needs to install $project and $service

The neutron-*aas projects have solved all 4 scenarios but *not* codifying the requirement for $service instead relying on documentation to make that clear *and* using something like [2] to handle scenarios 3 and 4

[1] This is actually pretty simple as they'll follow more or less whatever works for scenario 2
[2] http://git.openstack.org/cgit/openstack/neutron-vpnaas/tree/tools/tox_install.sh

Sean Dague (sdague) wrote :

This devstack bug was last updated over 180 days ago, as devstack
is a fast moving project and we'd like to get the tracker down to
currently actionable bugs, this is getting marked as Invalid. If the
issue still exists, please feel free to reopen it.

Changed in devstack:
status: Confirmed → Invalid
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers