68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 API.
 | 
						|
 | 
						|
Starts both the EC2 and OpenStack APIs in separate processes.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
import sys
 | 
						|
import multiprocessing
 | 
						|
 | 
						|
import nova.flags
 | 
						|
import nova.log
 | 
						|
import nova.service
 | 
						|
import nova.version
 | 
						|
import nova.utils
 | 
						|
 | 
						|
 | 
						|
def launch(service_name):
 | 
						|
    """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():
 | 
						|
    """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__':
 | 
						|
    sys.exit(main())
 |