From bf6e6e718cdc7488e2da87b21e258ccc065fe499 Mon Sep 17 00:00:00 2001 From: Jesse Andrews Date: Thu, 27 May 2010 23:05:26 -0700 Subject: initial commit --- bin/nova-volume | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 bin/nova-volume (limited to 'bin/nova-volume') diff --git a/bin/nova-volume b/bin/nova-volume new file mode 100755 index 000000000..e36954cd3 --- /dev/null +++ b/bin/nova-volume @@ -0,0 +1,68 @@ +#!/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) + -- cgit