From 53176a829f6fb821a5f438c53e90e19dcaec4f67 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Thu, 16 Jun 2016 12:48:36 +0000 Subject: [PATCH] Add defaults for openstack-origin-git config option openstack-origin-git currently only supports YAML that specifies the git repositories to deploy from. This adds support for default openstack-origin-git values. The default values supported are: icehouse, kilo, liberty, mitaka, and master. For example: openstack-origin-git=master Change-Id: I094695a343cd3d1e07b516a0c3cdc401437c6c34 --- README.md | 89 ------------------- config.yaml | 29 ++++-- hooks/charmhelpers/contrib/openstack/utils.py | 32 ++++--- hooks/nova_compute_utils.py | 2 + 4 files changed, 46 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index f9adbb6a..f23ba77d 100644 --- a/README.md +++ b/README.md @@ -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} diff --git a/config.yaml b/config.yaml index be7b2c39..829eb708 100644 --- a/config.yaml +++ b/config.yaml @@ -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 diff --git a/hooks/charmhelpers/contrib/openstack/utils.py b/hooks/charmhelpers/contrib/openstack/utils.py index 53e58424..8da5c5ed 100644 --- a/hooks/charmhelpers/contrib/openstack/utils.py +++ b/hooks/charmhelpers/contrib/openstack/utils.py @@ -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): diff --git a/hooks/nova_compute_utils.py b/hooks/nova_compute_utils.py index 44f1c64f..9981c937 100644 --- a/hooks/nova_compute_utils.py +++ b/hooks/nova_compute_utils.py @@ -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)