2
# vim: tabstop=4 shiftwidth=4 softtabstop
4
# Copyright [2010] [Anso Labs, LLC]
6
# Licensed under the Apache License, Version 2.0 (the "License");
7
# you may not use this file except in compliance with the License.
8
# You may obtain a copy of the License at
10
# http://www.apache.org/licenses/LICENSE-2.0
12
# Unless required by applicable law or agreed to in writing, software
13
# distributed under the License is distributed on an "AS IS" BASIS,
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
# See the License for the specific language governing permissions and
16
# limitations under the License.
18
Tornado Storage daemon manages AoE volumes via AMQP messaging.
23
from nova import vendor
24
from tornado import ioloop
26
from nova import flags
28
from nova import server
29
from nova import utils
30
from nova.volume import storage
34
flags.DEFINE_integer('storage_report_state_interval', 10,
35
'seconds between broadcasting state to cloud',
40
bs = storage.BlockStore()
42
conn = rpc.Connection.instance()
43
consumer_all = rpc.AdapterConsumer(
45
topic='%s' % FLAGS.storage_topic,
48
consumer_node = rpc.AdapterConsumer(
50
topic='%s.%s' % (FLAGS.storage_topic, FLAGS.node_name),
53
io_inst = ioloop.IOLoop.instance()
54
scheduler = ioloop.PeriodicCallback(
55
lambda: bs.report_state(),
56
FLAGS.storage_report_state_interval * 1000,
59
injected = consumer_all.attachToTornado(io_inst)
60
injected = consumer_node.attachToTornado(io_inst)
65
if __name__ == '__main__':
66
utils.default_flagfile()
67
server.serve('nova-volume', main)