Update openstack-origin-git to take a YAML-formatted two-dimensional array

This commit is contained in:
Corey Bryant
2015-03-07 21:30:32 -05:00
parent a2c3c8d839
commit d89e926043
10 changed files with 102 additions and 67 deletions

View File

@@ -32,3 +32,72 @@ a new data store is configured, the charm ensures the minimum administrator
credentials exist (as configured via charm configuration) credentials exist (as configured via charm configuration)
VIP is only required if you plan on multi-unit clusterming. The VIP becomes a highly-available API endpoint. VIP is only required if you plan on multi-unit clusterming. The VIP becomes a highly-available API endpoint.
Deploying from source
---------------------
The minimal openstack-origin-git config required to deploy from source is:
openstack-origin-git:
"{'keystone':
{'repository': 'git://git.openstack.org/openstack/keystone.git',
'branch': 'stable/icehouse'}}"
If you specify a 'requirements' repository, it will be used to update the
requirements.txt files of all other git repos that it applies to, before
they are installed:
openstack-origin-git:
"{'requirements':
{'repository': 'git://git.openstack.org/openstack/requirements.git',
'branch': 'master'},
'keystone':
{'repository': 'git://git.openstack.org/openstack/keystone.git',
'branch': 'master'}}"
Note that there are only two key values the charm knows about for the outermost
dictionary: 'keystone' and 'requirements'. These repositories must correspond to
these keys. If the requirements repository is specified, it will be installed
first. The keystone repository is always installed last. All other repostories
will be installed in between.
NOTE(coreycb): The following is temporary to keep track of the full list of
current tip repos (may not be up-to-date).
openstack-origin-git:
"{'requirements':
{'repository': 'git://git.openstack.org/openstack/requirements.git',
'branch': 'master'},
'keystonemiddleware:
{'repository': 'git://git.openstack.org/openstack/keystonemiddleware.git',
'branch: 'master'},
'oslo-concurrency':
{'repository': 'git://git.openstack.org/openstack/oslo.concurrency.git',
'branch: 'master'},
'oslo-config':
{'repository': 'git://git.openstack.org/openstack/oslo.config.git',
'branch: 'master'},
'oslo-db':
{'repository': 'git://git.openstack.org/openstack/oslo.db.git',
'branch: 'master'},
'oslo-i18n':
{'repository': 'git://git.openstack.org/openstack/oslo.i18n.git',
'branch: 'master'},
'oslo-serialization':
{'repository': 'git://git.openstack.org/openstack/oslo.serialization.git',
'branch: 'master'},
'oslo-utils':
{'repository': 'git://git.openstack.org/openstack/oslo.utils.git',
'branch: 'master'},
'pbr':
{'repository': 'git://git.openstack.org/openstack-dev/pbr.git',
'branch: 'master'},
'python-keystoneclient':
{'repository': 'git://git.openstack.org/openstack/python-keystoneclient.git',
'branch: 'master'},
'sqlalchemy-migrate':
{'repository': 'git://git.openstack.org/stackforge/sqlalchemy-migrate.git',
'branch: 'master'},
'keystone':
{'repository': 'git://git.openstack.org/openstack/keystone.git',
'branch': 'master'}}"

View File

@@ -1,4 +1,5 @@
branch: lp:charm-helpers #branch: lp:charm-helpers
branch: /home/corey/src/charms/git/charm-helpers
destination: hooks/charmhelpers destination: hooks/charmhelpers
include: include:
- core - core

View File

@@ -1,4 +1,5 @@
branch: lp:charm-helpers #branch: lp:charm-helpers
branch: /home/corey/src/charms/git/charm-helpers
destination: tests/charmhelpers destination: tests/charmhelpers
include: include:
- contrib.amulet - contrib.amulet

View File

@@ -23,21 +23,24 @@ options:
provide a later version of OpenStack will trigger a software provide a later version of OpenStack will trigger a software
upgrade. upgrade.
Note that when openstack-origin-git is specified, the packages Note that when openstack-origin-git is specified, openstack-specific
configured for that option will be installed from git rather packages will be installed from source rather than from the
than from the openstack-origin repository. openstack-origin repository.
openstack-origin-git: openstack-origin-git:
default: None default: None
type: "string" type: string
description: | description: |
Specifies a YAML file which lists the git repositories and branches Specifies a YAML-formatted two-dimensional array listing the git
from which to install OpenStack. See config/git-*.yaml for a repositories and branches from which to install OpenStack and its
starting point. dependencies.
Note that the config files that are installed will be determined Note that the installed config files will be determined based on
based on the OpenStack release in the openstack-origin option. the OpenStack release of the openstack-origin option.
Note that updating this setting after deployment will do nothing. Note also that this option is processed for the initial install
only. Setting this option after deployment is not supported.
For more details see README.md.
config-file: config-file:
default: "/etc/keystone/keystone.conf" default: "/etc/keystone/keystone.conf"
type: string type: string

View File

@@ -1,6 +0,0 @@
keystone:
repository: git://git.openstack.org/openstack/keystone.git
branch: stable/juno
requirements:
repository: git://git.openstack.org/openstack/requirements.git
branch: stable/juno

View File

@@ -1,39 +0,0 @@
keystone:
repository: git://git.openstack.org/openstack/keystone.git
branch: master
keystonemiddleware:
repository: git://git.openstack.org/openstack/keystonemiddleware.git
branch: master
oslo-concurrency:
repository: git://git.openstack.org/openstack/oslo.concurrency.git
branch: master
oslo-config:
repository: git://git.openstack.org/openstack/oslo.config.git
branch: master
oslo-db:
repository: git://git.openstack.org/openstack/oslo.db.git
branch: master
oslo-i18n:
repository: git://git.openstack.org/openstack/oslo.i18n.git
branch: master
oslo-serialization:
repository: git://git.openstack.org/openstack/oslo.serialization.git
branch: master
oslo-utils:
repository: git://git.openstack.org/openstack/oslo.utils.git
branch: master
pbr:
repository: git://git.openstack.org/openstack-dev/pbr.git
branch: master
pycadf:
repository: git://git.openstack.org/openstack/pycadf.git
branch: master
python-keystoneclient:
repository: git://git.openstack.org/openstack/python-keystoneclient.git
branch: master
requirements:
repository: git://git.openstack.org/openstack/requirements.git
branch: master
sqlalchemy-migrate:
repository: git://git.openstack.org/stackforge/sqlalchemy-migrate.git
branch: master

View File

@@ -1,6 +0,0 @@
keystone:
repository: git://git.openstack.org/openstack/keystone.git
branch: master
requirements:
repository: git://git.openstack.org/openstack/requirements.git
branch: master

View File

@@ -98,6 +98,12 @@ def install():
configure_installation_source(config('openstack-origin')) configure_installation_source(config('openstack-origin'))
apt_update() apt_update()
apt_install(determine_packages(), fatal=True) apt_install(determine_packages(), fatal=True)
# NOTE(coreycb): This is temporary for sstack proxy, unless we decide
# we need to code proxy support into the charms.
os.environ["http_proxy"] = "http://squid.internal:3128"
os.environ["https_proxy"] = "https://squid.internal:3128"
git_install(config('openstack-origin-git')) git_install(config('openstack-origin-git'))

View File

@@ -5,6 +5,7 @@ import os
import uuid import uuid
import urlparse import urlparse
import time import time
import yaml
from base64 import b64encode from base64 import b64encode
from collections import OrderedDict from collections import OrderedDict
@@ -993,11 +994,11 @@ def send_notifications(data, force=False):
relation_set(relation_id=rid, relation_settings=_notifications) relation_set(relation_id=rid, relation_settings=_notifications)
def git_install(file_name): def git_install(projects):
"""Perform setup, and install git repos specified in yaml config file.""" """Perform setup, and install git repos specified in yaml parameter."""
if git_install_requested(): if git_install_requested():
git_pre_install() git_pre_install()
git_clone_and_install(file_name, core_project='keystone') git_clone_and_install(yaml.load(projects), core_project='keystone')
git_post_install() git_post_install()

View File

@@ -49,7 +49,12 @@ class KeystoneBasicDeployment(OpenStackAmuletDeployment):
def _configure_services(self): def _configure_services(self):
"""Configure all of the services.""" """Configure all of the services."""
keystone_config = {'admin-password': 'openstack', keystone_config = {'admin-password': 'openstack',
'admin-token': 'ubuntutesting'} 'admin-token': 'ubuntutesting',
# NOTE(coreycb): Added the following temporarily to test deploy from source
'openstack-origin-git':
"{'keystone':"
" {'repository': 'git://git.openstack.org/openstack/keystone.git',"
" 'branch': 'stable/icehouse'}}"}
mysql_config = {'dataset-size': '50%'} mysql_config = {'dataset-size': '50%'}
cinder_config = {'block-device': 'None'} cinder_config = {'block-device': 'None'}
configs = {'keystone': keystone_config, configs = {'keystone': keystone_config,