Merge "Add defaults for openstack-origin-git config option"

This commit is contained in:
Jenkins 2016-06-23 08:04:47 +00:00 committed by Gerrit Code Review
commit 0a02e7e390
4 changed files with 46 additions and 106 deletions

View File

@ -30,92 +30,3 @@ Storage
=======
This charm supports a number of different storage backends depending on
your hypervisor type and storage relations.
Deploying from source
=====================
The minimum openstack-origin-git config required to deploy from source is:
openstack-origin-git: include-file://nova-juno.yaml
nova-juno.yaml
repositories:
- {name: requirements,
repository: 'git://github.com/openstack/requirements',
branch: stable/juno}
- {name: nova,
repository: 'git://github.com/openstack/nova',
branch: stable/juno}
Note that there are only two 'name' values the charm knows about: 'requirements'
and 'nova'. These repositories must correspond to these 'name' values.
Additionally, the requirements repository must be specified first and the
nova repository must be specified last. All other repostories are installed
in the order in which they are specified.
The following is a full list of current tip repos (may not be up-to-date):
openstack-origin-git: include-file://nova-master.yaml
nova-master.yaml
repositories:
- {name: requirements,
repository: 'git://github.com/openstack/requirements',
branch: master}
- {name: oslo-concurrency,
repository: 'git://github.com/openstack/oslo.concurrency',
branch: master}
- {name: oslo-config,
repository: 'git://github.com/openstack/oslo.config',
branch: master}
- {name: oslo-context,
repository: 'git://github.com/openstack/oslo.context',
branch: master}
- {name: oslo-db,
repository: 'git://github.com/openstack/oslo.db',
branch: master}
- {name: oslo-i18n,
repository: 'git://github.com/openstack/oslo.i18n',
branch: master}
- {name: oslo-log,
repository: 'git://github.com/openstack/oslo.log',
branch: master}
- {name: oslo-messaging,
repository: 'git://github.com/openstack/oslo.messaging',
branch: master}
- {name: oslo-middleware,
repository': 'git://github.com/openstack/oslo.middleware',
branch: master}
- {name: oslo-rootwrap',
repository: 'git://github.com/openstack/oslo.rootwrap',
branch: master}
- {name: oslo-serialization,
repository: 'git://github.com/openstack/oslo.serialization',
branch: master}
- {name: oslo-utils,
repository: 'git://github.com/openstack/oslo.utils',
branch: master}
- {name: pbr,
repository: 'git://github.com/openstack-dev/pbr',
branch: master}
- {name: stevedore,
repository: 'git://github.com/openstack/stevedore',
branch: 'master'}
- {name: sqlalchemy-migrate,
repository: 'git://github.com/stackforge/sqlalchemy-migrate',
branch: master}
- {name: python-cinderclient,
repository: 'git://github.com/openstack/python-cinderclient',
branch: master}
- {name: python-glanceclient,
repository': 'git://github.com/openstack/python-glanceclient',
branch: master}
- {name: python-neutronlient,
repository': 'git://github.com/openstack/python-neutronclient',
branch: master}
- {name: keystonemiddleware,
repository: 'git://github.com/openstack/keystonemiddleware',
branch: master}
- {name: nova,
repository: 'git://github.com/openstack/nova',
branch: master}

View File

@ -45,13 +45,32 @@ options:
type: string
default:
description: |
Specifies a YAML-formatted dictionary listing the git repositories and
branches from which to install OpenStack and its dependencies.
.
Specifies a default OpenStack release name, or a YAML dictionary
listing the git repositories to install from.
The default Openstack release name may be one of the following, where
the corresponding OpenStack github branch will be used:
* icehouse
* kilo
* liberty
* mitaka
* master
The YAML must minimally include requirements, neutron, and nova
repositories, and may also include repositories for other dependencies:
repositories:
- {name: requirements,
repository: 'git://github.com/openstack/requirements',
branch: master}
- {name: neutron,
repository: 'git://github.com/openstack/neutron',
branch: master}
- {name: nova,
repository: 'git://github.com/openstack/nova',
branch: master
Note that the installed config files will be determined based on
the OpenStack release of the openstack-origin option.
.
For more details see README.md.
nova-config:
type: string
default: /etc/nova/nova.conf

View File

@ -725,14 +725,15 @@ def git_install_requested():
requirements_dir = None
def git_default_repos(projects):
def git_default_repos(projects_yaml):
"""
Returns default repos if a default openstack-origin-git value is specified.
"""
service = service_name()
core_project = service
for default, branch in GIT_DEFAULT_BRANCHES.iteritems():
if projects == default:
if projects_yaml == default:
# add the requirements repo first
repo = {
@ -742,34 +743,41 @@ def git_default_repos(projects):
}
repos = [repo]
# neutron and nova charms require some additional repos
if service == 'neutron':
for svc in ['neutron-fwaas', 'neutron-lbaas', 'neutron-vpnaas']:
# neutron-* and nova-* charms require some additional repos
if service in ['neutron-api', 'neutron-gateway',
'neutron-openvswitch']:
core_project = 'neutron'
for project in ['neutron-fwaas', 'neutron-lbaas',
'neutron-vpnaas']:
repo = {
'name': svc,
'repository': GIT_DEFAULT_REPOS[svc],
'name': project,
'repository': GIT_DEFAULT_REPOS[project],
'branch': branch,
}
repos.append(repo)
elif service == 'nova':
elif service in ['nova-cloud-controller', 'nova-compute']:
core_project = 'nova'
repo = {
'name': 'neutron',
'repository': GIT_DEFAULT_REPOS['neutron'],
'branch': branch,
}
repos.append(repo)
elif service == 'openstack-dashboard':
core_project = 'horizon'
# finally add the current service's repo
# finally add the current service's core project repo
repo = {
'name': service,
'repository': GIT_DEFAULT_REPOS[service],
'name': core_project,
'repository': GIT_DEFAULT_REPOS[core_project],
'branch': branch,
}
repos.append(repo)
return yaml.dump(dict(repositories=repos))
return projects
return projects_yaml
def _git_yaml_load(projects_yaml):

View File

@ -50,6 +50,7 @@ from charmhelpers.contrib.openstack.utils import (
get_os_codename_install_source,
git_install_requested,
git_clone_and_install,
git_default_repos,
git_src_dir,
git_pip_venv_dir,
git_yaml_value,
@ -608,6 +609,7 @@ def git_install(projects_yaml):
"""Perform setup, and install git repos specified in yaml parameter."""
if git_install_requested():
git_pre_install()
projects_yaml = git_default_repos(projects_yaml)
git_clone_and_install(projects_yaml, core_project='nova')
git_post_install(projects_yaml)