diff options
| author | Jeffrey Zhang <zhang.lei.fly@gmail.com> | 2015-12-30 18:49:56 +0800 |
|---|---|---|
| committer | Jeffrey Zhang <zhang.lei.fly@gmail.com> | 2016-01-06 08:11:06 +0800 |
| commit | 620d610eaaf03217f3a038c031fe28ce43132166 (patch) | |
| tree | 15029af6482576b9d50897319fd933dccdc72d9c /kolla/common/config.py | |
| parent | d1b0a8b3c22a368e1639d54a5a36e47222a00520 (diff) | |
| download | kolla-620d610eaaf03217f3a038c031fe28ce43132166.tar.gz kolla-620d610eaaf03217f3a038c031fe28ce43132166.zip | |
Generate the kolla-build.conf file using oslo_config
Closes-Bug: #1530122
Change-Id: I96039eade2aacf1bcd9d14d958cdddd915fc9a5c
Diffstat (limited to 'kolla/common/config.py')
| -rw-r--r-- | kolla/common/config.py | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/kolla/common/config.py b/kolla/common/config.py new file mode 100644 index 000000000..68e1f7e5e --- /dev/null +++ b/kolla/common/config.py @@ -0,0 +1,263 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import itertools + +from oslo_config import cfg +from oslo_config import types + +from kolla import version + + +RDO_MIRROR = "http://trunk.rdoproject.org/centos7" +DELOREAN = "{}/current/delorean.repo".format(RDO_MIRROR) +DELOREAN_DEPS = "{}/delorean-deps.repo".format(RDO_MIRROR) +INSTALL_TYPE_CHOICES = ['binary', 'source', 'rdo', 'rhos'] + +_PROFILE_OPTS = [ + cfg.ListOpt('infra', + default=['ceph', 'data', 'mariadb', 'haproxy', + 'keepalived', 'kolla-ansible', 'memcached', + 'mongodb', 'openvswitch', 'rabbitmq', 'rsyslog'], + help='Infra images'), + cfg.ListOpt('main', + default=['cinder', 'ceilometer', 'glance', 'heat', + 'horizon', 'keystone', 'neutron', 'nova', + 'swift'], + help='Main images'), + cfg.ListOpt('aux', + default=['aodh', 'designate', 'gnocchi', 'ironic', + 'magnum', 'mistral', 'trove,' 'zaqar'], + help='Aux Images'), + cfg.ListOpt('default', + default=['data', 'kolla-ansible', 'glance', 'haproxy', + 'heat', 'horizon', 'keepalived', 'keystone', + 'memcached', 'mariadb', 'neutron', 'nova', + 'openvswitch', 'rabbitmq', 'rsyslog'], + help='Default images'), + cfg.ListOpt('gate', + default=['ceph', 'cinder', 'data', 'dind', 'glance', + 'haproxy', 'heat', 'horizon', 'keepalived', + 'keystone', 'kolla-ansible', 'mariadb', + 'memcached', 'neutron', 'nova', 'openvswitch', + 'rabbitmq', 'rsyslog'], + help='Gate images') +] + +_CLI_OPTS = [ + cfg.StrOpt('base', short='b', default='centos', + deprecated_group='kolla-build', + help='The base distro to use when building'), + cfg.StrOpt('base_tag', default='latest', + deprecated_group='kolla-build', + help='The base distro image tag'), + cfg.BoolOpt('debug', short='d', default=False, + deprecated_group='kolla-build', + help='Turn on debugging log level'), + cfg.StrOpt('include-header', short='i', + deprecated_group='kolla-build', + help=('Path to custom file to be added at ' + 'beginning of base Dockerfile')), + cfg.StrOpt('include-footer', short='I', + deprecated_group='kolla-build', + help=('Path to custom file to be added at ' + 'end of Dockerfiles for final images')), + cfg.BoolOpt('keep', default=False, + deprecated_group='kolla-build', + help='Keep failed intermediate containers'), + cfg.StrOpt('namespace', short='n', default='kollaglue', + deprecated_group='kolla-build', + help='The Docker namespace name'), + cfg.BoolOpt('cache', default=True, + help='Use the Docker cache when building', + ), + cfg.BoolOpt('no-cache', default=False, + help='Do not use the Docker cache when building', + deprecated_for_removal=True), + cfg.MultiOpt('profile', types.String(), short='p', + deprecated_group='kolla-build', + help=('Build a pre-defined set of images, see [profiles]' + ' section in config. The default profiles are:' + ' {}'.format(', '.join( + [opt.name for opt in _PROFILE_OPTS]) + ))), + cfg.BoolOpt('push', default=False, + deprecated_group='kolla-build', + help='Push images after building'), + cfg.IntOpt('push-threads', default=1, min=1, + deprecated_group='kolla-build', + help=('The number of threads to user while pushing' + ' Images. Note: Docker can not handle threading' + ' push properly.')), + cfg.IntOpt('retries', short='r', default=3, min=0, + deprecated_group='kolla-build', + help='The number of times to retry while building'), + cfg.MultiOpt('regex', types.String(), positional=True, + help=('Build only images matching regex and its' + ' dependencies')), + cfg.StrOpt('registry', deprecated_group='kolla-build', + help=('The docker registry host. The default registry host' + ' is Docker Hub')), + cfg.StrOpt('type', short='t', default='binary', + choices=INSTALL_TYPE_CHOICES, + dest='install_type', deprecated_group='kolla-build', + help=('The method of the Openstack install. The valid' + ' types are: {}'.format( + ', '.join(INSTALL_TYPE_CHOICES)))), + cfg.IntOpt('threads', short='T', default=8, min=1, + deprecated_group='kolla-build', + help=('The number of threads to use while building.' + ' (Note: setting to one will allow real time' + ' logging.)')), + cfg.StrOpt('tag', default=version.version_info.cached_version_string(), + deprecated_group='kolla-build', + help='The Docker tag'), + cfg.BoolOpt('template-only', default=False, + deprecated_group='kolla-build', + help=("Don't build images. Generate Dockerfile only")), +] + +_BASE_OPTS = [ + cfg.StrOpt('maintainer', deprecated_group='kolla-build', + default='Kolla Project (https://launchpad.net/kolla)', + help='The MAINTAINER field'), + cfg.ListOpt('rpm_setup_config', default=[DELOREAN, DELOREAN_DEPS], + deprecated_group='kolla-build', + help=('Comma separated list of .rpm or .repo file(s)' + 'or URL(s) to install before building containers')) +] + + +SOURCES = { + 'openstack-base': { + 'type': 'url', + 'location': ('https://github.com/openstack/requirements/tarball/' + 'master')}, + 'aodh-base': { + 'type': 'url', + 'location': 'http://tarballs.openstack.org/aodh/aodh-master.tar.gz'}, + 'ceilometer-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/ceilometer/' + 'ceilometer-master.tar.gz')}, + 'cinder-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/cinder/' + 'cinder-master.tar.gz')}, + 'designate-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/designate/' + 'designate-master.tar.gz')}, + 'glance-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/glance/' + 'glance-master.tar.gz')}, + 'gnocchi-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/gnocchi/' + 'gnocchi-master.tar.gz')}, + 'heat-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/heat/heat-master.tar.gz')}, + 'horizon': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/horizon/' + 'horizon-master.tar.gz')}, + 'ironic-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/ironic/' + 'ironic-master.tar.gz')}, + 'keystone': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/keystone/' + 'keystone-master.tar.gz')}, + 'magnum-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/magnum/' + 'magnum-master.tar.gz')}, + 'mistral-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/mistral/' + 'mistral-master.tar.gz')}, + 'murano-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/murano/' + 'murano-master.tar.gz')}, + 'neutron-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/neutron/' + 'neutron-master.tar.gz')}, + 'nova-base': { + 'type': 'url', + 'location': 'http://tarballs.openstack.org/nova/nova-master.tar.gz'}, + 'nova-spicehtml5proxy': { + 'type': 'url', + 'location': ('http://github.com/SPICE/spice-html5/tarball/' + 'spice-html5-0.1.6')}, + 'nova-novncproxy': { + 'type': 'url', + 'location': 'http://github.com/kanaka/noVNC/tarball/v0.5.1'}, + 'swift-base': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/swift/' + 'swift-master.tar.gz')}, + 'tempest': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/tempest/' + 'tempest-master.tar.gz')}, + 'zaqar': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/zaqar/' + 'zaqar-master.tar.gz')} + +} + + +def _get_source_opt(type_, location, reference=None): + return [cfg.StrOpt('type', choices=['git', 'url'], + default=type_, + help='Source location type'), + cfg.StrOpt('location', default=location, + help='The location for source install'), + cfg.StrOpt('reference', default=reference, + help=('Git reference to pull, commit sha, tag' + 'or branch name'))] + + +def gen_source_opts(): + for name, params in SOURCES.iteritems(): + type_ = params['type'] + location = params['location'] + reference = params.get('reference') + yield name, _get_source_opt(type_, location, reference) + + +def list_opts(): + return itertools.chain([(None, _CLI_OPTS), + (None, _BASE_OPTS), + ('profiles', _PROFILE_OPTS)], + gen_source_opts(), + ) + + +def parse(conf, args, usage=None, prog=None, + default_config_files=None): + conf.register_cli_opts(_CLI_OPTS) + conf.register_opts(_BASE_OPTS) + conf.register_opts(_PROFILE_OPTS, group='profiles') + + conf(args=args, + project='kolla', + usage=usage, + prog=prog, + version=version.version_info.cached_version_string(), + default_config_files=default_config_files) |
