Merge branch 'anvil_rename'
This commit is contained in:
commit
fed362d390
26
AUTHORS
26
AUTHORS
@ -1,5 +1,5 @@
|
||||
V2
|
||||
--
|
||||
Anvil
|
||||
-----
|
||||
Chris Wright <chrisw@sous-sol.org>
|
||||
Gunther Hagleitner <hagleitn@yahoo-inc.com>
|
||||
Jonathan Lacour <jonathan@dreamhost.com>
|
||||
@ -8,26 +8,4 @@ Ken Thomas <krt@yahoo-inc.com>
|
||||
Ed Hall <edhall@yahoo-inc.com>
|
||||
Mike Perez <thingee@gmail.com>
|
||||
Mike Pittaro <mikeyp@LaHondaResearch.org>
|
||||
|
||||
V1
|
||||
--
|
||||
Andy Smith <github@anarkystic.com>
|
||||
Anthony Young <sleepsonthefloor@gmail.com>
|
||||
Brad Hall <brad@nicira.com>
|
||||
Chmouel Boudjnah <chmouel@chmouel.com>
|
||||
Dean Troyer <dtroyer@gmail.com>
|
||||
Devin Carlen <devin.carlen@gmail.com>
|
||||
Eddie Hebert <edhebert@gmail.com>
|
||||
Jake Dahn <admin@jakedahn.com>
|
||||
James E. Blair <james.blair@rackspace.com>
|
||||
Jason Cannavale <jason.cannavale@rackspace.com>
|
||||
Jay Pipes <jaypipes@gmail.com>
|
||||
Jesse Andrews <anotherjesse@gmail.com>
|
||||
Justin Shepherd <galstrom21@gmail.com>
|
||||
Kiall Mac Innes <kiall@managedit.ie>
|
||||
Scott Moser <smoser@ubuntu.com>
|
||||
Todd Willey <xtoddx@gmail.com>
|
||||
Tres Henry <tres@treshenry.net>
|
||||
Vishvananda Ishaya <vishvananda@gmail.com>
|
||||
Yun Mao <yunmao@gmail.com>
|
||||
Doug Hellmann <doug.hellmann@dreamhost.com>
|
||||
|
24
HACKING.md
24
HACKING.md
@ -1,26 +1,22 @@
|
||||
# Contributing to DEVSTACKpy
|
||||
# Contributing to Anvil
|
||||
|
||||
## General
|
||||
|
||||
DEVSTACKpy is written in python (we should be compatible with ``python >= 2.6``).
|
||||
Anvil is written in python (we should be compatible with ``python >= 2.6``).
|
||||
|
||||
DEVSTACKpy's official repository is located on GitHub at
|
||||
https://github.com/yahoo/Openstack-DevstackPy.git.
|
||||
Anvil's official repository is located on GitHub at: https://github.com/yahoo/Openstack-DevstackPy.git.
|
||||
|
||||
Besides the master branch that tracks the OpenStack ``trunk`` branches will maintained for all
|
||||
OpenStack releases starting with Essex (stable/essex).
|
||||
Besides the master branch that tracks the OpenStack ``trunk`` branches will maintained for all OpenStack releases starting with Essex (stable/essex).
|
||||
|
||||
The primary script in DEVSTACKpy is ``stack``, which performs the bulk of the
|
||||
work for DevStack's use cases (it acts as the main program entrypoint).
|
||||
The primary script in Anvil is ``smithy``, which performs the bulk of the work for Anvil's use cases (it acts as the main program entrypoint).
|
||||
|
||||
A number of additional scripts can be found in the ``tools`` directory that may
|
||||
be useful for other tasks related to DEVSTACKpy.
|
||||
A number of additional scripts can be found in the ``tools`` directory that may or may not be useful to you.
|
||||
|
||||
## Documentation
|
||||
|
||||
Please create documentation in the ``docs/`` folder which will be synced with:
|
||||
|
||||
http://readthedocs.org/docs/devstackpy/
|
||||
http://readthedocs.org/docs/anvil/
|
||||
|
||||
This will suffice until a more *official* documentation site can be made.
|
||||
|
||||
@ -35,12 +31,6 @@ This will suffice until a more *official* documentation site can be made.
|
||||
* Please also attempt to run the yaml validation if you adjust any yaml files in the `conf` directory.
|
||||
* ``./run_tests.sh -y``
|
||||
|
||||
## Tests
|
||||
|
||||
To run our limited set of tests (WIP) use the following command:
|
||||
|
||||
./run_tests.sh
|
||||
|
||||
## Environment Variables
|
||||
|
||||
* The ``OS_*`` environment variables should be the only ones used for all
|
||||
|
@ -1,3 +1,3 @@
|
||||
# We want more information!
|
||||
|
||||
Please check out: <http://readthedocs.org/docs/devstackpy/>
|
||||
Please check out: <http://readthedocs.org/docs/anvil/>
|
||||
|
@ -17,17 +17,17 @@
|
||||
import abc
|
||||
import collections
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import date
|
||||
from devstack import env_rc
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import packager
|
||||
from devstack import pip
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from devstack import trace as tr
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import date
|
||||
from anvil import env_rc
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import packager
|
||||
from anvil import pip
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
from anvil import trace as tr
|
||||
from anvil import utils
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
@ -19,11 +19,11 @@ import re
|
||||
|
||||
import iniparse
|
||||
|
||||
from devstack import cfg_helpers
|
||||
from devstack import env
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import utils
|
||||
from anvil import cfg_helpers
|
||||
from anvil import env
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import utils
|
||||
|
||||
ENV_PAT = re.compile(r"^\s*\$\{([\w\d]+):\-(.*)\}\s*$")
|
||||
SUB_MATCH = re.compile(r"(?:\$\(([\w\d]+):([\w\d]+))\)")
|
@ -17,14 +17,14 @@
|
||||
import re
|
||||
import weakref
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import downloader as down
|
||||
from devstack import exceptions as excp
|
||||
from devstack import importer
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import trace as tr
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import downloader as down
|
||||
from anvil import exceptions as excp
|
||||
from anvil import importer
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import trace as tr
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@ -512,7 +512,7 @@ class ProgramRuntime(ComponentBase):
|
||||
pass
|
||||
|
||||
def _fetch_run_type(self):
|
||||
return self.cfg.getdefaulted("DEFAULT", "run_type", 'devstack.runners.fork:ForkRunner')
|
||||
return self.cfg.getdefaulted("DEFAULT", "run_type", 'anvil.runners.fork:ForkRunner')
|
||||
|
||||
def configure(self):
|
||||
# First make a pass and make sure all runtime (e.g. upstart starting)
|
@ -14,12 +14,12 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
import abc
|
||||
|
@ -18,15 +18,15 @@ from urlparse import urlunparse
|
||||
|
||||
import io
|
||||
|
||||
from devstack import cfg
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from anvil import cfg
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
|
||||
from devstack.components import db
|
||||
from devstack.components import keystone
|
||||
from anvil.components import db
|
||||
from anvil.components import keystone
|
||||
|
||||
from devstack.image import uploader
|
||||
from anvil.image import uploader
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -15,8 +15,8 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -14,14 +14,14 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from anvil.components import db
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -18,14 +18,14 @@ import io
|
||||
|
||||
from urlparse import urlunparse
|
||||
|
||||
from devstack import cfg
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import cfg
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from anvil.components import db
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -14,8 +14,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -16,14 +16,14 @@
|
||||
|
||||
import io
|
||||
|
||||
from devstack import cfg
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import cfg
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from anvil.components import db
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -14,8 +14,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -20,19 +20,19 @@ import weakref
|
||||
|
||||
from urlparse import urlunparse
|
||||
|
||||
from devstack import cfg
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import date
|
||||
from devstack import exceptions
|
||||
from devstack import libvirt as lv
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import cfg
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import date
|
||||
from anvil import exceptions
|
||||
from anvil import libvirt as lv
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from devstack.components import keystone
|
||||
from devstack.components import rabbit
|
||||
from anvil.components import db
|
||||
from anvil.components import keystone
|
||||
from anvil.components import rabbit
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -14,8 +14,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -14,11 +14,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
|
||||
from devstack.components import nova
|
||||
from anvil.components import nova
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -16,7 +16,7 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
from devstack import component
|
||||
from anvil import component
|
||||
|
||||
|
||||
class Installer(component.PkgInstallComponent):
|
@ -16,14 +16,14 @@
|
||||
|
||||
import io
|
||||
|
||||
from devstack import cfg
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import cfg
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from anvil.components import db
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -14,8 +14,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -16,11 +16,11 @@
|
||||
|
||||
from tempfile import TemporaryFile
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -16,11 +16,11 @@
|
||||
|
||||
import re
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import component as comp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import component as comp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -17,7 +17,7 @@
|
||||
import functools
|
||||
import pprint
|
||||
|
||||
from devstack import log as logging
|
||||
from anvil import log as logging
|
||||
|
||||
# Very useful example ones...
|
||||
# See: http://wiki.python.org/moin/PythonDecoratorLibrary
|
@ -22,11 +22,11 @@ import shlex
|
||||
|
||||
import yaml
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import importer
|
||||
from devstack import log as logging
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from anvil import colorizer
|
||||
from anvil import importer
|
||||
from anvil import log as logging
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@ -34,7 +34,7 @@ LOG = logging.getLogger(__name__)
|
||||
class Distro(object):
|
||||
|
||||
@classmethod
|
||||
def load_all(cls, path=settings.STACK_DISTRO_DIR):
|
||||
def load_all(cls, path=settings.DISTRO_DIR):
|
||||
"""Returns a list of the known distros."""
|
||||
results = []
|
||||
input_files = glob.glob(sh.joinpths(path, '*.yaml'))
|
@ -18,9 +18,9 @@
|
||||
"""Platform-specific logic for RedHat Fedora 16 components.
|
||||
"""
|
||||
|
||||
from devstack import log as logging
|
||||
from anvil import log as logging
|
||||
|
||||
from devstack.distros import rhel6
|
||||
from anvil.distros import rhel6
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -21,14 +21,14 @@
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from anvil.components import db
|
||||
|
||||
from devstack.packaging import apt
|
||||
from anvil.packaging import apt
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -20,17 +20,17 @@
|
||||
|
||||
import re
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import db
|
||||
from devstack.components import horizon
|
||||
from devstack.components import nova
|
||||
from devstack.components import rabbit
|
||||
from anvil.components import db
|
||||
from anvil.components import horizon
|
||||
from anvil.components import nova
|
||||
from anvil.components import rabbit
|
||||
|
||||
from devstack.packaging import yum
|
||||
from anvil.packaging import yum
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@ -186,6 +186,6 @@ class YumPackagerWithRelinks(yum.YumPackager):
|
||||
# parallel.
|
||||
#
|
||||
# This of course doesn't work when running from git
|
||||
# like devstack does....
|
||||
# like anvil does....
|
||||
sh.symlink(src, tgt)
|
||||
return True
|
@ -19,9 +19,9 @@ import urllib
|
||||
|
||||
import progressbar
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from anvil import colorizer
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
import os
|
||||
|
||||
from devstack import log as logging
|
||||
from anvil import log as logging
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
@ -17,13 +17,13 @@
|
||||
from urlparse import urlunparse
|
||||
import re
|
||||
|
||||
from devstack import date
|
||||
from devstack import env
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import date
|
||||
from anvil import env
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import keystone
|
||||
from anvil.components import keystone
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -20,11 +20,11 @@ import re
|
||||
import tarfile
|
||||
import urlparse
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import downloader as down
|
||||
from devstack import log
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import downloader as down
|
||||
from anvil import log
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
@ -16,12 +16,12 @@
|
||||
|
||||
import contextlib
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import exceptions as excp
|
||||
from devstack import importer
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import exceptions as excp
|
||||
from anvil import importer
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -23,7 +23,7 @@ import sys
|
||||
from logging.handlers import SysLogHandler
|
||||
from logging.handlers import WatchedFileHandler
|
||||
|
||||
from devstack import colorizer
|
||||
from anvil import colorizer
|
||||
|
||||
|
||||
# A list of things we want to replicate from logging levels
|
||||
@ -118,5 +118,5 @@ def setupLogging(log_level, format='%(levelname)s: @%(name)s : %(message)s'):
|
||||
root_logger.setLevel(log_level)
|
||||
|
||||
|
||||
def getLogger(name='devstack'):
|
||||
def getLogger(name='anvil'):
|
||||
return TermAdapter(logging.getLogger(name))
|
@ -17,8 +17,11 @@
|
||||
from optparse import IndentedHelpFormatter
|
||||
from optparse import OptionParser, OptionGroup
|
||||
|
||||
from devstack import actions
|
||||
from devstack import version
|
||||
from anvil import actions
|
||||
from anvil import version
|
||||
from anvil import shell as sh
|
||||
from anvil import settings
|
||||
|
||||
|
||||
HELP_WIDTH = 80
|
||||
|
||||
@ -56,11 +59,12 @@ def parse():
|
||||
|
||||
# Install/start/stop/uninstall specific options
|
||||
base_group = OptionGroup(parser, "Install & uninstall & start & stop specific options")
|
||||
def_persona = sh.joinpths(settings.PERSONA_DIR, 'devstack.sh.yaml')
|
||||
base_group.add_option("-p", "--persona",
|
||||
action="store",
|
||||
type="string",
|
||||
dest="persona_fn",
|
||||
default='conf/personas/devstack.sh.yaml',
|
||||
default=def_persona,
|
||||
metavar="FILE",
|
||||
help="required persona yaml file to apply (default: %default)")
|
||||
base_group.add_option("-a", "--action",
|
@ -16,10 +16,10 @@
|
||||
|
||||
import abc
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import importer
|
||||
from devstack import log as logging
|
||||
from devstack import utils
|
||||
from anvil import colorizer
|
||||
from anvil import importer
|
||||
from anvil import log as logging
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -15,11 +15,11 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
from devstack import log as logging
|
||||
from devstack import packager as pack
|
||||
from devstack import shell as sh
|
||||
from anvil import log as logging
|
||||
from anvil import packager as pack
|
||||
from anvil import shell as sh
|
||||
|
||||
LOG = logging.getLogger("devstack.packaging.apt")
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
# Base apt commands
|
||||
APT_GET = ['apt-get']
|
@ -14,11 +14,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devstack import log as logging
|
||||
from devstack import packager as pack
|
||||
from devstack import shell as sh
|
||||
from anvil import log as logging
|
||||
from anvil import packager as pack
|
||||
from anvil import shell as sh
|
||||
|
||||
LOG = logging.getLogger("devstack.packaging.yum")
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
# Root yum command
|
||||
YUM_CMD = ['yum']
|
@ -16,9 +16,9 @@
|
||||
|
||||
import yaml
|
||||
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -15,9 +15,9 @@
|
||||
# under the License.
|
||||
|
||||
|
||||
from devstack import log as logging
|
||||
from devstack import shell as sh
|
||||
from devstack import packager as pack
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import packager as pack
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -22,11 +22,11 @@ import signal
|
||||
import sys
|
||||
import time
|
||||
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import runner as base
|
||||
from devstack import shell as sh
|
||||
from devstack import trace as tr
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import runner as base
|
||||
from anvil import shell as sh
|
||||
from anvil import trace as tr
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -18,14 +18,14 @@ import json
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
from devstack import date
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import runner as base
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from devstack import trace as tr
|
||||
from devstack import utils
|
||||
from anvil import date
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import runner as base
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
from anvil import trace as tr
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@ -54,7 +54,7 @@ LIST_CMD = ['screen', '-ls']
|
||||
SCREEN_KILLER = ['screen', '-X', '-S', '%SCREEN_ID%', 'quit']
|
||||
|
||||
# Where our screen sockets will go
|
||||
SCREEN_SOCKET_DIR_NAME = "devstack-screen-sockets"
|
||||
SCREEN_SOCKET_DIR_NAME = "forged-screen-sockets"
|
||||
SCREEN_SOCKET_PERM = 0700
|
||||
|
||||
# Screen RC file
|
@ -16,13 +16,13 @@
|
||||
|
||||
import json
|
||||
|
||||
from devstack import date
|
||||
from devstack import log as logging
|
||||
from devstack import runner as base
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from devstack import trace as tr
|
||||
from devstack import utils
|
||||
from anvil import date
|
||||
from anvil import log as logging
|
||||
from anvil import runner as base
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
from anvil import trace as tr
|
||||
from anvil import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -18,21 +18,23 @@ import os
|
||||
import sys
|
||||
|
||||
# What this program is called
|
||||
PROG_NICE_NAME = "DEVSTACKpy"
|
||||
PROG_NAME = 'anvil'
|
||||
|
||||
# Ip version constants for network ip detection
|
||||
IPV4 = 'IPv4'
|
||||
IPV6 = 'IPv6'
|
||||
|
||||
# RC files generated / used
|
||||
RC_FN_TEMPL = "os-%s.rc"
|
||||
RC_FN_TEMPL = "%s.rc"
|
||||
|
||||
# Where the configs and templates should be at...
|
||||
STACK_BIN_DIR = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
STACK_CONFIG_DIR = os.path.join(STACK_BIN_DIR, "conf")
|
||||
STACK_DISTRO_DIR = os.path.join(STACK_CONFIG_DIR, "distros")
|
||||
STACK_TEMPLATE_DIR = os.path.join(STACK_CONFIG_DIR, "templates")
|
||||
STACK_CONFIG_LOCATION = os.path.join(STACK_CONFIG_DIR, "stack.ini")
|
||||
BIN_DIR = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
CONFIG_DIR = os.path.join(BIN_DIR, "conf")
|
||||
DISTRO_DIR = os.path.join(CONFIG_DIR, "distros")
|
||||
TEMPLATE_DIR = os.path.join(CONFIG_DIR, "templates")
|
||||
PERSONA_DIR = os.path.join(CONFIG_DIR, "personas")
|
||||
CONFIG_NAME = 'anvil.ini'
|
||||
CONFIG_LOCATION = os.path.join(CONFIG_DIR, CONFIG_NAME)
|
||||
|
||||
|
||||
def gen_rc_filename(root_name):
|
@ -23,9 +23,9 @@ import shutil
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from devstack import env
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from anvil import env
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -17,9 +17,9 @@
|
||||
import json
|
||||
import os
|
||||
|
||||
from devstack import date
|
||||
from devstack import exceptions as excp
|
||||
from devstack import shell as sh
|
||||
from anvil import date
|
||||
from anvil import exceptions as excp
|
||||
from anvil import shell as sh
|
||||
|
||||
# Trace per line output format and file extension formats
|
||||
TRACE_FMT = ("%s - %s" + os.linesep)
|
@ -28,13 +28,13 @@ import distutils.version
|
||||
import netifaces
|
||||
import progressbar
|
||||
|
||||
from devstack import colorizer
|
||||
from devstack import date
|
||||
from devstack import exceptions as excp
|
||||
from devstack import log as logging
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from devstack import version
|
||||
from anvil import colorizer
|
||||
from anvil import date
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
from anvil import version
|
||||
|
||||
# The pattern will match either a comment to the EOL, or a
|
||||
# token to be subbed. The replacer will check which it got and
|
||||
@ -131,7 +131,7 @@ def get_from_path(items, path, quiet=True):
|
||||
|
||||
|
||||
def load_template(component, template_name):
|
||||
templ_pth = sh.joinpths(settings.STACK_TEMPLATE_DIR, component, template_name)
|
||||
templ_pth = sh.joinpths(settings.TEMPLATE_DIR, component, template_name)
|
||||
return (templ_pth, sh.load_file(templ_pth))
|
||||
|
||||
|
||||
@ -687,7 +687,7 @@ def welcome():
|
||||
lower = "| %s |" % (version.version_string())
|
||||
welcome_header = _get_welcome_stack()
|
||||
max_line_len = len(max(welcome_header.splitlines(), key=len))
|
||||
footer = colorizer.color(settings.PROG_NICE_NAME, 'green')
|
||||
footer = colorizer.color(settings.PROG_NAME.upper(), 'green')
|
||||
footer += ": "
|
||||
footer += colorizer.color(lower, 'blue', bold=True)
|
||||
uncolored_footer = (settings.PROG_NICE_NAME + ": " + lower)
|
@ -14,9 +14,9 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
DEVSTACK_VERSION = ['2012', '4']
|
||||
YEAR, COUNT = DEVSTACK_VERSION
|
||||
FINAL = False # May never be final ;-)
|
||||
VERSION = ['2012', '5']
|
||||
YEAR, COUNT = VERSION
|
||||
FINAL = False # May never be final ;)
|
||||
|
||||
|
||||
def canonical_version_string():
|
@ -1,4 +1,4 @@
|
||||
# Devstack2 local configuration
|
||||
# Anvil's local configuration
|
||||
|
||||
# When a value looks like a bash variable + default then it is parsed like a bash
|
||||
# variable and will perform similar lookups. Ie ${SQL_HOST:-localhost} will
|
||||
@ -28,10 +28,10 @@
|
||||
[DEFAULT]
|
||||
|
||||
# Which run type to use.
|
||||
# For forking/daemonizing mode use: devstack.runners.fork:ForkRunner
|
||||
# For screen mode use: devstack.runners.screen:ScreenRunner
|
||||
# For upstart mode use: devstack.runners.upstart:UpstartRunner
|
||||
run_type = ${RUN_TYPE:-devstack.runners.fork:ForkRunner}
|
||||
# For forking/daemonizing mode use: anvil.runners.fork:ForkRunner
|
||||
# For screen mode use: anvil.runners.screen:ScreenRunner
|
||||
# For upstart mode use: anvil.runners.upstart:UpstartRunner
|
||||
run_type = ${RUN_TYPE:-anvil.runners.fork:ForkRunner}
|
||||
|
||||
# How many seconds to wait until a service comes online before using it.
|
||||
# For example, before uploading to glance we need keystone and glance to be online.
|
||||
@ -342,7 +342,7 @@ partition_power_size = ${SWIFT_PARTITION_POWER_SIZE:-9}
|
||||
# and if no password is found (ie an empty string) then the user will be prompted to enter
|
||||
# a password, if they do not enter one (or its blank) then one will be generated for the user.
|
||||
|
||||
# You will need to send the same MYSQL_PASSWORD to every host if you are doing a multi-node devstack installation.
|
||||
# You will need to send the same MYSQL_PASSWORD to every host if you are doing a multi-node openstack installation.
|
||||
sql = ${MYSQL_PASSWORD:-}
|
||||
|
||||
# Change the rabbit password since the default is "guest"
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
# Fedora 16 configuration for DevstackPy
|
||||
# Fedora 16
|
||||
name: fedora-16
|
||||
distro_pattern: fedora-16
|
||||
packager_name: devstack.packaging.yum:YumPackager
|
||||
packager_name: anvil.packaging.yum:YumPackager
|
||||
commands:
|
||||
apache:
|
||||
restart: service httpd restart
|
||||
@ -60,9 +60,9 @@ commands:
|
||||
components:
|
||||
db:
|
||||
action_classes:
|
||||
install: devstack.distros.fedora16:DBInstaller
|
||||
running: devstack.components.db:DBRuntime
|
||||
uninstall: devstack.components.db:DBUninstaller
|
||||
install: anvil.distros.fedora16:DBInstaller
|
||||
running: anvil.components.db:DBRuntime
|
||||
uninstall: anvil.components.db:DBUninstaller
|
||||
packages:
|
||||
- name: mysql
|
||||
removable: true
|
||||
@ -72,9 +72,9 @@ components:
|
||||
version: 5.5*
|
||||
general:
|
||||
action_classes:
|
||||
install: devstack.components.pkglist:Installer
|
||||
running: devstack.component:EmptyRuntime
|
||||
uninstall: devstack.components.pkglist:Uninstaller
|
||||
install: anvil.components.pkglist:Installer
|
||||
running: anvil.component:EmptyRuntime
|
||||
uninstall: anvil.components.pkglist:Uninstaller
|
||||
packages:
|
||||
- name: curl
|
||||
removable: false
|
||||
@ -162,9 +162,9 @@ components:
|
||||
version: 1.12*
|
||||
glance:
|
||||
action_classes:
|
||||
install: devstack.components.glance:GlanceInstaller
|
||||
running: devstack.components.glance:GlanceRuntime
|
||||
uninstall: devstack.components.glance:GlanceUninstaller
|
||||
install: anvil.components.glance:GlanceInstaller
|
||||
running: anvil.components.glance:GlanceRuntime
|
||||
uninstall: anvil.components.glance:GlanceUninstaller
|
||||
packages:
|
||||
- name: MySQL-python
|
||||
removable: true
|
||||
@ -204,18 +204,18 @@ components:
|
||||
version: 0.2
|
||||
glance-client:
|
||||
action_classes:
|
||||
install: devstack.components.glance_client:GlanceClientInstaller
|
||||
running: devstack.components.glance_client:GlanceClientRuntime
|
||||
uninstall: devstack.components.glance_client:GlanceClientUninstaller
|
||||
install: anvil.components.glance_client:GlanceClientInstaller
|
||||
running: anvil.components.glance_client:GlanceClientRuntime
|
||||
uninstall: anvil.components.glance_client:GlanceClientUninstaller
|
||||
packages:
|
||||
- name: python-prettytable
|
||||
removable: true
|
||||
version: 0.5*
|
||||
horizon:
|
||||
action_classes:
|
||||
install: devstack.distros.fedora16:HorizonInstaller
|
||||
running: devstack.components.horizon:HorizonRuntime
|
||||
uninstall: devstack.components.horizon:HorizonUninstaller
|
||||
install: anvil.distros.fedora16:HorizonInstaller
|
||||
running: anvil.components.horizon:HorizonRuntime
|
||||
uninstall: anvil.components.horizon:HorizonUninstaller
|
||||
packages:
|
||||
- name: django-registration
|
||||
removable: true
|
||||
@ -282,9 +282,9 @@ components:
|
||||
version: 1.4
|
||||
keystone:
|
||||
action_classes:
|
||||
install: devstack.components.keystone:KeystoneInstaller
|
||||
running: devstack.components.keystone:KeystoneRuntime
|
||||
uninstall: devstack.components.keystone:KeystoneUninstaller
|
||||
install: anvil.components.keystone:KeystoneInstaller
|
||||
running: anvil.components.keystone:KeystoneRuntime
|
||||
uninstall: anvil.components.keystone:KeystoneUninstaller
|
||||
packages:
|
||||
- name: MySQL-python
|
||||
removable: true
|
||||
@ -345,9 +345,9 @@ components:
|
||||
version: 3.7*
|
||||
keystone-client:
|
||||
action_classes:
|
||||
install: devstack.components.keystone_client:KeyStoneClientInstaller
|
||||
running: devstack.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: devstack.components.keystone_client:KeyStoneClientUninstaller
|
||||
install: anvil.components.keystone_client:KeyStoneClientInstaller
|
||||
running: anvil.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: anvil.components.keystone_client:KeyStoneClientUninstaller
|
||||
packages:
|
||||
- name: python-prettytable
|
||||
removable: true
|
||||
@ -357,24 +357,24 @@ components:
|
||||
version: 1.5.0*
|
||||
melange:
|
||||
action_classes:
|
||||
install: devstack.components.melange:MelangeInstaller
|
||||
running: devstack.components.melange:MelangeRuntime
|
||||
uninstall: devstack.components.melange:MelangeUninstaller
|
||||
install: anvil.components.melange:MelangeInstaller
|
||||
running: anvil.components.melange:MelangeRuntime
|
||||
uninstall: anvil.components.melange:MelangeUninstaller
|
||||
packages: null
|
||||
no-vnc:
|
||||
action_classes:
|
||||
install: devstack.components.novnc:NoVNCInstaller
|
||||
running: devstack.components.novnc:NoVNCRuntime
|
||||
uninstall: devstack.components.novnc:NoVNCUninstaller
|
||||
install: anvil.components.novnc:NoVNCInstaller
|
||||
running: anvil.components.novnc:NoVNCRuntime
|
||||
uninstall: anvil.components.novnc:NoVNCUninstaller
|
||||
packages:
|
||||
- name: numpy
|
||||
removable: false
|
||||
version: 1.6*
|
||||
nova:
|
||||
action_classes:
|
||||
install: devstack.distros.fedora16:NovaInstaller
|
||||
running: devstack.components.nova:NovaRuntime
|
||||
uninstall: devstack.components.nova:NovaUninstaller
|
||||
install: anvil.distros.fedora16:NovaInstaller
|
||||
running: anvil.components.nova:NovaRuntime
|
||||
uninstall: anvil.components.nova:NovaUninstaller
|
||||
packages:
|
||||
- name: python-webob
|
||||
removable: true
|
||||
@ -548,18 +548,18 @@ components:
|
||||
version: 1.0*
|
||||
nova-client:
|
||||
action_classes:
|
||||
install: devstack.components.nova_client:NovaClientInstaller
|
||||
running: devstack.components.nova_client:NovaClientRuntime
|
||||
uninstall: devstack.components.nova_client:NovaClientUninstaller
|
||||
install: anvil.components.nova_client:NovaClientInstaller
|
||||
running: anvil.components.nova_client:NovaClientRuntime
|
||||
uninstall: anvil.components.nova_client:NovaClientUninstaller
|
||||
packages:
|
||||
- name: python-prettytable
|
||||
removable: true
|
||||
version: 0.5*
|
||||
quantum:
|
||||
action_classes:
|
||||
install: devstack.components.quantum:QuantumInstaller
|
||||
running: devstack.components.quantum:QuantumRuntime
|
||||
uninstall: devstack.components.quantum:QuantumUninstaller
|
||||
install: anvil.components.quantum:QuantumInstaller
|
||||
running: anvil.components.quantum:QuantumRuntime
|
||||
uninstall: anvil.components.quantum:QuantumUninstaller
|
||||
packages:
|
||||
- name: libxml2-python
|
||||
removable: false
|
||||
@ -603,18 +603,18 @@ components:
|
||||
version: 0.7.2
|
||||
quantum-client:
|
||||
action_classes:
|
||||
install: devstack.components.quantum_client:QuantumClientInstaller
|
||||
running: devstack.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: devstack.components.quantum_client:QuantumClientUninstaller
|
||||
install: anvil.components.quantum_client:QuantumClientInstaller
|
||||
running: anvil.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: anvil.components.quantum_client:QuantumClientUninstaller
|
||||
packages:
|
||||
- name: python-gflags
|
||||
removable: true
|
||||
version: 1.5*
|
||||
rabbit-mq:
|
||||
action_classes:
|
||||
install: devstack.components.rabbit:RabbitInstaller
|
||||
running: devstack.distros.fedora16:RabbitRuntime
|
||||
uninstall: devstack.components.rabbit:RabbitUninstaller
|
||||
install: anvil.components.rabbit:RabbitInstaller
|
||||
running: anvil.distros.fedora16:RabbitRuntime
|
||||
uninstall: anvil.components.rabbit:RabbitUninstaller
|
||||
packages:
|
||||
- name: rabbitmq-server
|
||||
pre-install:
|
||||
@ -633,9 +633,9 @@ components:
|
||||
version: 2.6*
|
||||
swift:
|
||||
action_classes:
|
||||
install: devstack.components.swift:SwiftInstaller
|
||||
running: devstack.components.swift:SwiftRuntime
|
||||
uninstall: devstack.components.swift:SwiftUninstaller
|
||||
install: anvil.components.swift:SwiftInstaller
|
||||
running: anvil.components.swift:SwiftRuntime
|
||||
uninstall: anvil.components.swift:SwiftUninstaller
|
||||
packages:
|
||||
- name: memcached
|
||||
removable: true
|
||||
@ -655,7 +655,7 @@ components:
|
||||
- name: python-paste-deploy
|
||||
removable: true
|
||||
version: 1.5*
|
||||
# TODO(mikeyp) resolve python-simplejson, listed in devstack
|
||||
# TODO(mikeyp) resolve python-simplejson,
|
||||
# is it really needed ?
|
||||
- name : python-simplejson
|
||||
version: 2.1.6*
|
||||
|
@ -2,7 +2,7 @@
|
||||
# RedHat Enterprise Linux 6
|
||||
name: rhel-6
|
||||
distro_pattern: redhat-6(.*)
|
||||
packager_name: devstack.packaging.yum:YumPackager
|
||||
packager_name: anvil.packaging.yum:YumPackager
|
||||
commands:
|
||||
apache:
|
||||
restart: service httpd restart
|
||||
@ -60,9 +60,9 @@ commands:
|
||||
components:
|
||||
db:
|
||||
action_classes:
|
||||
install: devstack.distros.rhel6:DBInstaller
|
||||
running: devstack.components.db:DBRuntime
|
||||
uninstall: devstack.components.db:DBUninstaller
|
||||
install: anvil.distros.rhel6:DBInstaller
|
||||
running: anvil.components.db:DBRuntime
|
||||
uninstall: anvil.components.db:DBUninstaller
|
||||
packages:
|
||||
- name: mysql
|
||||
removable: true
|
||||
@ -72,9 +72,9 @@ components:
|
||||
version: 5.1*
|
||||
general:
|
||||
action_classes:
|
||||
install: devstack.components.pkglist:Installer
|
||||
running: devstack.component:EmptyRuntime
|
||||
uninstall: devstack.components.pkglist:Uninstaller
|
||||
install: anvil.components.pkglist:Installer
|
||||
running: anvil.component:EmptyRuntime
|
||||
uninstall: anvil.components.pkglist:Uninstaller
|
||||
packages:
|
||||
- name: coreutils
|
||||
removable: false
|
||||
@ -166,9 +166,9 @@ components:
|
||||
version: 1.1.2
|
||||
glance:
|
||||
action_classes:
|
||||
install: devstack.components.glance:GlanceInstaller
|
||||
running: devstack.components.glance:GlanceRuntime
|
||||
uninstall: devstack.components.glance:GlanceUninstaller
|
||||
install: anvil.components.glance:GlanceInstaller
|
||||
running: anvil.components.glance:GlanceRuntime
|
||||
uninstall: anvil.components.glance:GlanceUninstaller
|
||||
packages:
|
||||
- name: MySQL-python
|
||||
removable: true
|
||||
@ -210,9 +210,9 @@ components:
|
||||
version: 0.2
|
||||
glance-client:
|
||||
action_classes:
|
||||
install: devstack.components.glance_client:GlanceClientInstaller
|
||||
running: devstack.components.glance_client:GlanceClientRuntime
|
||||
uninstall: devstack.components.glance_client:GlanceClientUninstaller
|
||||
install: anvil.components.glance_client:GlanceClientInstaller
|
||||
running: anvil.components.glance_client:GlanceClientRuntime
|
||||
uninstall: anvil.components.glance_client:GlanceClientUninstaller
|
||||
packages:
|
||||
- name: python-argparse
|
||||
removable: true
|
||||
@ -222,9 +222,9 @@ components:
|
||||
version: 0.5*
|
||||
horizon:
|
||||
action_classes:
|
||||
install: devstack.distros.rhel6:HorizonInstaller
|
||||
running: devstack.components.horizon:HorizonRuntime
|
||||
uninstall: devstack.components.horizon:HorizonUninstaller
|
||||
install: anvil.distros.rhel6:HorizonInstaller
|
||||
running: anvil.components.horizon:HorizonRuntime
|
||||
uninstall: anvil.components.horizon:HorizonUninstaller
|
||||
packages:
|
||||
- name: httpd
|
||||
removable: true
|
||||
@ -244,7 +244,7 @@ components:
|
||||
- name: python-webob1.0
|
||||
removable: true
|
||||
version: 1.0*
|
||||
packager_name: devstack.distros.rhel6:YumPackagerWithRelinks
|
||||
packager_name: anvil.distros.rhel6:YumPackagerWithRelinks
|
||||
packager_options:
|
||||
links:
|
||||
- source: /usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/
|
||||
@ -283,9 +283,9 @@ components:
|
||||
version: 0.7.2
|
||||
keystone:
|
||||
action_classes:
|
||||
install: devstack.components.keystone:KeystoneInstaller
|
||||
running: devstack.components.keystone:KeystoneRuntime
|
||||
uninstall: devstack.components.keystone:KeystoneUninstaller
|
||||
install: anvil.components.keystone:KeystoneInstaller
|
||||
running: anvil.components.keystone:KeystoneRuntime
|
||||
uninstall: anvil.components.keystone:KeystoneUninstaller
|
||||
packages:
|
||||
- name: MySQL-python
|
||||
removable: true
|
||||
@ -323,7 +323,7 @@ components:
|
||||
- name: python-webob1.0
|
||||
removable: true
|
||||
version: 1.0*
|
||||
packager_name: devstack.distros.rhel6:YumPackagerWithRelinks
|
||||
packager_name: anvil.distros.rhel6:YumPackagerWithRelinks
|
||||
packager_options:
|
||||
links:
|
||||
- source: /usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/
|
||||
@ -351,9 +351,9 @@ components:
|
||||
version: 0.7.2
|
||||
keystone-client:
|
||||
action_classes:
|
||||
install: devstack.components.keystone_client:KeyStoneClientInstaller
|
||||
running: devstack.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: devstack.components.keystone_client:KeyStoneClientUninstaller
|
||||
install: anvil.components.keystone_client:KeyStoneClientInstaller
|
||||
running: anvil.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: anvil.components.keystone_client:KeyStoneClientUninstaller
|
||||
packages:
|
||||
- name: python-argparse
|
||||
removable: true
|
||||
@ -363,27 +363,27 @@ components:
|
||||
version: 0.5*
|
||||
melange:
|
||||
action_classes:
|
||||
install: devstack.components.melange:MelangeInstaller
|
||||
running: devstack.components.melange:MelangeRuntime
|
||||
uninstall: devstack.components.melange:MelangeUninstaller
|
||||
install: anvil.components.melange:MelangeInstaller
|
||||
running: anvil.components.melange:MelangeRuntime
|
||||
uninstall: anvil.components.melange:MelangeUninstaller
|
||||
no-vnc:
|
||||
action_classes:
|
||||
install: devstack.components.novnc:NoVNCInstaller
|
||||
running: devstack.components.novnc:NoVNCRuntime
|
||||
uninstall: devstack.components.novnc:NoVNCUninstaller
|
||||
install: anvil.components.novnc:NoVNCInstaller
|
||||
running: anvil.components.novnc:NoVNCRuntime
|
||||
uninstall: anvil.components.novnc:NoVNCUninstaller
|
||||
pips:
|
||||
- name: numpy
|
||||
version: '1.5'
|
||||
nova:
|
||||
action_classes:
|
||||
install: devstack.distros.rhel6:NovaInstaller
|
||||
running: devstack.components.nova:NovaRuntime
|
||||
uninstall: devstack.components.nova:NovaUninstaller
|
||||
install: anvil.distros.rhel6:NovaInstaller
|
||||
running: anvil.components.nova:NovaRuntime
|
||||
uninstall: anvil.components.nova:NovaUninstaller
|
||||
packages:
|
||||
- name: python-webob1.0
|
||||
removable: true
|
||||
version: 1.0*
|
||||
packager_name: devstack.distros.rhel6:YumPackagerWithRelinks
|
||||
packager_name: anvil.distros.rhel6:YumPackagerWithRelinks
|
||||
packager_options:
|
||||
links:
|
||||
- source: /usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/
|
||||
@ -532,9 +532,9 @@ components:
|
||||
version: 1.0*
|
||||
nova-client:
|
||||
action_classes:
|
||||
install: devstack.components.nova_client:NovaClientInstaller
|
||||
running: devstack.components.nova_client:NovaClientRuntime
|
||||
uninstall: devstack.components.nova_client:NovaClientUninstaller
|
||||
install: anvil.components.nova_client:NovaClientInstaller
|
||||
running: anvil.components.nova_client:NovaClientRuntime
|
||||
uninstall: anvil.components.nova_client:NovaClientUninstaller
|
||||
packages:
|
||||
- name: python-argparse
|
||||
removable: true
|
||||
@ -544,9 +544,9 @@ components:
|
||||
version: 0.5*
|
||||
quantum:
|
||||
action_classes:
|
||||
install: devstack.components.quantum:QuantumInstaller
|
||||
running: devstack.components.quantum:QuantumRuntime
|
||||
uninstall: devstack.components.quantum:QuantumUninstaller
|
||||
install: anvil.components.quantum:QuantumInstaller
|
||||
running: anvil.components.quantum:QuantumRuntime
|
||||
uninstall: anvil.components.quantum:QuantumUninstaller
|
||||
packages:
|
||||
- name: libxml2-python
|
||||
removable: false
|
||||
@ -575,18 +575,18 @@ components:
|
||||
version: 0.7.2
|
||||
quantum-client:
|
||||
action_classes:
|
||||
install: devstack.components.quantum_client:QuantumClientInstaller
|
||||
running: devstack.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: devstack.components.quantum_client:QuantumClientUninstaller
|
||||
install: anvil.components.quantum_client:QuantumClientInstaller
|
||||
running: anvil.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: anvil.components.quantum_client:QuantumClientUninstaller
|
||||
packages:
|
||||
- name: python-gflags
|
||||
removable: true
|
||||
version: 1.4*
|
||||
rabbit-mq:
|
||||
action_classes:
|
||||
install: devstack.components.rabbit:RabbitInstaller
|
||||
running: devstack.distros.rhel6:RabbitRuntime
|
||||
uninstall: devstack.components.rabbit:RabbitUninstaller
|
||||
install: anvil.components.rabbit:RabbitInstaller
|
||||
running: anvil.distros.rhel6:RabbitRuntime
|
||||
uninstall: anvil.components.rabbit:RabbitUninstaller
|
||||
packages:
|
||||
- name: rabbitmq-server
|
||||
pre-install:
|
||||
@ -606,8 +606,8 @@ components:
|
||||
version: 2.6*
|
||||
swift:
|
||||
action_classes:
|
||||
install: devstack.components.swift:SwiftInstaller
|
||||
running: devstack.components.swift:SwiftRuntime
|
||||
uninstall: devstack.components.swift:SwiftUninstaller
|
||||
install: anvil.components.swift:SwiftInstaller
|
||||
running: anvil.components.swift:SwiftRuntime
|
||||
uninstall: anvil.components.swift:SwiftUninstaller
|
||||
...
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Ubuntu 11.10 (Oneiric)
|
||||
distro_pattern: "(Ubuntu)(.*?)(oneiric)"
|
||||
name: ubuntu-oneiric
|
||||
packager_name: devstack.packaging.apt:AptPackager
|
||||
packager_name: anvil.packaging.apt:AptPackager
|
||||
commands:
|
||||
apache:
|
||||
restart: service apache2 restart
|
||||
@ -65,9 +65,9 @@ commands:
|
||||
components:
|
||||
db:
|
||||
action_classes:
|
||||
install: devstack.distros.oneiric:DBInstaller
|
||||
running: devstack.components.db:DBRuntime
|
||||
uninstall: devstack.components.db:DBUninstaller
|
||||
install: anvil.distros.oneiric:DBInstaller
|
||||
running: anvil.components.db:DBRuntime
|
||||
uninstall: anvil.components.db:DBUninstaller
|
||||
packages:
|
||||
- name: mysql-client-5.1
|
||||
removable: true
|
||||
@ -92,9 +92,9 @@ components:
|
||||
version: 5.1*
|
||||
general:
|
||||
action_classes:
|
||||
install: devstack.components.pkglist:Installer
|
||||
running: devstack.component:EmptyRuntime
|
||||
uninstall: devstack.components.pkglist:Uninstaller
|
||||
install: anvil.components.pkglist:Installer
|
||||
running: anvil.component:EmptyRuntime
|
||||
uninstall: anvil.components.pkglist:Uninstaller
|
||||
packages:
|
||||
- name: curl
|
||||
removable: false
|
||||
@ -176,9 +176,9 @@ components:
|
||||
version: 0.8.0
|
||||
glance:
|
||||
action_classes:
|
||||
install: devstack.components.glance:GlanceInstaller
|
||||
running: devstack.components.glance:GlanceRuntime
|
||||
uninstall: devstack.components.glance:GlanceUninstaller
|
||||
install: anvil.components.glance:GlanceInstaller
|
||||
running: anvil.components.glance:GlanceRuntime
|
||||
uninstall: anvil.components.glance:GlanceUninstaller
|
||||
packages:
|
||||
- name: python-eventlet
|
||||
removable: true
|
||||
@ -220,9 +220,9 @@ components:
|
||||
version: 0.2
|
||||
glance-client:
|
||||
action_classes:
|
||||
install: devstack.components.glance_client:GlanceClientInstaller
|
||||
running: devstack.components.glance_client:GlanceClientRuntime
|
||||
uninstall: devstack.components.glance_client:GlanceClientUninstaller
|
||||
install: anvil.components.glance_client:GlanceClientInstaller
|
||||
running: anvil.components.glance_client:GlanceClientRuntime
|
||||
uninstall: anvil.components.glance_client:GlanceClientUninstaller
|
||||
packages:
|
||||
- name: python-argparse
|
||||
removable: true
|
||||
@ -232,9 +232,9 @@ components:
|
||||
version: 0.5*
|
||||
horizon:
|
||||
action_classes:
|
||||
install: devstack.components.horizon:HorizonInstaller
|
||||
running: devstack.components.horizon:HorizonRuntime
|
||||
uninstall: devstack.components.horizon:HorizonUninstaller
|
||||
install: anvil.components.horizon:HorizonInstaller
|
||||
running: anvil.components.horizon:HorizonRuntime
|
||||
uninstall: anvil.components.horizon:HorizonUninstaller
|
||||
packages:
|
||||
- name: apache2
|
||||
removable: true
|
||||
@ -304,9 +304,9 @@ components:
|
||||
version: 1.7.9.3
|
||||
keystone:
|
||||
action_classes:
|
||||
install: devstack.components.keystone:KeystoneInstaller
|
||||
running: devstack.components.keystone:KeystoneRuntime
|
||||
uninstall: devstack.components.keystone:KeystoneUninstaller
|
||||
install: anvil.components.keystone:KeystoneInstaller
|
||||
running: anvil.components.keystone:KeystoneRuntime
|
||||
uninstall: anvil.components.keystone:KeystoneUninstaller
|
||||
packages:
|
||||
- name: libldap2-dev
|
||||
removable: true
|
||||
@ -367,9 +367,9 @@ components:
|
||||
version: 1.5.3
|
||||
keystone-client:
|
||||
action_classes:
|
||||
install: devstack.components.keystone_client:KeyStoneClientInstaller
|
||||
running: devstack.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: devstack.components.keystone_client:KeyStoneClientUninstaller
|
||||
install: anvil.components.keystone_client:KeyStoneClientInstaller
|
||||
running: anvil.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: anvil.components.keystone_client:KeyStoneClientUninstaller
|
||||
packages:
|
||||
- name: python-argparse
|
||||
removable: true
|
||||
@ -379,9 +379,9 @@ components:
|
||||
version: 0.5*
|
||||
melange:
|
||||
action_classes:
|
||||
install: devstack.components.melange:MelangeInstaller
|
||||
running: devstack.components.melange:MelangeRuntime
|
||||
uninstall: devstack.components.melange:MelangeUninstaller
|
||||
install: anvil.components.melange:MelangeInstaller
|
||||
running: anvil.components.melange:MelangeRuntime
|
||||
uninstall: anvil.components.melange:MelangeUninstaller
|
||||
packages:
|
||||
- name: python-eventlet
|
||||
removable: true
|
||||
@ -409,18 +409,18 @@ components:
|
||||
version: 1.0*
|
||||
no-vnc:
|
||||
action_classes:
|
||||
install: devstack.components.novnc:NoVNCInstaller
|
||||
running: devstack.components.novnc:NoVNCRuntime
|
||||
uninstall: devstack.components.novnc:NoVNCUninstaller
|
||||
install: anvil.components.novnc:NoVNCInstaller
|
||||
running: anvil.components.novnc:NoVNCRuntime
|
||||
uninstall: anvil.components.novnc:NoVNCUninstaller
|
||||
packages:
|
||||
- name: python-numpy
|
||||
removable: true
|
||||
version: 1:1.5*
|
||||
nova:
|
||||
action_classes:
|
||||
install: devstack.components.nova:NovaInstaller
|
||||
running: devstack.components.nova:NovaRuntime
|
||||
uninstall: devstack.components.nova:NovaUninstaller
|
||||
install: anvil.components.nova:NovaInstaller
|
||||
running: anvil.components.nova:NovaRuntime
|
||||
uninstall: anvil.components.nova:NovaUninstaller
|
||||
packages:
|
||||
- name: python-webob
|
||||
removable: true
|
||||
@ -569,9 +569,9 @@ components:
|
||||
version: 1:1*
|
||||
nova-client:
|
||||
action_classes:
|
||||
install: devstack.components.nova_client:NovaClientInstaller
|
||||
running: devstack.components.nova_client:NovaClientRuntime
|
||||
uninstall: devstack.components.nova_client:NovaClientUninstaller
|
||||
install: anvil.components.nova_client:NovaClientInstaller
|
||||
running: anvil.components.nova_client:NovaClientRuntime
|
||||
uninstall: anvil.components.nova_client:NovaClientUninstaller
|
||||
packages:
|
||||
- name: python-argparse
|
||||
removable: true
|
||||
@ -581,9 +581,9 @@ components:
|
||||
version: 0.5*
|
||||
quantum:
|
||||
action_classes:
|
||||
install: devstack.components.quantum:QuantumInstaller
|
||||
running: devstack.components.quantum:QuantumRuntime
|
||||
uninstall: devstack.components.quantum:QuantumUninstaller
|
||||
install: anvil.components.quantum:QuantumInstaller
|
||||
running: anvil.components.quantum:QuantumRuntime
|
||||
uninstall: anvil.components.quantum:QuantumUninstaller
|
||||
packages:
|
||||
- name: python-eventlet
|
||||
removable: true
|
||||
@ -625,28 +625,28 @@ components:
|
||||
version: 0.6*
|
||||
quantum-client:
|
||||
action_classes:
|
||||
install: devstack.components.quantum_client:QuantumClientInstaller
|
||||
running: devstack.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: devstack.components.quantum_client:QuantumClientUninstaller
|
||||
install: anvil.components.quantum_client:QuantumClientInstaller
|
||||
running: anvil.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: anvil.components.quantum_client:QuantumClientUninstaller
|
||||
packages:
|
||||
- name: python-gflags
|
||||
removable: true
|
||||
version: 1.5*
|
||||
rabbit-mq:
|
||||
action_classes:
|
||||
install: devstack.components.rabbit:RabbitInstaller
|
||||
running: devstack.components.rabbit:RabbitRuntime
|
||||
uninstall: devstack.components.rabbit:RabbitUninstaller
|
||||
install: anvil.components.rabbit:RabbitInstaller
|
||||
running: anvil.components.rabbit:RabbitRuntime
|
||||
uninstall: anvil.components.rabbit:RabbitUninstaller
|
||||
packages:
|
||||
- name: rabbitmq-server
|
||||
removable: true
|
||||
version: 2.5*
|
||||
packager_name: devstack.distros.oneiric:RabbitPackager
|
||||
packager_name: anvil.distros.oneiric:RabbitPackager
|
||||
swift:
|
||||
action_classes:
|
||||
install: devstack.components.swift:SwiftInstaller
|
||||
running: devstack.components.swift:SwiftRuntime
|
||||
uninstall: devstack.components.swift:SwiftUninstaller
|
||||
install: anvil.components.swift:SwiftInstaller
|
||||
running: anvil.components.swift:SwiftRuntime
|
||||
uninstall: anvil.components.swift:SwiftUninstaller
|
||||
packages:
|
||||
- name: memcached
|
||||
removable: true
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Ubuntu 12.04 (Precise)
|
||||
distro_pattern: "(Ubuntu)(.*?)(precise)"
|
||||
name: ubuntu-precise
|
||||
packager_name: devstack.packaging.apt:AptPackager
|
||||
packager_name: anvil.packaging.apt:AptPackager
|
||||
commands:
|
||||
apache:
|
||||
restart: service apache2 restart
|
||||
@ -65,9 +65,9 @@ commands:
|
||||
components:
|
||||
db:
|
||||
action_classes:
|
||||
install: devstack.distros.oneiric:DBInstaller
|
||||
running: devstack.components.db:DBRuntime
|
||||
uninstall: devstack.components.db:DBUninstaller
|
||||
install: anvil.distros.oneiric:DBInstaller
|
||||
running: anvil.components.db:DBRuntime
|
||||
uninstall: anvil.components.db:DBUninstaller
|
||||
packages:
|
||||
- name: mysql-client-5.5
|
||||
removable: true
|
||||
@ -92,9 +92,9 @@ components:
|
||||
version: 5.5*
|
||||
general:
|
||||
action_classes:
|
||||
install: devstack.components.pkglist:Installer
|
||||
running: devstack.component:EmptyRuntime
|
||||
uninstall: devstack.components.pkglist:Uninstaller
|
||||
install: anvil.components.pkglist:Installer
|
||||
running: anvil.component:EmptyRuntime
|
||||
uninstall: anvil.components.pkglist:Uninstaller
|
||||
packages:
|
||||
- name: curl
|
||||
removable: false
|
||||
@ -176,9 +176,9 @@ components:
|
||||
version: 0.8.0
|
||||
glance:
|
||||
action_classes:
|
||||
install: devstack.components.glance:GlanceInstaller
|
||||
running: devstack.components.glance:GlanceRuntime
|
||||
uninstall: devstack.components.glance:GlanceUninstaller
|
||||
install: anvil.components.glance:GlanceInstaller
|
||||
running: anvil.components.glance:GlanceRuntime
|
||||
uninstall: anvil.components.glance:GlanceUninstaller
|
||||
packages:
|
||||
- name: python-eventlet
|
||||
removable: true
|
||||
@ -218,18 +218,18 @@ components:
|
||||
version: 0.2
|
||||
glance-client:
|
||||
action_classes:
|
||||
install: devstack.components.glance_client:GlanceClientInstaller
|
||||
running: devstack.components.glance_client:GlanceClientRuntime
|
||||
uninstall: devstack.components.glance_client:GlanceClientUninstaller
|
||||
install: anvil.components.glance_client:GlanceClientInstaller
|
||||
running: anvil.components.glance_client:GlanceClientRuntime
|
||||
uninstall: anvil.components.glance_client:GlanceClientUninstaller
|
||||
packages:
|
||||
- name: python-prettytable
|
||||
removable: true
|
||||
version: 0.5*
|
||||
horizon:
|
||||
action_classes:
|
||||
install: devstack.components.horizon:HorizonInstaller
|
||||
running: devstack.components.horizon:HorizonRuntime
|
||||
uninstall: devstack.components.horizon:HorizonUninstaller
|
||||
install: anvil.components.horizon:HorizonInstaller
|
||||
running: anvil.components.horizon:HorizonRuntime
|
||||
uninstall: anvil.components.horizon:HorizonUninstaller
|
||||
packages:
|
||||
- name: apache2
|
||||
removable: true
|
||||
@ -298,9 +298,9 @@ components:
|
||||
version: 1.0.8
|
||||
keystone:
|
||||
action_classes:
|
||||
install: devstack.components.keystone:KeystoneInstaller
|
||||
running: devstack.components.keystone:KeystoneRuntime
|
||||
uninstall: devstack.components.keystone:KeystoneUninstaller
|
||||
install: anvil.components.keystone:KeystoneInstaller
|
||||
running: anvil.components.keystone:KeystoneRuntime
|
||||
uninstall: anvil.components.keystone:KeystoneUninstaller
|
||||
packages:
|
||||
- name: libldap2-dev
|
||||
removable: true
|
||||
@ -358,18 +358,18 @@ components:
|
||||
version: 1.0.8
|
||||
keystone-client:
|
||||
action_classes:
|
||||
install: devstack.components.keystone_client:KeyStoneClientInstaller
|
||||
running: devstack.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: devstack.components.keystone_client:KeyStoneClientUninstaller
|
||||
install: anvil.components.keystone_client:KeyStoneClientInstaller
|
||||
running: anvil.components.keystone_client:KeyStoneClientRuntime
|
||||
uninstall: anvil.components.keystone_client:KeyStoneClientUninstaller
|
||||
packages:
|
||||
- name: python-prettytable
|
||||
removable: true
|
||||
version: 0.5*
|
||||
melange:
|
||||
action_classes:
|
||||
install: devstack.components.melange:MelangeInstaller
|
||||
running: devstack.components.melange:MelangeRuntime
|
||||
uninstall: devstack.components.melange:MelangeUninstaller
|
||||
install: anvil.components.melange:MelangeInstaller
|
||||
running: anvil.components.melange:MelangeRuntime
|
||||
uninstall: anvil.components.melange:MelangeUninstaller
|
||||
packages:
|
||||
- name: python-eventlet
|
||||
removable: true
|
||||
@ -397,18 +397,18 @@ components:
|
||||
version: 1.0.8
|
||||
no-vnc:
|
||||
action_classes:
|
||||
install: devstack.components.novnc:NoVNCInstaller
|
||||
running: devstack.components.novnc:NoVNCRuntime
|
||||
uninstall: devstack.components.novnc:NoVNCUninstaller
|
||||
install: anvil.components.novnc:NoVNCInstaller
|
||||
running: anvil.components.novnc:NoVNCRuntime
|
||||
uninstall: anvil.components.novnc:NoVNCUninstaller
|
||||
packages:
|
||||
- name: python-numpy
|
||||
removable: true
|
||||
version: 1:1.6*
|
||||
nova:
|
||||
action_classes:
|
||||
install: devstack.components.nova:NovaInstaller
|
||||
running: devstack.components.nova:NovaRuntime
|
||||
uninstall: devstack.components.nova:NovaUninstaller
|
||||
install: anvil.components.nova:NovaInstaller
|
||||
running: anvil.components.nova:NovaRuntime
|
||||
uninstall: anvil.components.nova:NovaUninstaller
|
||||
packages:
|
||||
- name: dnsmasq-base
|
||||
removable: true
|
||||
@ -554,18 +554,18 @@ components:
|
||||
version: 1:1*
|
||||
nova-client:
|
||||
action_classes:
|
||||
install: devstack.components.nova_client:NovaClientInstaller
|
||||
running: devstack.components.nova_client:NovaClientRuntime
|
||||
uninstall: devstack.components.nova_client:NovaClientUninstaller
|
||||
install: anvil.components.nova_client:NovaClientInstaller
|
||||
running: anvil.components.nova_client:NovaClientRuntime
|
||||
uninstall: anvil.components.nova_client:NovaClientUninstaller
|
||||
packages:
|
||||
- name: python-prettytable
|
||||
removable: true
|
||||
version: 0.5*
|
||||
quantum:
|
||||
action_classes:
|
||||
install: devstack.components.quantum:QuantumInstaller
|
||||
running: devstack.components.quantum:QuantumRuntime
|
||||
uninstall: devstack.components.quantum:QuantumUninstaller
|
||||
install: anvil.components.quantum:QuantumInstaller
|
||||
running: anvil.components.quantum:QuantumRuntime
|
||||
uninstall: anvil.components.quantum:QuantumUninstaller
|
||||
packages:
|
||||
- name: python-eventlet
|
||||
removable: true
|
||||
@ -607,28 +607,28 @@ components:
|
||||
version: 0.7*
|
||||
quantum-client:
|
||||
action_classes:
|
||||
install: devstack.components.quantum_client:QuantumClientInstaller
|
||||
running: devstack.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: devstack.components.quantum_client:QuantumClientUninstaller
|
||||
install: anvil.components.quantum_client:QuantumClientInstaller
|
||||
running: anvil.components.quantum_client:QuantumClientRuntime
|
||||
uninstall: anvil.components.quantum_client:QuantumClientUninstaller
|
||||
packages:
|
||||
- name: python-gflags
|
||||
removable: true
|
||||
version: 1.5*
|
||||
rabbit-mq:
|
||||
action_classes:
|
||||
install: devstack.components.rabbit:RabbitInstaller
|
||||
running: devstack.components.rabbit:RabbitRuntime
|
||||
uninstall: devstack.components.rabbit:RabbitUninstaller
|
||||
install: anvil.components.rabbit:RabbitInstaller
|
||||
running: anvil.components.rabbit:RabbitRuntime
|
||||
uninstall: anvil.components.rabbit:RabbitUninstaller
|
||||
packages:
|
||||
- name: rabbitmq-server
|
||||
removable: true
|
||||
version: 2.7*
|
||||
packager_name: devstack.distros.oneiric:RabbitPackager
|
||||
packager_name: anvil.distros.oneiric:RabbitPackager
|
||||
swift:
|
||||
action_classes:
|
||||
install: devstack.components.swift:SwiftInstaller
|
||||
running: devstack.components.swift:SwiftRuntime
|
||||
uninstall: devstack.components.swift:SwiftUninstaller
|
||||
install: anvil.components.swift:SwiftInstaller
|
||||
running: anvil.components.swift:SwiftRuntime
|
||||
uninstall: anvil.components.swift:SwiftUninstaller
|
||||
packages:
|
||||
- name: memcached
|
||||
removable: true
|
||||
|
@ -6,16 +6,15 @@ import sys, os
|
||||
sys.path.insert(0, os.path.abspath('../../'))
|
||||
sys.path.insert(0, os.path.abspath('../'))
|
||||
sys.path.insert(0, os.path.abspath('./'))
|
||||
sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
from anvil import version as anvil_version
|
||||
from anvil import settings as anvil_settings
|
||||
|
||||
# Supress warnings for docs that aren't used yet
|
||||
#unused_docs = [
|
||||
#]
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
@ -31,66 +30,32 @@ intersphinx_mapping = {
|
||||
'sphinx': ('http://sphinx.pocoo.org', None)
|
||||
}
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
#templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'DEVSTACKpy'
|
||||
project = anvil_settings.PROG_NAME.upper()
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
from devstack import version as devstack_version
|
||||
release = devstack_version.version_string()
|
||||
version = devstack_version.canonical_version_string()
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#language = None
|
||||
release = anvil_version.version_string()
|
||||
version = anvil_version.canonical_version_string()
|
||||
|
||||
# Set the default Pygments syntax
|
||||
highlight_language = 'python'
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
#pygments_style = 'monokai'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
|
||||
# -- Options for HTML output ---------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
@ -105,112 +70,6 @@ html_theme_options = {
|
||||
"headfont": "Arial, sans-serif"
|
||||
}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = ['_themes']
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = "DEVSTACKpy"
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = "FubuMVC"
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
html_logo = 'img/logo.png'
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = "favicon.ico"
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
#html_static_path = ['_static']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {
|
||||
#'**': ['sidebar_versions.html', 'sidebar_links.html'],
|
||||
#}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
#htmlhelp_basename = 'DEVSTACKpy-doc'
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
|
||||
# The paper size ('letter' or 'a4').
|
||||
#latex_paper_size = 'letter'
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#latex_font_size = '10pt'
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#latex_preamble = ''
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output --------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
html_logo = 'img/anvil-tiny.png'
|
||||
|
BIN
docs/source/img/anvil-tiny.png
Normal file
BIN
docs/source/img/anvil-tiny.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
BIN
docs/source/img/anvil.png
Normal file
BIN
docs/source/img/anvil.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
BIN
docs/source/img/anvil.xcf
Normal file
BIN
docs/source/img/anvil.xcf
Normal file
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 35 KiB |
@ -1,10 +1,10 @@
|
||||
.. _index:
|
||||
|
||||
=====================
|
||||
DEVSTACKpy Documentation
|
||||
ANVIL Documentation
|
||||
=====================
|
||||
|
||||
.. rubric:: Everything about DEVSTACKpy, a set of **python** scripts and utilities to quickly deploy an OpenStack cloud.
|
||||
.. rubric:: Everything about ANVIL, a set of **python** scripts and utilities to quickly deploy an OpenStack cloud.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
@ -6,7 +6,7 @@ Adding your own distribution
|
||||
Your mission...
|
||||
=============
|
||||
|
||||
So you have decided you want to venture into the bowels of DEVSTACKpy
|
||||
So you have decided you want to venture into the bowels of ANVIL
|
||||
and want to get support for your latest and greatest distribution. This
|
||||
wiki will hopefully make that adventure simpler by listing out the key
|
||||
places, files and configs that may have to be adjusted to get that to
|
||||
|
@ -6,7 +6,7 @@ Adding your own persona
|
||||
Your mission...
|
||||
=============
|
||||
|
||||
So you have decided you want to venture into the bowels of DEVSTACKpy
|
||||
So you have decided you want to venture into the bowels of ANVIL
|
||||
and want to alter what is installed/started/stopped, the order of what
|
||||
is installed/started/stopped, what subsystems are activated (or the
|
||||
component options). This wiki will hopefully make that adventure simpler
|
||||
|
@ -5,7 +5,7 @@ Design
|
||||
How it works
|
||||
------------
|
||||
|
||||
DEVSTACKpy is based along the following system design
|
||||
ANVIL is based along the following system design
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Having shared components/actions be shared (using object oriented
|
||||
@ -18,16 +18,16 @@ DEVSTACKpy is based along the following system design
|
||||
Directory structure is the following
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Parent classes located in *devstack/component.py*, it contains the
|
||||
- Parent classes located in *anvil/component.py*, it contains the
|
||||
root install/uninstall/start/stop classes
|
||||
- Subclasses in *devstack/components/*, it contains the individual
|
||||
- Subclasses in *anvil/components/*, it contains the individual
|
||||
install classes for each openstack component
|
||||
- Running modes implementations in *devstack/runners/* (ie fork,
|
||||
- Running modes implementations in *anvil/runners/* (ie fork,
|
||||
screen, upstart)
|
||||
- Packaging implementations in *devstack/packaging/*
|
||||
- Image uploading/registry/management (for glance) in *devstack/image/*
|
||||
- Shared classes and utils in *devstack/*
|
||||
- Main entry point/s in *devstack/progs/*
|
||||
- Packaging implementations in *anvil/packaging/*
|
||||
- Image uploading/registry/management (for glance) in *anvil/image/*
|
||||
- Shared classes and utils in *anvil/*
|
||||
- Main entry point/s in *anvil/progs/*
|
||||
- Other various tools in *tools/*
|
||||
- Configuration in *conf/* (see below)
|
||||
|
||||
@ -69,7 +69,7 @@ Functions
|
||||
'''''''''
|
||||
|
||||
For a install class the following functions are activated (in the
|
||||
following order by *devstack/progs/actions.py*):
|
||||
following order by *anvil/actions.py*):
|
||||
|
||||
::
|
||||
|
||||
|
@ -7,7 +7,7 @@ Bugs & Hugs & Code
|
||||
Community
|
||||
=========
|
||||
|
||||
DEVSTACKpy is an open-source tool released under the `apache version 2.0 license`_. It *depends* on its **community** to keep it alive.
|
||||
ANVIL is an open-source tool released under the `apache version 2.0 license`_. It *depends* on its **community** to keep it alive.
|
||||
|
||||
Source code
|
||||
===========
|
||||
@ -16,8 +16,7 @@ The source code is on github located at:
|
||||
|
||||
https://github.com/yahoo/Openstack-DevstackPy.
|
||||
|
||||
Feel free to fork it and contribute to it. You can also get a tarball or
|
||||
zip archive of the code.
|
||||
Feel free to fork it and contribute to it. You can also get a tarball or zip archive of the code.
|
||||
|
||||
Tags
|
||||
----
|
||||
@ -26,8 +25,8 @@ Stable *tags* can also be downloaded:
|
||||
|
||||
https://github.com/yahoo/Openstack-DevstackPy/tags.
|
||||
|
||||
**Note:** that for these tags you may have to edit *conf/stack.ini*
|
||||
to point to stable branch/es for the various *OpenStack* components.
|
||||
**Note:** that for these tags you may have to edit ``conf/anvil.ini``
|
||||
to point to tags other than ``master``
|
||||
|
||||
Bugs/Features
|
||||
=============
|
||||
@ -43,7 +42,7 @@ Feel free to hack but please try to follow the `hacking guidelines`_
|
||||
Discussions
|
||||
===========
|
||||
|
||||
Please either use `launchpad’s email system`_ or find us on ``irc.freenode.net`` in channel ``#openstack-devstackpy``
|
||||
Please either use `launchpad’s email system`_ or find us on ``irc.freenode.net`` in channel ``#openstack-anvil`` or in the main openstack dev channel ``#openstack-dev``. Feel free to bug us!
|
||||
|
||||
.. _apache version 2.0 license: https://github.com/yahoo/Openstack-DevstackPy/blob/master/LICENSE
|
||||
.. _github’s issue tracking system: https://github.com/yahoo/Openstack-Devstackpy/issues
|
||||
|
@ -4,11 +4,11 @@ Features
|
||||
|
||||
- Supports more than one distribution.
|
||||
|
||||
- Currently RHEL 6.2 (with `epel`_), Ubuntu 11.10, Fedora 16
|
||||
- Currently RHEL 6.2 (with `epel`_), Ubuntu 11.10, Fedora 16, Ubuntu 12.10 (seems to work)
|
||||
|
||||
- Supports dry-run mode (to see what *would* happen)
|
||||
- Supports varying installation *personas*
|
||||
- A single ``stack.ini`` file that shows common configuration
|
||||
- A single ``anvil.ini`` file that shows common configuration
|
||||
- Supports install/uninstall/starting/stopping of OpenStack components.
|
||||
|
||||
- In various styles (daemonizing via `forking`_, `screen`_, `upstart`_)
|
||||
|
@ -48,7 +48,7 @@ configure and get right!**
|
||||
|
||||
--------------
|
||||
|
||||
DEVSTACKpy will configure the network in a identical manner to version
|
||||
ANVIL will configure the network in a identical manner to version
|
||||
*1.0*. This means that the default network manager will be the
|
||||
*FlatDHCPManager*. The following settings are relevant in configuring
|
||||
your network.
|
||||
@ -155,17 +155,17 @@ Get git!
|
||||
Download
|
||||
--------
|
||||
|
||||
We’ll grab the latest version of DEVSTACKpy via git:
|
||||
We’ll grab the latest version of ANVIL via git:
|
||||
|
||||
::
|
||||
|
||||
$ git clone git://github.com/yahoo/Openstack-DevstackPy.git DevstackPy
|
||||
$ git clone git://github.com/yahoo/Openstack-DevstackPy.git anvil
|
||||
|
||||
Now setup the prerequisites needed to run DEVSTACKpy:
|
||||
Now setup the prerequisites needed to run:
|
||||
|
||||
::
|
||||
|
||||
$ cd DevstackPy && sudo ./prepare.sh
|
||||
$ cd anvil && sudo ./warmup.sh
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
@ -173,7 +173,7 @@ Configuration
|
||||
Apache configuration
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
We need to adjust the configuration of DEVSTACKpy to reflect the above
|
||||
We need to adjust the configuration of ANVIL to reflect the above
|
||||
user (``iff you created a user``).
|
||||
|
||||
Open ``conf/stack.ini``
|
||||
@ -211,14 +211,13 @@ Open ``conf/stack.ini``
|
||||
Network configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
We need to adjust the configuration of DEVSTACKpy to reflect our above
|
||||
network configuration.
|
||||
We need to adjust the configuration of ANVIL to reflect our above network configuration.
|
||||
|
||||
Please reference:
|
||||
|
||||
Please reference
|
||||
http://docs.openstack.org/diablo/openstack-compute/admin/content/configuring-networking-on-the-compute-node.html
|
||||
|
||||
If you need to adjust those variables the matching config variables in
|
||||
``stack.ini`` are:
|
||||
If you need to adjust those variables the matching config variables in ``anvil.ini`` are:
|
||||
|
||||
::
|
||||
|
||||
@ -254,11 +253,11 @@ Now install *OpenStacks* components by running the following:
|
||||
|
||||
::
|
||||
|
||||
sudo ./stack -a install -d ~/openstack
|
||||
sudo ./smithy -a install -d ~/openstack
|
||||
|
||||
You should see a set of distribution packages and/or pips being
|
||||
installed, python setups occurring and configuration files being written
|
||||
as DEVSTACKpy figures out how to install your desired components (if you
|
||||
as ANVIL figures out how to install your desired components (if you
|
||||
desire more informational output add a ``-v`` or a ``-vv`` to that
|
||||
command).
|
||||
|
||||
@ -270,7 +269,7 @@ Now that you have installed *OpenStack* you can now start your
|
||||
|
||||
::
|
||||
|
||||
sudo ./stack -a start -d ~/openstack
|
||||
sudo ./smithy -a start -d ~/openstack
|
||||
|
||||
If you desire more informational output add a ``-v`` or a ``-vv`` to
|
||||
that command.
|
||||
@ -295,7 +294,7 @@ If you see a login page and can access horizon then:
|
||||
Command line tools
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In your DEVSTACKpy directory:
|
||||
In your ANVIL directory:
|
||||
|
||||
::
|
||||
|
||||
@ -349,7 +348,7 @@ the following:
|
||||
|
||||
::
|
||||
|
||||
sudo ./stack -a stop -d ~/openstack
|
||||
sudo ./smithy -a stop -d ~/openstack
|
||||
|
||||
You should see a set of stop actions happening and ``stderr`` and
|
||||
``stdout`` and ``pid`` files being removed (if you desire more
|
||||
@ -376,7 +375,7 @@ can uninstall them by running the following:
|
||||
|
||||
::
|
||||
|
||||
sudo ./stack -a uninstall -d ~/openstack
|
||||
sudo ./smithy -a uninstall -d ~/openstack
|
||||
|
||||
You should see a set of packages, configuration and directories, being
|
||||
removed (if you desire more informational output add a ``-v`` or a
|
||||
|
@ -17,6 +17,7 @@ Goals
|
||||
they can productively contribute without having to understand every
|
||||
part of the system at once.
|
||||
- To make it easy to prototype cross-project features.
|
||||
- To have an installer that works!
|
||||
|
||||
|
||||
.. _OpenStack: http://openstack.org/
|
||||
|
@ -8,6 +8,8 @@ Ubuntu 11.10 (Oneiric Ocelot)
|
||||
|
||||
- Resetting/cleaning up the network on uninstall doesn’t seem to be
|
||||
*100%* correct
|
||||
|
||||
There is a script in ``tools/clear-net-ubuntu.sh`` that might help with this.
|
||||
|
||||
RHEL 6.2
|
||||
--------
|
||||
@ -17,12 +19,8 @@ RHEL 6.2
|
||||
code directly but the *numpy* dependency can’t be installed with the
|
||||
previous symlink. We are currently just using *pip* to fix this.
|
||||
- Fixing up the network on uninstall doesn’t seem to be 100% correct
|
||||
- I (josh) dont really like how we have to edit the *httpd.conf* to use
|
||||
the current sudo user. Without this though it doesn’t seem like
|
||||
*python-wsgi* can access the users libraries that are downloaded and
|
||||
other files can’t be accessed either. This could be solved by having
|
||||
a new user and group and doing what devstack v1.0 does (but this
|
||||
seems like overkill).
|
||||
|
||||
We might need a script like the ``tools/clear-net-ubuntu.sh`` to help in this situation.
|
||||
|
||||
Others
|
||||
------
|
||||
|
@ -4,25 +4,23 @@
|
||||
Questions and Answers
|
||||
===============
|
||||
|
||||
Can I use DEVSTACKpy for production?
|
||||
Can I use ANVIL for production?
|
||||
------------------------------------
|
||||
|
||||
**No.** We mean it. **Really.** DEVSTACKpy makes some implementation
|
||||
choices that are not appropriate for production deployments. *We warned
|
||||
you!* **No, no no no no no no no no no. No.**
|
||||
Up to u! Beware of the sea and the black waters!
|
||||
|
||||
How do I get program usage?
|
||||
---------------------------
|
||||
|
||||
::
|
||||
|
||||
$ ./stack --help
|
||||
$ ./smithy --help
|
||||
|
||||
How do I run a specific OpenStack milestone?
|
||||
--------------------------------------------
|
||||
|
||||
OpenStack milestones have tags set in the git repo. Set the appropriate
|
||||
setting in the **branch** variables in *conf/stack.ini*.
|
||||
setting in the **branch** variables in *conf/anvil.ini*.
|
||||
|
||||
**Note:** Swift is on its own release schedule so pick a tag in the
|
||||
Swift repo that is just before the milestone release.
|
||||
@ -49,7 +47,7 @@ OMG the images take forever to download!
|
||||
Sometimes the images that will be uploaded to glance take a long time to
|
||||
download and extract and upload.
|
||||
|
||||
To adjust this edit *conf/stack.ini* and change the following:
|
||||
To adjust this edit *conf/anvil.ini* and change the following:
|
||||
|
||||
::
|
||||
|
||||
|
@ -8,21 +8,21 @@ Usage Examples
|
||||
Commands
|
||||
--------
|
||||
|
||||
To get the ``stack`` help display try:
|
||||
To get the help display try:
|
||||
|
||||
::
|
||||
|
||||
$ ./stack --help
|
||||
$ ./smithy --help
|
||||
|
||||
To examine what installing the basics (nova, horizon, glance, keystone…)
|
||||
will do (with installation in ``~/openstack``) try:
|
||||
|
||||
::
|
||||
|
||||
$ sudo ./stack -d ~/openstack -a install --dryrun
|
||||
$ sudo ./smithy -d ~/openstack -a install --dryrun
|
||||
|
||||
With more information/debugging/auditing output try:
|
||||
|
||||
::
|
||||
|
||||
$ sudo ./stack -d ~/openstack -a install -vv
|
||||
$ sudo ./smithy -d ~/openstack -a install -vv
|
||||
|
@ -2,10 +2,10 @@
|
||||
Important!
|
||||
==========
|
||||
|
||||
**Warning:** Be sure to carefully read ``stack`` and any other scripts
|
||||
**Warning:** Be sure to carefully read ``smithy`` and any other scripts
|
||||
you execute before you run them, as they install software and may alter
|
||||
your networking configuration. We strongly recommend that you run
|
||||
``stack`` in a clean and disposable virtual machine when you are first
|
||||
``smithy`` in a clean and disposable virtual machine when you are first
|
||||
getting started.
|
||||
|
||||
.. _epel: http://fedoraproject.org/wiki/EPEL
|
||||
|
95
run_tests.py
95
run_tests.py
@ -1,95 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
To run all tests
|
||||
python run_tests.py
|
||||
|
||||
To run a single test:
|
||||
python run_tests.py
|
||||
functional.test_extensions:TestExtensions.test_extensions_json
|
||||
|
||||
To run a single test module:
|
||||
python run_tests.py functional.test_extensions
|
||||
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(format='%(levelname)s: %(message)s')
|
||||
ROOT_LOGGER = logging.getLogger("")
|
||||
ROOT_LOGGER.setLevel(logging.WARNING)
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
# TODO!
|
||||
TESTS = []
|
||||
|
||||
|
||||
def parse_suite_filter():
|
||||
""" Parses out -O or --only argument and returns the value after it as the
|
||||
filter. Removes it from sys.argv in the process. """
|
||||
|
||||
suitefilter = None
|
||||
if '-O' in sys.argv or '--only' in sys.argv:
|
||||
for i in range(len(sys.argv)):
|
||||
if sys.argv[i] in ['-O', '--only']:
|
||||
if len(sys.argv) > i + 1:
|
||||
# Remove -O/--only settings from sys.argv
|
||||
sys.argv.pop(i)
|
||||
suitefilter = sys.argv.pop(i)
|
||||
break
|
||||
return suitefilter
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
SUITE_FILTER = parse_suite_filter()
|
||||
if SUITE_FILTER:
|
||||
TESTS = [t for t in TESTS if SUITE_FILTER in str(t)]
|
||||
if not TESTS:
|
||||
print 'No test configuration by the name %s found' % SUITE_FILTER
|
||||
sys.exit(2)
|
||||
#Run test suites
|
||||
if len(TESTS) > 1:
|
||||
CWD_DIRECTORY = os.getcwd()
|
||||
for test_num, test_cls in enumerate(TESTS):
|
||||
try:
|
||||
result = test_cls().run()
|
||||
if result:
|
||||
LOGGER.error("Run returned %s for test %s. Exiting" %
|
||||
(result, test_cls.__name__))
|
||||
sys.exit(result)
|
||||
except Exception, e:
|
||||
print "Error:", e
|
||||
LOGGER.exception(e)
|
||||
sys.exit(1)
|
||||
# Collect coverage from each run. They'll be combined later in .sh
|
||||
if '--with-coverage' in sys.argv:
|
||||
coverage_file = os.path.join(CWD_DIRECTORY, ".coverage")
|
||||
target_file = "%s.%s" % (coverage_file, test_cls.__name__)
|
||||
try:
|
||||
if os.path.exists(target_file):
|
||||
LOGGER.info("deleting %s" % target_file)
|
||||
os.unlink(target_file)
|
||||
if os.path.exists(coverage_file):
|
||||
LOGGER.info("Saving %s to %s" % (coverage_file,
|
||||
target_file))
|
||||
os.rename(coverage_file, target_file)
|
||||
except Exception, e:
|
||||
LOGGER.exception(e)
|
||||
print ("Failed to move coverage file while running test"
|
||||
": %s. Error reported was: %s" %
|
||||
(test_cls.__name__, e))
|
||||
sys.exit(1)
|
||||
else:
|
||||
for test_num, test_cls in enumerate(TESTS):
|
||||
try:
|
||||
result = test_cls().run()
|
||||
if result:
|
||||
LOGGER.error("Run returned %s for test %s. Exiting" %
|
||||
(result, test_cls.__name__))
|
||||
sys.exit(result)
|
||||
except Exception, e:
|
||||
print "Error:", e
|
||||
LOGGER.exception(e)
|
||||
sys.exit(1)
|
212
run_tests.sh
212
run_tests.sh
@ -1,212 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
function usage {
|
||||
echo "Usage: $0 [OPTION]..."
|
||||
echo "Run Devstacks's test suite(s)"
|
||||
echo ""
|
||||
echo " -O, --only test_suite Only run the specified test suite. Valid values are:"
|
||||
echo " Note: by default, run_tests will run all suites."
|
||||
echo " -V, --virtual-env Always use virtualenv. Install automatically if not present."
|
||||
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local environment."
|
||||
echo " -x, --stop Stop running tests after the first error or failure."
|
||||
echo " -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added."
|
||||
echo " Note: you might need to 'sudo' this since it pip installs into the virtual environment."
|
||||
echo " -P, --skip-pep8 Just run tests; skip pep8 check."
|
||||
echo " -p, --pep8 Just run pep8."
|
||||
echo " -l, --pylint Just run pylint."
|
||||
echo " -y, --yaml Just validate YAML."
|
||||
echo " -c, --with-coverage Generate coverage report."
|
||||
echo " -h, --help Print this usage message."
|
||||
echo " --hide-elapsed Don't print the elapsed time for each test along with slow test list."
|
||||
echo " --verbose Print additional logging."
|
||||
echo ""
|
||||
echo "Note: with no options specified, the script will try to run the tests in a virtual environment,"
|
||||
echo " If no virtualenv is found, the script will ask if you would like to create one. If you "
|
||||
echo " prefer to run tests NOT in a virtual environment, simply pass the -N option."
|
||||
echo ""
|
||||
echo "Note: with no options specified, the script will run the pep8 check after completing the tests."
|
||||
echo " If you prefer not to run pep8, simply pass the -P option."
|
||||
exit
|
||||
}
|
||||
|
||||
only_run_flag=0
|
||||
only_run=""
|
||||
function process_option {
|
||||
if [ $only_run_flag -eq 1 ]; then
|
||||
only_run_flag=0
|
||||
only_run=$1
|
||||
return
|
||||
else
|
||||
case "$1" in
|
||||
-h|--help) usage;;
|
||||
-V|--virtual-env) always_venv=1; never_venv=0;;
|
||||
-N|--no-virtual-env) always_venv=0; never_venv=1;;
|
||||
-O|--only) only_run_flag=1;;
|
||||
-f|--force) force=1;;
|
||||
-P|--skip-pep8) skip_pep8=1;;
|
||||
-p|--pep8) just_pep8=1;;
|
||||
-l|--pylint) just_pylint=1;;
|
||||
-y|--yaml) just_yaml=1;;
|
||||
-c|--with-coverage) coverage=1;;
|
||||
-*) addlopts="$addlopts $1";;
|
||||
*) addlargs="$addlargs $1"
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
venv=.venv
|
||||
with_venv=tools/with_venv.sh
|
||||
always_venv=0
|
||||
never_venv=0
|
||||
force=0
|
||||
addlargs=
|
||||
addlopts=
|
||||
wrapper=""
|
||||
just_pep8=0
|
||||
skip_pep8=0
|
||||
just_pylint=0
|
||||
just_yaml=0
|
||||
coverage=0
|
||||
pylintrc_fn="pylintrc"
|
||||
|
||||
for arg in "$@"; do
|
||||
process_option $arg
|
||||
done
|
||||
|
||||
# If enabled, tell nose/unittest to collect coverage data
|
||||
if [ $coverage -eq 1 ]; then
|
||||
addlopts="$addlopts --with-coverage --cover-package=devstack"
|
||||
fi
|
||||
|
||||
if [ "x$only_run" = "x" ]; then
|
||||
RUNTESTS="python run_tests.py$addlopts$addlargs"
|
||||
else
|
||||
RUNTESTS="python run_tests.py$addlopts$addlargs -O $only_run"
|
||||
fi
|
||||
|
||||
if [ $never_venv -eq 0 ]
|
||||
then
|
||||
# Remove the virtual environment if --force used
|
||||
if [ $force -eq 1 ]; then
|
||||
echo "Cleaning virtualenv..."
|
||||
rm -rf ${venv}
|
||||
fi
|
||||
if [ -e ${venv} ]; then
|
||||
wrapper="${with_venv}"
|
||||
else
|
||||
if [ $always_venv -eq 1 ]; then
|
||||
# Automatically install the virtualenv
|
||||
python tools/install_venv.py
|
||||
wrapper="${with_venv}"
|
||||
else
|
||||
echo -e "No virtual environment found...create one? (Y/n) \c"
|
||||
read use_ve
|
||||
if [ "x$use_ve" = "xY" -o "x$use_ve" = "x" -o "x$use_ve" = "xy" ]; then
|
||||
# Install the virtualenv and run the test suite in it
|
||||
python tools/install_venv.py
|
||||
wrapper=${with_venv}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
function run_tests {
|
||||
OFN="run_tests.log"
|
||||
# Just run the test suites in current environment
|
||||
${wrapper} $RUNTESTS 2>$OFN | tee $OFN
|
||||
# If we get some short import error right away, print the error log directly
|
||||
RESULT=$?
|
||||
echo "Check '$OFN' for a full error report."
|
||||
if [ "$RESULT" -ne "0" ];
|
||||
then
|
||||
ERRSIZE=`wc -l $OFN | awk '{print \$1}'`
|
||||
if [ "$ERRSIZE" -lt "40" ];
|
||||
then
|
||||
cat $OFN
|
||||
fi
|
||||
fi
|
||||
return $RESULT
|
||||
}
|
||||
|
||||
function run_pep8 {
|
||||
echo "Running pep8 ..."
|
||||
SRC_FILES=`find devstack -type f | grep "py\$"`
|
||||
SRC_FILES+=" stack run_tests.py"
|
||||
PEP_IGNORES="E202,E501"
|
||||
TEE_FN="pep8.log"
|
||||
PEP8_OPTS="--ignore=$PEP_IGNORES --repeat"
|
||||
pep8 ${PEP8_OPTS} ${SRC_FILES} 2>&1 | tee $TEE_FN
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Sorry, cannot run pep8 ..."
|
||||
exit 1
|
||||
else
|
||||
echo "Successfully ran pep8 ..."
|
||||
echo "Check '$TEE_FN' for a full report."
|
||||
fi
|
||||
}
|
||||
|
||||
function run_pylint {
|
||||
echo "Running pylint ..."
|
||||
PYLINT_OPTIONS="--rcfile=$pylintrc_fn --output-format=parseable"
|
||||
PYLINT_INCLUDE=`find devstack -type f | grep "py\$"`
|
||||
PYLINT_INCLUDE+=" stack run_tests.py"
|
||||
TEE_FN="pylint.log"
|
||||
echo "Pylint messages count: "
|
||||
pylint ${PYLINT_OPTIONS} ${PYLINT_INCLUDE} 2>&1 | tee $TEE_FN | grep 'devstack/' | wc -l
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Sorry, cannot run pylint ..."
|
||||
exit 1
|
||||
else
|
||||
echo "Successfully ran pylint ..."
|
||||
echo "Check '$TEE_FN' for a full report."
|
||||
fi
|
||||
}
|
||||
|
||||
function validate_yaml {
|
||||
echo "Validating YAML files..."
|
||||
for f in `find conf/ -name *.yaml -type f`; do
|
||||
echo "Checking yaml file: $f"
|
||||
tools/validate_yaml.py $f
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Delete old coverage data from previous runs
|
||||
if [ $coverage -eq 1 ]; then
|
||||
${wrapper} coverage erase
|
||||
fi
|
||||
|
||||
if [ $just_pep8 -eq 1 ]; then
|
||||
run_pep8
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ $just_pylint -eq 1 ]; then
|
||||
run_pylint
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ $just_yaml -eq 1 ]; then
|
||||
validate_yaml
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
echo "Running tests..."
|
||||
run_tests
|
||||
|
||||
if [ $skip_pep8 -eq 0 ]; then
|
||||
# Run the pep8 check
|
||||
run_pep8
|
||||
fi
|
||||
|
||||
# Since we run multiple test suites, we need to execute 'coverage combine'
|
||||
if [ $coverage -eq 1 ]; then
|
||||
echo "Generating coverage report in covhtml/"
|
||||
${wrapper} coverage combine
|
||||
${wrapper} coverage html -d covhtml -i
|
||||
${wrapper} coverage report --omit='/usr*,devstack/test*,.,setup.py,*egg*,/Library*,*.xml,*.tpl'
|
||||
fi
|
||||
|
@ -20,21 +20,21 @@ import sys
|
||||
import time
|
||||
import traceback as tb
|
||||
|
||||
from devstack import actions
|
||||
from devstack import cfg
|
||||
from devstack import cfg_helpers
|
||||
from devstack import colorizer
|
||||
from devstack import date
|
||||
from devstack import distro
|
||||
from devstack import env
|
||||
from devstack import env_rc
|
||||
from devstack import log as logging
|
||||
from devstack import opts
|
||||
from devstack import passwords
|
||||
from devstack import persona
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import actions
|
||||
from anvil import cfg
|
||||
from anvil import cfg_helpers
|
||||
from anvil import colorizer
|
||||
from anvil import date
|
||||
from anvil import distro
|
||||
from anvil import env
|
||||
from anvil import env_rc
|
||||
from anvil import log as logging
|
||||
from anvil import opts
|
||||
from anvil import passwords
|
||||
from anvil import persona
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
@ -59,7 +59,7 @@ RC_FILES = [
|
||||
|
||||
def load_rc_files():
|
||||
"""
|
||||
Loads the desired set of rc files that stack will use to
|
||||
Loads the desired set of rc files that smithy will use to
|
||||
pre-populate its environment settings from.
|
||||
|
||||
Arguments: N/A
|
||||
@ -108,7 +108,7 @@ def setup_root(root_dir):
|
||||
|
||||
def find_config(args):
|
||||
"""
|
||||
Finds the stack configuration file.
|
||||
Finds the anvil configuration file.
|
||||
|
||||
Arguments:
|
||||
args: command line args
|
||||
@ -116,13 +116,12 @@ def find_config(args):
|
||||
"""
|
||||
|
||||
locs = []
|
||||
locs.append(settings.STACK_CONFIG_LOCATION)
|
||||
locs.append(sh.joinpths("/etc", "devstack", "stack.ini"))
|
||||
locs.append(sh.joinpths(settings.STACK_CONFIG_DIR, "stack.ini"))
|
||||
for path in locs:
|
||||
LOG.debug("Looking for devstack configuration in: %r", path)
|
||||
locs.append(settings.CONFIG_LOCATION)
|
||||
locs.append(sh.joinpths("/etc", settings.PROG_NAME, settings.CONFIG_NAME))
|
||||
for path in set(locs):
|
||||
LOG.debug("Looking for anvil configuration in: %r", path)
|
||||
if sh.isfile(path):
|
||||
LOG.debug("Found devstack configuration in: %r", path)
|
||||
LOG.debug("Found anvil configuration in: %r", path)
|
||||
return path
|
||||
return None
|
||||
|
||||
@ -166,8 +165,7 @@ def establish_passwords(config, args):
|
||||
|
||||
def run(args):
|
||||
"""
|
||||
Starts the execution of devstackpy after
|
||||
args have been parsed and logging has been setup.
|
||||
Starts the execution after args have been parsed and logging has been setup.
|
||||
|
||||
Arguments: N/A
|
||||
Returns: True for success to run, False for failure to start
|
||||
@ -252,7 +250,7 @@ def construct_log_level(verbosity_level, dry_run=False):
|
||||
|
||||
def main():
|
||||
"""
|
||||
Starts the execution of devstack py without
|
||||
Starts the execution of without
|
||||
injecting variables into the global namespace. Ensures that
|
||||
logging is setup and that sudo access is available and in-use.
|
||||
|
57
tests/checks.sh
Executable file
57
tests/checks.sh
Executable file
@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
function usage {
|
||||
echo "Usage: $0 [OPTION]..."
|
||||
echo "Run anvils checking suite(s)"
|
||||
echo ""
|
||||
exit
|
||||
}
|
||||
|
||||
function run_pep8 {
|
||||
echo "Running pep8 ..."
|
||||
SRC_FILES=`find anvil -type f | grep "py\$"`
|
||||
SRC_FILES+=" smithy"
|
||||
PEP_IGNORES="E202,E501"
|
||||
TEE_FN="pep8.log"
|
||||
PEP8_OPTS="--ignore=$PEP_IGNORES --repeat"
|
||||
pep8 ${PEP8_OPTS} ${SRC_FILES} 2>&1 | tee $TEE_FN
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Sorry, cannot run pep8 ..."
|
||||
exit 1
|
||||
else
|
||||
echo "Successfully ran pep8 ..."
|
||||
echo "Check '$TEE_FN' for a full report."
|
||||
fi
|
||||
}
|
||||
|
||||
function run_pylint {
|
||||
echo "Running pylint ..."
|
||||
PYLINT_OPTIONS="--rcfile=tests/pylintrc --output-format=parseable"
|
||||
PYLINT_INCLUDE=`find anvil -type f | grep "py\$"`
|
||||
PYLINT_INCLUDE+=" smithy"
|
||||
TEE_FN="pylint.log"
|
||||
echo "Pylint messages count: "
|
||||
pylint ${PYLINT_OPTIONS} ${PYLINT_INCLUDE} 2>&1 | tee $TEE_FN | grep 'anvil/' | wc -l
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Sorry, cannot run pylint ..."
|
||||
exit 1
|
||||
else
|
||||
echo "Successfully ran pylint ..."
|
||||
echo "Check '$TEE_FN' for a full report."
|
||||
fi
|
||||
}
|
||||
|
||||
function validate_yaml {
|
||||
echo "Validating YAML files..."
|
||||
for f in `find conf/ -name *.yaml -type f`; do
|
||||
echo "Checking yaml file: $f"
|
||||
tools/validate-yaml.py $f
|
||||
done
|
||||
}
|
||||
|
||||
run_pep8
|
||||
run_pylint
|
||||
validate_yaml
|
||||
|
@ -1,49 +0,0 @@
|
||||
|
||||
from ConfigParser import ConfigParser
|
||||
|
||||
import mox
|
||||
|
||||
from devstack.components import db
|
||||
from devstack import passwords
|
||||
|
||||
def test_fetch_dbdsn_full():
|
||||
cfg = ConfigParser()
|
||||
cfg.add_section('db')
|
||||
cfg.set('db', 'sql_user', 'sql_user')
|
||||
cfg.set('db', 'sql_host', 'sql_host')
|
||||
cfg.set('db', 'port', '55')
|
||||
cfg.set('db', 'type', 'mysql')
|
||||
cfg.add_section('passwords')
|
||||
cfg.set('passwords', 'sql', 'password')
|
||||
|
||||
dsn = db.fetch_dbdsn(cfg, passwords.PasswordGenerator(cfg, False))
|
||||
assert dsn == 'mysql://sql_user:password@sql_host:55/'
|
||||
|
||||
|
||||
def test_fetch_dbdsn_no_user():
|
||||
cfg = ConfigParser()
|
||||
cfg.add_section('db')
|
||||
cfg.set('db', 'sql_user', '')
|
||||
cfg.set('db', 'sql_host', 'sql_host')
|
||||
cfg.set('db', 'port', '55')
|
||||
cfg.set('db', 'type', 'mysql')
|
||||
cfg.add_section('passwords')
|
||||
cfg.set('passwords', 'sql', 'password')
|
||||
|
||||
dsn = db.fetch_dbdsn(cfg, passwords.PasswordGenerator(cfg, False))
|
||||
assert dsn == 'mysql://:password@sql_host:55/'
|
||||
|
||||
|
||||
def test_fetch_dbdsn_dbname():
|
||||
cfg = ConfigParser()
|
||||
cfg.add_section('db')
|
||||
cfg.set('db', 'sql_user', 'sql_user')
|
||||
cfg.set('db', 'sql_host', 'sql_host')
|
||||
cfg.set('db', 'port', '55')
|
||||
cfg.set('db', 'type', 'mysql')
|
||||
cfg.add_section('passwords')
|
||||
cfg.set('passwords', 'sql', 'password')
|
||||
|
||||
pw_gen = passwords.PasswordGenerator(cfg, False)
|
||||
dsn = db.fetch_dbdsn(cfg, pw_gen, 'dbname')
|
||||
assert dsn == 'mysql://sql_user:password@sql_host:55/dbname'
|
@ -1,14 +0,0 @@
|
||||
|
||||
from devstack import distro
|
||||
|
||||
|
||||
def test_component_dependencies():
|
||||
d = distro.Distro('fake', 'ignore', 'apt', {},
|
||||
{'a': {'dependencies': ['b'],
|
||||
},
|
||||
'b': {},
|
||||
})
|
||||
actual = d.resolve_component_dependencies(['a'])
|
||||
assert actual == {'a': set(['b']),
|
||||
'b': set(),
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
|
||||
from devstack import importer
|
||||
from devstack import distro
|
||||
|
||||
|
||||
def test_function():
|
||||
f = importer.import_entry_point('devstack.importer:import_entry_point')
|
||||
assert f == importer.import_entry_point
|
||||
|
||||
|
||||
def test_class():
|
||||
c = importer.import_entry_point('devstack.distro:Distro')
|
||||
assert c == distro.Distro
|
@ -1,10 +0,0 @@
|
||||
|
||||
from devstack import passwords
|
||||
|
||||
|
||||
def test_generate_random():
|
||||
def check_one(i):
|
||||
p = passwords.generate_random(i)
|
||||
assert len(p) == i
|
||||
for i in range(1, 9):
|
||||
yield check_one, i
|
@ -1,132 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# Copyright 2010 United States Government as represented by the
|
||||
# Administrator of the National Aeronautics and Space Administration.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Copyright 2010 OpenStack LLC.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""
|
||||
Installation script for DevstackPy's development virtualenv
|
||||
"""
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
||||
VENV = os.path.join(ROOT, '.venv')
|
||||
PIP_REQUIRES = os.path.join(ROOT, 'tools', 'pip-requires')
|
||||
|
||||
|
||||
def die(message, *args):
|
||||
print >> sys.stderr, message % args
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def run_command(cmd, redirect_output=True, check_exit_code=True):
|
||||
"""
|
||||
Runs a command in an out-of-process shell, returning the
|
||||
output of that command. Working directory is ROOT.
|
||||
"""
|
||||
if redirect_output:
|
||||
stdout = subprocess.PIPE
|
||||
else:
|
||||
stdout = None
|
||||
|
||||
proc = subprocess.Popen(cmd, cwd=ROOT, stdout=stdout)
|
||||
output = proc.communicate()[0]
|
||||
if check_exit_code and proc.returncode != 0:
|
||||
die('Command "%s" failed.\n%s', ' '.join(cmd), output)
|
||||
return output
|
||||
|
||||
|
||||
HAS_EASY_INSTALL = bool(run_command(['which', 'easy_install'],
|
||||
check_exit_code=False).strip())
|
||||
HAS_VIRTUALENV = bool(run_command(['which', 'virtualenv'],
|
||||
check_exit_code=False).strip())
|
||||
|
||||
|
||||
def check_dependencies():
|
||||
"""Make sure virtualenv is in the path."""
|
||||
|
||||
if not HAS_VIRTUALENV:
|
||||
print 'not found.'
|
||||
# Try installing it via easy_install...
|
||||
if HAS_EASY_INSTALL:
|
||||
print 'Installing virtualenv via easy_install...',
|
||||
if not run_command(['which', 'easy_install']):
|
||||
die('ERROR: virtualenv not found.\n\n'
|
||||
'DevstackPy development requires virtualenv, please install'
|
||||
' it using your favorite package management tool')
|
||||
print 'done.'
|
||||
print 'done.'
|
||||
|
||||
|
||||
def create_virtualenv(venv=VENV):
|
||||
"""
|
||||
Creates the virtual environment and installs PIP only into the
|
||||
virtual environment
|
||||
"""
|
||||
print 'Creating venv...',
|
||||
run_command(['virtualenv', '-q', '--no-site-packages', VENV])
|
||||
print 'done.'
|
||||
print 'Installing pip in virtualenv...',
|
||||
if not run_command(['tools/with_venv.sh', 'easy_install',
|
||||
'pip>1.0']).strip():
|
||||
die("Failed to install pip.")
|
||||
print 'done.'
|
||||
|
||||
|
||||
def install_dependencies(venv=VENV):
|
||||
print 'Installing dependencies with pip (this can take a while)...'
|
||||
|
||||
# Install greenlet by hand - just listing it in the requires file does not
|
||||
# get it in stalled in the right order
|
||||
venv_tool = 'tools/with_venv.sh'
|
||||
run_command([venv_tool, 'pip', 'install', '-E', venv, '-r', PIP_REQUIRES],
|
||||
redirect_output=False)
|
||||
|
||||
|
||||
def print_help():
|
||||
help = """
|
||||
Devstack development environment setup is complete.
|
||||
|
||||
Devstack development uses virtualenv to track and manage Python dependencies
|
||||
while in development and testing.
|
||||
|
||||
To activate the Devstack virtualenv for the extent of your current shell
|
||||
session you can run:
|
||||
|
||||
$ source .venv/bin/activate
|
||||
|
||||
Or, if you prefer, you can run commands in the virtualenv on a case by case
|
||||
basis by running:
|
||||
|
||||
$ tools/with_venv.sh <your command>
|
||||
|
||||
"""
|
||||
print help
|
||||
|
||||
|
||||
def main(argv):
|
||||
check_dependencies()
|
||||
create_virtualenv()
|
||||
install_dependencies()
|
||||
print_help()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
@ -1,16 +0,0 @@
|
||||
# NOTE: You may need to install additional binary packages prior to using 'pip install'
|
||||
# See the Contributor Documentation for more information
|
||||
|
||||
# Development
|
||||
netifaces
|
||||
termcolor
|
||||
pyyaml # reading data files
|
||||
progressbar
|
||||
|
||||
# Testing
|
||||
nose # for test discovery and console feedback
|
||||
unittest2 # backport of unittest lib in python 2.7
|
||||
pylint # static code analysis
|
||||
pep8 # checks for PEP8 code style compliance
|
||||
mox # mock object framework
|
||||
coverage # computes code coverage percentages
|
@ -8,12 +8,12 @@ possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||
os.pardir,
|
||||
os.pardir))
|
||||
if os.path.exists(os.path.join(possible_topdir,
|
||||
'devstack',
|
||||
'anvil',
|
||||
'__init__.py')):
|
||||
sys.path.insert(0, possible_topdir)
|
||||
|
||||
from devstack import log
|
||||
from devstack import utils
|
||||
from anvil import log
|
||||
from anvil import utils
|
||||
|
||||
|
||||
class CustomDumper(yaml.SafeDumper):
|
||||
|
29
tools/upload-img.py
Normal file → Executable file
29
tools/upload-img.py
Normal file → Executable file
@ -8,21 +8,21 @@ possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||
os.pardir,
|
||||
os.pardir))
|
||||
if os.path.exists(os.path.join(possible_topdir,
|
||||
'devstack',
|
||||
'anvil',
|
||||
'__init__.py')):
|
||||
sys.path.insert(0, possible_topdir)
|
||||
|
||||
|
||||
from devstack import cfg
|
||||
from devstack import log as logging
|
||||
from devstack import passwords
|
||||
from devstack import settings
|
||||
from devstack import shell as sh
|
||||
from devstack import utils
|
||||
from anvil import cfg
|
||||
from anvil import log as logging
|
||||
from anvil import passwords
|
||||
from anvil import settings
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from devstack.components import keystone
|
||||
from devstack.components import glance
|
||||
from devstack.image import uploader
|
||||
from anvil.components import keystone
|
||||
from anvil.components import glance
|
||||
from anvil.image import uploader
|
||||
|
||||
|
||||
def find_config():
|
||||
@ -35,11 +35,10 @@ def find_config():
|
||||
"""
|
||||
|
||||
locs = []
|
||||
locs.append(settings.STACK_CONFIG_LOCATION)
|
||||
locs.append(sh.joinpths("/etc", "devstack", "stack.ini"))
|
||||
locs.append(sh.joinpths(settings.STACK_CONFIG_DIR, "stack.ini"))
|
||||
locs.append(sh.joinpths("conf", "stack.ini"))
|
||||
for path in locs:
|
||||
locs.append(settings.CONFIG_LOCATION)
|
||||
locs.append(sh.joinpths("/etc", settings.PROG_NAME, settings.CONFIG_NAME)
|
||||
locs.append(sh.joinpths(os.getcwd(), "../", settings.CONFIG_DIR, settings.CONFIG_NAME))
|
||||
for path in set(locs):
|
||||
if sh.isfile(path):
|
||||
return path
|
||||
return None
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user