summaryrefslogtreecommitdiffstats
path: root/bin/nova-api
diff options
context:
space:
mode:
authorBrian Lamar <brian.lamar@rackspace.com>2011-06-19 16:27:46 -0400
committerBrian Lamar <brian.lamar@rackspace.com>2011-06-19 16:27:46 -0400
commit1e047dae71131a0080310990dc6899852d233941 (patch)
treecfbc1d01adfd50eee8d8106d4068ccfdb0f0d07d /bin/nova-api
parent95213244fe341b7ec2723b92a5b793e89ee8403f (diff)
downloadnova-1e047dae71131a0080310990dc6899852d233941.tar.gz
nova-1e047dae71131a0080310990dc6899852d233941.tar.xz
nova-1e047dae71131a0080310990dc6899852d233941.zip
Further nova-api cleanup.
Diffstat (limited to 'bin/nova-api')
-rwxr-xr-xbin/nova-api63
1 files changed, 37 insertions, 26 deletions
diff --git a/bin/nova-api b/bin/nova-api
index 7d80b0b78..ff4aa83d1 100755
--- a/bin/nova-api
+++ b/bin/nova-api
@@ -1,7 +1,5 @@
#!/usr/bin/env python
-# pylint: disable=C0103
-# 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.
@@ -18,40 +16,53 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-"""Starter script for Nova API."""
+"""Starter script for Nova API.
-import sys
+Starts both the EC2 and OpenStack APIs in separate processes. Pylint warnings
+about re-imports should be ignored.
-import eventlet.pool
+"""
-from nova import flags
-from nova import log as logging
-from nova import service
-from nova import utils
-from nova import version
+# pylint: disable=W0404
+import sys
+import multiprocessing
-LOG = logging.getLogger("nova.api")
-FLAGS = flags.FLAGS
-VERSION = version.version_string_with_vcs()
+import nova.flags
+import nova.log
+import nova.service
+import nova.version
+import nova.utils
def launch(service_name):
- _service = service.WSGIService(service_name)
- _service.start()
- _service.wait()
+ """Launch WSGI service with name matching 'paste' config file section."""
+ service = nova.service.WSGIService(service_name)
+ service.start()
+ try:
+ service.wait()
+ except KeyboardInterrupt:
+ service.stop()
def main():
- utils.default_flagfile()
- FLAGS(sys.argv)
-# logging.setup()
- LOG.audit(_("Starting nova-api node (version %s)") % VERSION)
-
- pool = eventlet.pool.Pool()
- pool.execute(launch, "ec2")
- pool.execute(launch, "osapi")
- pool.wait_all()
+ """Begin process of launching both EC2 and OSAPI services."""
+ version = nova.version.version_string_with_vcs()
+ logger = nova.log.getLogger("nova.api")
+ logger.audit(_("Starting nova-api node (version %s)") % version)
+
+ nova.flags.FLAGS(sys.argv)
+ nova.utils.default_flagfile()
+
+ pool = multiprocessing.Pool(2)
+ pool.map_async(launch, ["ec2", "osapi"])
+ pool.close()
+
+ try:
+ pool.join()
+ except KeyboardInterrupt:
+ logger.audit(_("Exiting..."))
+ pool.terminate()
if __name__ == '__main__':