72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 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.
 | 
						|
 | 
						|
"""
 | 
						|
    Tornado Storage daemon manages AoE volumes via AMQP messaging.
 | 
						|
"""
 | 
						|
 | 
						|
import logging
 | 
						|
 | 
						|
from nova import vendor
 | 
						|
from tornado import ioloop
 | 
						|
 | 
						|
from nova import flags
 | 
						|
from nova import rpc
 | 
						|
from nova import server
 | 
						|
from nova import utils
 | 
						|
from nova.volume import storage
 | 
						|
 | 
						|
 | 
						|
FLAGS = flags.FLAGS
 | 
						|
flags.DEFINE_integer('storage_report_state_interval', 10,
 | 
						|
                     'seconds between broadcasting state to cloud',
 | 
						|
                     lower_bound=1)
 | 
						|
 | 
						|
 | 
						|
def main(argv):
 | 
						|
    bs = storage.BlockStore()
 | 
						|
 | 
						|
    conn = rpc.Connection.instance()
 | 
						|
    consumer_all = rpc.AdapterConsumer(
 | 
						|
            connection=conn,
 | 
						|
            topic='%s' % FLAGS.storage_topic,
 | 
						|
            proxy=bs)
 | 
						|
 | 
						|
    consumer_node = rpc.AdapterConsumer(
 | 
						|
            connection=conn,
 | 
						|
            topic='%s.%s' % (FLAGS.storage_topic, FLAGS.node_name),
 | 
						|
            proxy=bs)
 | 
						|
 | 
						|
    io_inst = ioloop.IOLoop.instance()
 | 
						|
    scheduler = ioloop.PeriodicCallback(
 | 
						|
            lambda: bs.report_state(),
 | 
						|
            FLAGS.storage_report_state_interval * 1000,
 | 
						|
            io_loop=io_inst)
 | 
						|
 | 
						|
    injected = consumer_all.attachToTornado(io_inst)
 | 
						|
    injected = consumer_node.attachToTornado(io_inst)
 | 
						|
    scheduler.start()
 | 
						|
    io_inst.start()
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    utils.default_flagfile()
 | 
						|
    server.serve('nova-volume', main)
 | 
						|
 |