69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
# vim: tabstop=4 shiftwidth=4 softtabstop
 | 
						|
 | 
						|
# Copyright [2010] [Anso Labs, LLC]
 | 
						|
# 
 | 
						|
#    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)
 | 
						|
 |