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)
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
include:
- 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
include:
- contrib.amulet

View File

@@ -23,21 +23,24 @@ options:
provide a later version of OpenStack will trigger a software
upgrade.
Note that when openstack-origin-git is specified, the packages
configured for that option will be installed from git rather
than from the openstack-origin repository.
Note that when openstack-origin-git is specified, openstack-specific
packages will be installed from source rather than from the
openstack-origin repository.
openstack-origin-git:
default: None
type: "string"
type: string
description: |
Specifies a YAML file which lists the git repositories and branches
from which to install OpenStack. See config/git-*.yaml for a
starting point.
Specifies a YAML-formatted two-dimensional array listing the git
repositories and branches from which to install OpenStack and its
dependencies.
Note that the config files that are installed will be determined
based on the OpenStack release in the openstack-origin option.
Note that the installed config files will be determined based on
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:
default: "/etc/keystone/keystone.conf"
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'))
apt_update()
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'))

View File

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

View File

@@ -49,7 +49,12 @@ class KeystoneBasicDeployment(OpenStackAmuletDeployment):
def _configure_services(self):
"""Configure all of the services."""
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%'}
cinder_config = {'block-device': 'None'}
configs = {'keystone': keystone_config,