Add devstack external plugin spec
Change-Id: I173dee3d57967b1d2ffd30e4868a2832aeac97ce
This commit is contained in:
parent
f071be1088
commit
e1e8921b10
@ -20,7 +20,7 @@ DevStack Project Specifications
|
|||||||
:glob:
|
:glob:
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
.. specs/devstack/*
|
specs/devstack/*
|
||||||
|
|
||||||
Implemented Specifications
|
Implemented Specifications
|
||||||
--------------------------
|
--------------------------
|
||||||
|
97
specs/devstack/devstack-external-plugins.rst
Normal file
97
specs/devstack/devstack-external-plugins.rst
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
=========================
|
||||||
|
Devstack external plugins
|
||||||
|
=========================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/tempest/+spec/devstack-external-plugins
|
||||||
|
|
||||||
|
Support external plugins for devstack.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Devstack has a pretty strong plugin support, you just have to drop
|
||||||
|
your extra feature in the extras.d/ directory and it will
|
||||||
|
automatically parse the file and install the feature as long you have
|
||||||
|
enabled it in your local.conf.
|
||||||
|
|
||||||
|
This all works very well but that's not very flexible for projects
|
||||||
|
that are not able to be integrated directly in devstack
|
||||||
|
core. Currently an external OpenStack project who wants to tell its
|
||||||
|
users how to test a feature has to explain how to download a file to
|
||||||
|
put in the `extras.d` directory and enabling it.
|
||||||
|
|
||||||
|
As for integrated projects they may wants to take care of how they do
|
||||||
|
devstack directly in their own repo and get devstack to use that
|
||||||
|
instead of having to request for a change in devstack repository.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Devstack would provide a new enable_plugin function call that would be
|
||||||
|
of the following format::
|
||||||
|
|
||||||
|
enable_plugin <name> <http://git.openstack.org/foo/external_feature>
|
||||||
|
[refname]
|
||||||
|
|
||||||
|
`name` is an arbitrary name picked for enablement, `repo` is the
|
||||||
|
full url to a git repo, and `refname` is the optional ref
|
||||||
|
description (defaulting to `master` if none is provided).
|
||||||
|
|
||||||
|
Devstack would then checkout that repository in `${DEST}/name` and
|
||||||
|
look for a `/devstack/` directory in there from the root of the repo.
|
||||||
|
|
||||||
|
Files in there would have :
|
||||||
|
|
||||||
|
* `/devstack/settings` - a file that gets sourced to override global settings,
|
||||||
|
those variables become instantly available in the global namespace.
|
||||||
|
* `/devstack/plugin.sh` - dispatcher for the various phases
|
||||||
|
|
||||||
|
Devstack when executed will then:
|
||||||
|
|
||||||
|
* Get the configuration of the `extras.d` repos.
|
||||||
|
* Clone the extras repository to `${DEST}`
|
||||||
|
* Run all the `extras.d` scripts at a particular phase
|
||||||
|
* Run all the plugins `plugin.sh` at a particular phase
|
||||||
|
|
||||||
|
This would let the out of tree projects that needs to communicate about their
|
||||||
|
config to export data via settings that would let the other configure based on
|
||||||
|
their setup.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
The alternative would be to stay as the status quo like we have now and have
|
||||||
|
them to curl the extras file from the external repository and place it in the
|
||||||
|
`extras.d` directory.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
* Chmouel Boudjnah <chmouel@chmouel.com>
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
* Sean Dague <sean@dague.net>
|
||||||
|
|
||||||
|
|
||||||
|
Milestones
|
||||||
|
----------
|
||||||
|
|
||||||
|
Target Milestone for completion:
|
||||||
|
Kilo-2
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Add support in devstack.
|
||||||
|
* Get an example repository setup.
|
||||||
|
* Get a project like nova-docker to use it.
|
||||||
|
* (glusterfs is a good current candidate)
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# Copyright 2014 Samsung Electronics
|
# Copyright 2014 Samsung Electronics
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user