summaryrefslogtreecommitdiffstats
path: root/bin/nova-volume
diff options
context:
space:
mode:
authorJesse Andrews <anotherjesse@gmail.com>2010-05-27 23:05:26 -0700
committerJesse Andrews <anotherjesse@gmail.com>2010-05-27 23:05:26 -0700
commitbf6e6e718cdc7488e2da87b21e258ccc065fe499 (patch)
tree51cf4f72047eb6b16079c7fe21e9822895541801 /bin/nova-volume
initial commit
Diffstat (limited to 'bin/nova-volume')
-rwxr-xr-xbin/nova-volume68
1 files changed, 68 insertions, 0 deletions
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)
+