diff --git a/bin/nova-api-os-compute b/bin/nova-api-os-compute new file mode 100755 index 000000000..7bfff2a42 --- /dev/null +++ b/bin/nova-api-os-compute @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All Rights Reserved. +# +# 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. + +"""Starter script for Nova OS API.""" + +import eventlet +eventlet.monkey_patch() + +import os +import sys + + +possible_topdir = os.path.normpath(os.path.join(os.path.abspath( + sys.argv[0]), os.pardir, os.pardir)) +if os.path.exists(os.path.join(possible_topdir, "nova", "__init__.py")): + sys.path.insert(0, possible_topdir) + + +from nova import flags +from nova import log as logging +from nova import service +from nova import utils + +if __name__ == '__main__': + utils.default_flagfile() + flags.FLAGS(sys.argv) + logging.setup() + utils.monkey_patch() + server = service.WSGIService('osapi_compute') + service.serve(server) + service.wait() diff --git a/bin/nova-api-os b/bin/nova-api-os-volume similarity index 96% rename from bin/nova-api-os rename to bin/nova-api-os-volume index 83a808987..33909c5b5 100755 --- a/bin/nova-api-os +++ b/bin/nova-api-os-volume @@ -42,6 +42,6 @@ if __name__ == '__main__': flags.FLAGS(sys.argv) logging.setup() utils.monkey_patch() - server = service.WSGIService('osapi') + server = service.WSGIService('osapi_volume') service.serve(server) service.wait() diff --git a/nova/auth/manager.py b/nova/auth/manager.py index 3d984f1bf..f6c88e082 100644 --- a/nova/auth/manager.py +++ b/nova/auth/manager.py @@ -827,7 +827,7 @@ class AuthManager(object): 's3': 'http://%s:%s' % (s3_host, FLAGS.s3_port), 'os': '%s://%s:%s%s' % (FLAGS.osapi_scheme, ec2_host, - FLAGS.osapi_port, + FLAGS.osapi_compute_listen_port, FLAGS.osapi_path), 'user': user.name, 'nova': FLAGS.ca_file, diff --git a/nova/common/cfg.py b/nova/common/cfg.py index 58d17d99f..bfb7b8a19 100644 --- a/nova/common/cfg.py +++ b/nova/common/cfg.py @@ -32,14 +32,14 @@ Options can be strings, integers, floats, booleans, lists or 'multi strings': enabled_apis_opt = \ cfg.ListOpt('enabled_apis', - default=['ec2', 'osapi'], + default=['ec2', 'osapi_compute'], help='List of APIs to enable by default') DEFAULT_EXTENSIONS = [ 'nova.api.openstack.contrib.standard_extensions' ] - osapi_extension_opt = \ - cfg.MultiStrOpt('osapi_extension', + osapi_compute_extension_opt = \ + cfg.MultiStrOpt('osapi_compute_extension', default=DEFAULT_EXTENSIONS) Option schemas are registered with with the config manager at runtime, but @@ -55,7 +55,7 @@ before the option is referenced: ... def _load_extensions(self): - for ext_factory in self.conf.osapi_extension: + for ext_factory in self.conf.osapi_compute_extension: .... A common usage pattern is for each option schema to be defined in the module or diff --git a/nova/flags.py b/nova/flags.py index a51508c97..b566f303a 100644 --- a/nova/flags.py +++ b/nova/flags.py @@ -309,19 +309,21 @@ DEFINE_integer('rabbit_max_retries', 0, 'maximum rabbit connection attempts (0=try forever)') DEFINE_string('control_exchange', 'nova', 'the main exchange to connect to') DEFINE_boolean('rabbit_durable_queues', False, 'use durable queues') -DEFINE_list('enabled_apis', ['ec2', 'osapi', 'metadata'], +DEFINE_list('enabled_apis', + ['ec2', 'osapi_compute', 'osapi_volume', 'metadata'], 'list of APIs to enable by default') DEFINE_string('ec2_host', '$my_ip', 'ip of api server') DEFINE_string('ec2_dmz_host', '$my_ip', 'internal ip of api server') DEFINE_integer('ec2_port', 8773, 'cloud controller port') DEFINE_string('ec2_scheme', 'http', 'prefix for ec2') DEFINE_string('ec2_path', '/services/Cloud', 'suffix for ec2') -DEFINE_multistring('osapi_extension', - ['nova.api.openstack.v2.contrib.standard_extensions'], - 'osapi extension to load') -DEFINE_string('osapi_host', '$my_ip', 'ip of api server') +DEFINE_multistring('osapi_compute_extension', + ['nova.api.openstack.compute.contrib.standard_extensions'], + 'osapi compute extension to load') +DEFINE_multistring('osapi_volume_extension', + ['nova.api.openstack.volume.contrib.standard_extensions'], + 'osapi volume extension to load') DEFINE_string('osapi_scheme', 'http', 'prefix for openstack') -DEFINE_integer('osapi_port', 8774, 'OpenStack API port') DEFINE_string('osapi_path', '/v1.1/', 'suffix for openstack') DEFINE_integer('osapi_max_limit', 1000, 'max number of items returned in a collection response') diff --git a/nova/service.py b/nova/service.py index 95399f650..bfe6d1d54 100644 --- a/nova/service.py +++ b/nova/service.py @@ -48,9 +48,10 @@ flags.DEFINE_integer('periodic_interval', 60, flags.DEFINE_string('ec2_listen', "0.0.0.0", 'IP address for EC2 API to listen') flags.DEFINE_integer('ec2_listen_port', 8773, 'port for ec2 api to listen') -flags.DEFINE_string('osapi_listen', "0.0.0.0", +flags.DEFINE_string('osapi_compute_listen', "0.0.0.0", 'IP address for OpenStack API to listen') -flags.DEFINE_integer('osapi_listen_port', 8774, 'port for os api to listen') +flags.DEFINE_integer('osapi_compute_listen_port', 8774, + 'list port for osapi compute') flags.DEFINE_string('metadata_manager', 'nova.api.manager.MetadataManager', 'OpenStack metadata service manager') flags.DEFINE_string('metadata_listen', "0.0.0.0", @@ -59,6 +60,10 @@ flags.DEFINE_integer('metadata_listen_port', 8775, 'port for metadata api to listen') flags.DEFINE_string('api_paste_config', "api-paste.ini", 'File name for the paste.deploy config for nova-api') +flags.DEFINE_string('osapi_volume_listen', "0.0.0.0", + 'IP address for OpenStack Volume API to listen') +flags.DEFINE_integer('osapi_volume_listen_port', 8776, + 'port for os volume api to listen') class Launcher(object): diff --git a/setup.py b/setup.py index cf6499782..9eb9ef92b 100644 --- a/setup.py +++ b/setup.py @@ -87,7 +87,8 @@ setup(name='nova', 'bin/nova-api', 'bin/nova-api-ec2', 'bin/nova-api-metadata', - 'bin/nova-api-os', + 'bin/nova-api-os-compute', + 'bin/nova-api-os-volume', 'bin/nova-compute', 'bin/nova-console', 'bin/nova-dhcpbridge',