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: I032cb58283d54a9ccfcc268a7fd70b460a03aa58
This commit is contained in:
parent
6ee7c2fc17
commit
9ad5cf9637
91
README.md
91
README.md
@ -42,97 +42,6 @@ This charm has a configuration option to allow users to disable any per-instance
|
|||||||
|
|
||||||
These compute nodes could then be accessed by cloud users via use of host aggregates with specific flavors to target instances to hypervisors with no per-instance security.
|
These compute nodes could then be accessed by cloud users via use of host aggregates with specific flavors to target instances to hypervisors with no per-instance security.
|
||||||
|
|
||||||
# Deploying from source
|
|
||||||
|
|
||||||
The minimum openstack-origin-git config required to deploy from source is:
|
|
||||||
|
|
||||||
openstack-origin-git: include-file://neutron-juno.yaml
|
|
||||||
|
|
||||||
neutron-juno.yaml
|
|
||||||
repositories:
|
|
||||||
- {name: requirements,
|
|
||||||
repository: 'git://github.com/openstack/requirements',
|
|
||||||
branch: stable/juno}
|
|
||||||
- {name: neutron,
|
|
||||||
repository: 'git://github.com/openstack/neutron',
|
|
||||||
branch: stable/juno}
|
|
||||||
|
|
||||||
Note that there are only two 'name' values the charm knows about: 'requirements'
|
|
||||||
and 'neutron'. These repositories must correspond to these 'name' values.
|
|
||||||
Additionally, the requirements repository must be specified first and the
|
|
||||||
neutron 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://neutron-master.yaml
|
|
||||||
|
|
||||||
neutron-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-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: python-keystoneclient,
|
|
||||||
repository: 'git://github.com/openstack/python-keystoneclient',
|
|
||||||
branch: master}
|
|
||||||
- {name: python-neutronclient,
|
|
||||||
repository: 'git://github.com/openstack/python-neutronclient',
|
|
||||||
branch: master}
|
|
||||||
- {name: python-novaclient,
|
|
||||||
repository': 'git://github.com/openstack/python-novaclient',
|
|
||||||
branch: master}
|
|
||||||
- {name: keystonemiddleware,
|
|
||||||
repository: 'git://github.com/openstack/keystonemiddleware',
|
|
||||||
branch: master}
|
|
||||||
- {name: neutron-fwaas,
|
|
||||||
repository': 'git://github.com/openstack/neutron-fwaas',
|
|
||||||
branch: master}
|
|
||||||
- {name: neutron-lbaas,
|
|
||||||
repository: 'git://github.com/openstack/neutron-lbaas',
|
|
||||||
branch: master}
|
|
||||||
- {name: neutron-vpnaas,
|
|
||||||
repository: 'git://github.com/openstack/neutron-vpnaas',
|
|
||||||
branch: master}
|
|
||||||
- {name: neutron,
|
|
||||||
repository: 'git://github.com/openstack/neutron',
|
|
||||||
branch: master}
|
|
||||||
|
|
||||||
# Network Spaces support
|
# Network Spaces support
|
||||||
|
|
||||||
This charm supports the use of Juju Network Spaces, allowing the charm to be bound to network space configurations managed directly by Juju. This is only supported with Juju 2.0 and above.
|
This charm supports the use of Juju Network Spaces, allowing the charm to be bound to network space configurations managed directly by Juju. This is only supported with Juju 2.0 and above.
|
||||||
|
35
config.yaml
35
config.yaml
@ -16,19 +16,44 @@ options:
|
|||||||
default:
|
default:
|
||||||
type: string
|
type: string
|
||||||
description: |
|
description: |
|
||||||
Specifies a YAML-formatted dictionary listing the git
|
Specifies a default OpenStack release name, or a YAML dictionary
|
||||||
repositories and branches from which to install OpenStack and
|
listing the git repositories to install from.
|
||||||
its dependencies.
|
|
||||||
|
|
||||||
When openstack-origin-git is specified, openstack-specific
|
When openstack-origin-git is specified, openstack-specific
|
||||||
packages will be installed from source rather than from the
|
packages will be installed from source rather than from the
|
||||||
the nova-compute charm's openstack-origin repository.
|
the nova-compute charm's openstack-origin repository.
|
||||||
|
|
||||||
|
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-fwaas,
|
||||||
|
neutron-lbaas, neutron-vpnaas, and neutron repositories, and may
|
||||||
|
also include repositories for other dependencies:
|
||||||
|
repositories:
|
||||||
|
- {name: requirements,
|
||||||
|
repository: 'git://github.com/openstack/requirements',
|
||||||
|
branch: master}
|
||||||
|
- {name: neutron-fwaas,
|
||||||
|
repository: 'git://github.com/openstack/neutron-fwaas',
|
||||||
|
branch: master}
|
||||||
|
- {name: neutron-lbaas,
|
||||||
|
repository: 'git://github.com/openstack/neutron-lbaas',
|
||||||
|
branch: master}
|
||||||
|
- {name: neutron-vpnaas,
|
||||||
|
repository: 'git://github.com/openstack/neutron-vpnaas',
|
||||||
|
branch: master}
|
||||||
|
- {name: neutron,
|
||||||
|
repository: 'git://github.com/openstack/neutron',
|
||||||
|
branch: master}
|
||||||
|
|
||||||
Note that the installed config files will be determined based on
|
Note that the installed config files will be determined based on
|
||||||
the OpenStack release of the nova-compute charm's openstack-origin
|
the OpenStack release of the nova-compute charm's openstack-origin
|
||||||
option.
|
option.
|
||||||
|
|
||||||
For more details see README.md.
|
|
||||||
rabbit-user:
|
rabbit-user:
|
||||||
default: neutron
|
default: neutron
|
||||||
type: string
|
type: string
|
||||||
|
@ -725,14 +725,15 @@ def git_install_requested():
|
|||||||
requirements_dir = None
|
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.
|
Returns default repos if a default openstack-origin-git value is specified.
|
||||||
"""
|
"""
|
||||||
service = service_name()
|
service = service_name()
|
||||||
|
core_project = service
|
||||||
|
|
||||||
for default, branch in GIT_DEFAULT_BRANCHES.iteritems():
|
for default, branch in GIT_DEFAULT_BRANCHES.iteritems():
|
||||||
if projects == default:
|
if projects_yaml == default:
|
||||||
|
|
||||||
# add the requirements repo first
|
# add the requirements repo first
|
||||||
repo = {
|
repo = {
|
||||||
@ -742,34 +743,41 @@ def git_default_repos(projects):
|
|||||||
}
|
}
|
||||||
repos = [repo]
|
repos = [repo]
|
||||||
|
|
||||||
# neutron and nova charms require some additional repos
|
# neutron-* and nova-* charms require some additional repos
|
||||||
if service == 'neutron':
|
if service in ['neutron-api', 'neutron-gateway',
|
||||||
for svc in ['neutron-fwaas', 'neutron-lbaas', 'neutron-vpnaas']:
|
'neutron-openvswitch']:
|
||||||
|
core_project = 'neutron'
|
||||||
|
for project in ['neutron-fwaas', 'neutron-lbaas',
|
||||||
|
'neutron-vpnaas']:
|
||||||
repo = {
|
repo = {
|
||||||
'name': svc,
|
'name': project,
|
||||||
'repository': GIT_DEFAULT_REPOS[svc],
|
'repository': GIT_DEFAULT_REPOS[project],
|
||||||
'branch': branch,
|
'branch': branch,
|
||||||
}
|
}
|
||||||
repos.append(repo)
|
repos.append(repo)
|
||||||
elif service == 'nova':
|
|
||||||
|
elif service in ['nova-cloud-controller', 'nova-compute']:
|
||||||
|
core_project = 'nova'
|
||||||
repo = {
|
repo = {
|
||||||
'name': 'neutron',
|
'name': 'neutron',
|
||||||
'repository': GIT_DEFAULT_REPOS['neutron'],
|
'repository': GIT_DEFAULT_REPOS['neutron'],
|
||||||
'branch': branch,
|
'branch': branch,
|
||||||
}
|
}
|
||||||
repos.append(repo)
|
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 = {
|
repo = {
|
||||||
'name': service,
|
'name': core_project,
|
||||||
'repository': GIT_DEFAULT_REPOS[service],
|
'repository': GIT_DEFAULT_REPOS[core_project],
|
||||||
'branch': branch,
|
'branch': branch,
|
||||||
}
|
}
|
||||||
repos.append(repo)
|
repos.append(repo)
|
||||||
|
|
||||||
return yaml.dump(dict(repositories=repos))
|
return yaml.dump(dict(repositories=repos))
|
||||||
|
|
||||||
return projects
|
return projects_yaml
|
||||||
|
|
||||||
|
|
||||||
def _git_yaml_load(projects_yaml):
|
def _git_yaml_load(projects_yaml):
|
||||||
|
@ -10,6 +10,7 @@ from charmhelpers.contrib.openstack import context, templating
|
|||||||
from charmhelpers.contrib.openstack.utils import (
|
from charmhelpers.contrib.openstack.utils import (
|
||||||
git_install_requested,
|
git_install_requested,
|
||||||
git_clone_and_install,
|
git_clone_and_install,
|
||||||
|
git_default_repos,
|
||||||
git_src_dir,
|
git_src_dir,
|
||||||
git_pip_venv_dir,
|
git_pip_venv_dir,
|
||||||
pause_unit,
|
pause_unit,
|
||||||
@ -429,6 +430,7 @@ def git_install(projects_yaml):
|
|||||||
status_set('maintenance', 'running git install')
|
status_set('maintenance', 'running git install')
|
||||||
if git_install_requested():
|
if git_install_requested():
|
||||||
git_pre_install()
|
git_pre_install()
|
||||||
|
projects_yaml = git_default_repos(projects_yaml)
|
||||||
git_clone_and_install(projects_yaml, core_project='neutron')
|
git_clone_and_install(projects_yaml, core_project='neutron')
|
||||||
git_post_install(projects_yaml)
|
git_post_install(projects_yaml)
|
||||||
|
|
||||||
|
@ -373,14 +373,16 @@ class TestNeutronOVSUtils(CharmTestCase):
|
|||||||
DummyContext(return_value={'shared_secret': 'supersecret'})
|
DummyContext(return_value={'shared_secret': 'supersecret'})
|
||||||
self.assertEqual(nutils.get_shared_secret(), 'supersecret')
|
self.assertEqual(nutils.get_shared_secret(), 'supersecret')
|
||||||
|
|
||||||
|
@patch.object(nutils, 'git_default_repos')
|
||||||
@patch.object(nutils, 'git_install_requested')
|
@patch.object(nutils, 'git_install_requested')
|
||||||
@patch.object(nutils, 'git_clone_and_install')
|
@patch.object(nutils, 'git_clone_and_install')
|
||||||
@patch.object(nutils, 'git_post_install')
|
@patch.object(nutils, 'git_post_install')
|
||||||
@patch.object(nutils, 'git_pre_install')
|
@patch.object(nutils, 'git_pre_install')
|
||||||
def test_git_install(self, git_pre, git_post, git_clone_and_install,
|
def test_git_install(self, git_pre, git_post, git_clone_and_install,
|
||||||
git_requested):
|
git_requested, git_default_repos):
|
||||||
projects_yaml = openstack_origin_git
|
projects_yaml = openstack_origin_git
|
||||||
git_requested.return_value = True
|
git_requested.return_value = True
|
||||||
|
git_default_repos.return_value = projects_yaml
|
||||||
nutils.git_install(projects_yaml)
|
nutils.git_install(projects_yaml)
|
||||||
self.assertTrue(git_pre.called)
|
self.assertTrue(git_pre.called)
|
||||||
git_clone_and_install.assert_called_with(openstack_origin_git,
|
git_clone_and_install.assert_called_with(openstack_origin_git,
|
||||||
|
Loading…
Reference in New Issue
Block a user