Contine working on folsom features.

1. Make glanceclient not need to install keystoneclient (anvil handles this dependency)
2. Make	keystone not need to install keystoneclient (anvil handles this dependency)
3. Make the packager default to false for removal instead of true (WIP, figuring a better way to do this)
4. Update the rhel6 distro yaml file to have the new formats and removals of 'false' (for removing)
5. Update the devstack 'equiv' persona to add back in keystone/glanceclient/general/db/glance (WIP)
This commit is contained in:
Joshua Harlow
2012-08-12 22:20:50 -07:00
parent f82ece6ba1
commit a59be0b6b5
6 changed files with 152 additions and 225 deletions

View File

@@ -303,10 +303,14 @@ class PythonInstallComponent(PkgInstallComponent):
]
for fn in scan_files:
if sh.isfile(fn):
LOG.info("Injected dependencies from %s.", colorizer.quote(fn))
for line in sh.load_file(fn).splitlines():
line = line.strip()
if not line or line.startswith("#"):
continue
if line.find('http://tarballs.openstack.org') != -1:
# WTF
continue
entry = pkg_resources.Requirement.parse(line)
pip_requires[entry.key] = {
'requires': entry,
@@ -355,6 +359,8 @@ class PythonInstallComponent(PkgInstallComponent):
' package!') % (
req['full'], req['from'],
))
# TODO(harlowja) - handle the version checking better, it
# right is pretty crappy and dump...
version_provided = found_entry.get('version')
if version_provided is not None and version_provided not in req['requires']:
raise excp.DependencyException("Pip dependency %r"

View File

@@ -30,6 +30,14 @@ class GlanceClientInstaller(comp.PythonInstallComponent):
def __init__(self, *args, **kargs):
comp.PythonInstallComponent.__init__(self, *args, **kargs)
def _filter_mapped_packages(self, mapping):
# Remove keystone client (will be handled by anvil)...
new_mapping = {}
for (k, data) in mapping.items():
if k.lower().find('keystoneclient') == -1:
new_mapping[k] = data
return new_mapping
def _get_download_locations(self):
places = list()
places.append({

View File

@@ -30,7 +30,6 @@ from anvil.helpers import glance as ghelper
from anvil.helpers import keystone as khelper
from anvil.helpers import nova as nhelper
from anvil.helpers import quantum as qhelper
from anvil.helpers import swift as shelper
LOG = logging.getLogger(__name__)
@@ -84,6 +83,14 @@ class KeystoneInstaller(comp.PythonInstallComponent):
comp.PythonInstallComponent.__init__(self, *args, **kargs)
self.bin_dir = sh.joinpths(self.get_option('app_dir'), BIN_DIR)
def _filter_mapped_packages(self, mapping):
# Remove keystone client (will be handled by anvil)...
new_mapping = {}
for (k, data) in mapping.items():
if k.lower().find('keystoneclient') == -1:
new_mapping[k] = data
return new_mapping
def _get_download_locations(self):
places = list()
places.append({
@@ -195,7 +202,6 @@ class KeystoneRuntime(comp.PythonRuntime):
initial_cfg['keystone'] = khelper.get_shared_params(self.cfg)
initial_cfg['nova'] = nhelper.get_shared_params(self.cfg)
initial_cfg['quantum'] = qhelper.get_shared_params(self.cfg)
initial_cfg['swift'] = shelper.get_shared_params(self.cfg)
init_what = utils.param_replace_deep(copy.deepcopy(self.init_what), initial_cfg)
khelper.Initializer(initial_cfg['keystone']).initialize(**init_what)
# Writing this makes sure that we don't init again

View File

@@ -67,7 +67,7 @@ class Packager(object):
del(self.registry.removed[name])
def remove(self, pkg):
removable = pkg.get('removable', True)
removable = pkg.get('removable', False)
if not removable:
return False
name = pkg['name']

View File

@@ -69,9 +69,7 @@ components:
uninstall: anvil.components.db:DBUninstaller
packages:
- name: mysql
removable: true
- name: mysql-server
removable: true
general:
action_classes:
install: anvil.components.pkglist:Installer
@@ -80,86 +78,63 @@ components:
packages:
# Shared system packages
- name: coreutils
removable: false
- name: curl
removable: false
- name: euca2ools
removable: false
- name: gawk
removable: false
- name: git
removable: false
- name: iputils
removable: false
- name: libxml2-devel
removable: false
- name: libxslt-devel
removable: false
- name: lsof
removable: false
- name: mlocate
removable: false
- name: openssh-server
removable: false
- name: psmisc
removable: false
- name: screen
removable: false
- name: sudo
removable: false
- name: tcpdump
removable: false
- name: unzip
removable: false
- name: wget
removable: false
# Shared python packages
- name: pylint
removable: false
- name: python
removable: false
- name: python-anyjson
removable: false
- name: python-devel
removable: false
- name: python-distutils-extra
removable: false
- name: python-eventlet
removable: false
- name: python-pep8
removable: false
- name: python-pip
removable: false
- name: python-argparse
removable: false
- name: python-babel
- name: python-devel
- name: python-distutils-extra
- name: python-eventlet
- name: python-greenlet
- name: python-greenlet
removable: false
- name: python-paste
removable: false
- name: python-setuptools
removable: false
- name: python-unittest2
removable: false
- name: python-virtualenv
removable: false
- name: python-webob1.0
removable: false
- name: MySQL-python
removable: false
- name: python-sqlalchemy0.7
removable: false
- name: python-httplib2
removable: false
- name: python-iso8601
removable: false
- name: python-greenlet
removable: false
- name: python-paste-deploy1.5
removable: false
- name: python-routes1.12
removable: false
- name: python-lxml
- name: python-mock
- name: python-mox
- name: python-nose1.1
removable: false
- name: python-paste
- name: python-paste-deploy1.5
- name: python-pep8
- name: python-pip
- name: python-routes1.12
- name: python-setuptools
- name: python-simplejson
- name: python-sqlalchemy0.7
- name: python-unittest2
- name: python-virtualenv
- name: python-webob1.0
pips:
# Pips that aren't packages yet (or versions aren't right...)
- name: coverage
- name: nose-exclude
- name: openstack.nose_plugin
- name: passlib
- name: prettytable
version: "0.6.1"
- name: pycrypto
options: --upgrade
- name: requests
- name: sphinx
- name: sqlalchemy-migrate
glance:
action_classes:
install: anvil.components.glance:GlanceInstaller
@@ -171,69 +146,71 @@ components:
# and versions inside those files into distribution
# package names equivalents (if possible)
pip_to_package:
- name: mox
package:
name: python-mox
- name: lxml
package:
name: python-lxml
- name: babel
package:
name: python-babel
- name: pysendfile
package:
name: pysendfile
- name: kombu
package:
name: python-kombu # Only needed for notifications?
# These packages are already installed in the 'general' section
# so this is just here to make sure when we find them that they
# are matched and not cause an error to occur
# Only needed for notifications???
name: python-kombu
# These packages are already installed in the 'general' section...
- name: anyjson
- name: argparse
- name: babel
- name: coverage
- name: distribute
- name: eventlet
- name: greenlet
- name: httplib2
- name: iso8601
- name: lxml
- name: mox
- name: nose
- name: paste
- name: pastedeploy
- name: pep8
- name: routes
- name: sqlalchemy
- name: webob
packages:
- name: python-dateutil
- name: python-prettytable
pips:
# Pips that aren't packages yet
- name: boto
version: "2.1.1"
- name: coverage
- name: distribute
- name: jsonschema
- name: nose-exclude
- name: openstack.nose_plugin
- name: passlib
- name: paste
- name: pastedeploy
- name: pep8
- name: prettytable
- name: pycrypto
options: --upgrade
- name: requests
- name: routes
- name: sphinx
- name: sqlalchemy
- name: sqlalchemy-migrate
- name: webob
packages:
- name: MySQL-python
pips:
# Pips that aren't packages yet (and not in the 'general' section)
- name: boto
version: "2.1.1"
- name: wsgiref
- name: xattr
- name: jsonschema
glance-client:
action_classes:
install: anvil.components.glance_client:GlanceClientInstaller
running: anvil.components.glance_client:GlanceClientRuntime
uninstall: anvil.components.glance_client:GlanceClientUninstaller
packages:
- name: python-argparse
removable: true
version: 1.2*
- name: python-prettytable
removable: true
version: 0.5*
pip_to_package:
# These packages are already installed in the 'general' section...
- name: argparse
- name: distribute
- name: httplib2
- name: mox
- name: nose
- name: nose-exclude
- name: openstack.nose_plugin
- name: pep8
- name: prettytable
- name: sphinx
pips:
- name: nosexcover
- name: setuptools-git
- name: warlock
version: "0.1.0"
horizon:
action_classes:
install: anvil.distros.rhel6:HorizonInstaller
@@ -241,68 +218,11 @@ components:
uninstall: anvil.components.horizon:HorizonUninstaller
packages:
- name: nodejs-compat-symlinks
removable: true
version: 1-1*
source-rpm: http://nodejs.tchol.org/repocfg/el/nodejs-stable-release.noarch.rpm
- name: npm
removable: true
version: 1.1*
source-rpm: http://nodejs.tchol.org/repocfg/el/nodejs-stable-release.noarch.rpm
- name: httpd
removable: true
version: 2.2*
- name: mod_wsgi
removable: true
version: 3.2*
- name: python-dateutil
removable: true
version: 1.4*
- name: python-eventlet
removable: true
version: 0.9*
- name: python-kombu
removable: true
version: 1.1*
- name: python-webob1.0
removable: true
version: 1.0*
packager_name: anvil.distros.rhel6:YumPackagerWithRelinks
packager_options:
links:
- source: /usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/
target: /usr/lib/python2.6/site-packages/webob
pips:
- name: CherryPy
version: 3.2.2
- name: Paste
version: 1.7.5.1
- name: PasteDeploy
version: '1.5'
- name: PasteScript
version: 1.7.5
- name: Routes
version: 1.12.3
- name: SQLAlchemy
version: 0.7.5
- name: django
version: "1.4"
- name: django-mailer
version: 0.1.0
- name: django-nose
version: 0.1.3
- name: django-nose-selenium
version: 0.7.3
- name: django-registration
version: '0.7'
- name: django-staticfiles
version: 1.1.2
- name: pycrypto
options: --upgrade
version: '2.6'
- name: python-cloudfiles
version: 1.7.9.3
- name: sqlalchemy-migrate
version: 0.7.2
keystone:
action_classes:
install: anvil.components.keystone:KeystoneInstaller
@@ -310,79 +230,66 @@ components:
uninstall: anvil.components.keystone:KeystoneUninstaller
packages:
- name: MySQL-python
removable: true
version: 1.2*
- name: cyrus-sasl-lib
removable: false
version: 2.1*
- name: openldap
removable: false
version: 2.4*
- name: openldap-devel
removable: true
version: 2.4*
- name: python-argparse
removable: true
version: 1.2*
- name: python-eventlet
removable: true
version: 0.9*
- name: python-greenlet
removable: true
version: 0.3*
- name: python-lxml
removable: true
version: 2.2*
- name: python-passlib
removable: true
version: 1.5*
- name: python-prettytable
removable: true
version: 0.5*
- name: python-sqlite2
removable: true
version: 2.3*
- name: python-webob1.0
removable: true
version: 1.0*
packager_name: anvil.distros.rhel6:YumPackagerWithRelinks
packager_options:
links:
- source: /usr/lib/python2.6/site-packages/WebOb-1.0.8-py2.6.egg/webob/
target: /usr/lib/python2.6/site-packages/webob
- name: sqlite
removable: false
version: 3.6*
pips:
- name: Paste
version: 1.7.5.1
- name: PasteDeploy
version: '1.5'
- name: PasteScript
version: 1.7.5
- name: Routes
version: 1.12.3
- name: SQLAlchemy
version: 0.7.5
- name: py-bcrypt
version: '0.2'
- name: pycrypto
options: --upgrade
version: '2.6'
pip_to_package:
- name: webtest
package:
name: python-webtest
- name: python-memcached
package:
name: python-memcached
- name: netifaces
package:
name: python-netifaces
# These packages are already installed in the 'general' section...
- name: babel
- name: coverage
- name: distribute
- name: eventlet
- name: greenlet
- name: httplib2
- name: iso8601
- name: lxml
- name: mox
- name: nose
- name: openstack.nose_plugin
- name: passlib
- name: paste
- name: pastedeploy
- name: pep8
- name: pylint
- name: routes
- name: sphinx
- name: sqlalchemy
- name: sqlalchemy-migrate
version: 0.7.2
- name: unittest2
- name: webob
pips:
- name: python-ldap
version: "2.3.13"
- name: pam
version: '0.1.4'
- name: nosexcover
keystone-client:
action_classes:
install: anvil.components.keystone_client:KeyStoneClientInstaller
running: anvil.components.keystone_client:KeyStoneClientRuntime
uninstall: anvil.components.keystone_client:KeyStoneClientUninstaller
packages:
- name: python-argparse
removable: true
version: 1.2*
- name: python-prettytable
removable: true
version: 0.5*
pip_to_package:
# These packages are already installed in the 'general' section...
- name: argparse
- name: coverage
- name: distribute
- name: httplib2
- name: mock
- name: mox
- name: nose
- name: nose-exclude
- name: openstack.nose_plugin
- name: pep8
- name: prettytable
- name: simplejson
- name: sphinx
- name: unittest2
melange:
action_classes:
install: anvil.components.melange:MelangeInstaller

View File

@@ -2,13 +2,13 @@
components:
# Order matters here!
- general
# - db
- db
# - rabbit-mq
#- keystone-client
#- keystone
- keystone-client
- keystone
- glance
# Do this after glance is installed to override the old binary
#- glance-client
- glance-client
#- nova
#- cinder
#- quantum-client