Previous topic

The cinder.openstack.common.rpc.impl_zmq Module

Next topic

The cinder.openstack.common.rpc.matchmaker_redis Module

This Page

Psst... hey. You're reading the latest content, but it might be out of sync with code. You can read Cinder 2011.2 docs or all OpenStack docs too.

The cinder.openstack.common.rpc.matchmaker Module

The MatchMaker classes should except a Topic or Fanout exchange key and return keys for direct exchanges, per (approximate) AMQP parlance.

class Binding

Bases: object

A binding on which to perform a lookup.

test(key)
class DirectBinding

Bases: cinder.openstack.common.rpc.matchmaker.Binding

Specifies a host in the key via a ‘.’ character Although dots are used in the key, the behavior here is that it maps directly to a host, thus direct.

test(key)
class DirectExchange

Bases: cinder.openstack.common.rpc.matchmaker.Exchange

Exchange where all topic keys are split, sending to second half. i.e. “compute.host” sends a message to “compute.host” running on “host”

run(key)
class Exchange

Bases: object

Implements lookups. Subclass this to support hashtables, dns, etc.

run(key)
class FanoutBinding

Bases: cinder.openstack.common.rpc.matchmaker.Binding

Match on fanout keys, where key starts with ‘fanout.’ string.

test(key)
class FanoutRingExchange(ring=None)

Bases: cinder.openstack.common.rpc.matchmaker.RingExchange

Fanout Exchange based on a hashmap.

run(key)
class HeartbeatMatchMakerBase

Bases: cinder.openstack.common.rpc.matchmaker.MatchMakerBase

Base for a heart-beat capable MatchMaker. Provides common methods for registering, unregistering, and maintaining heartbeats.

ack_alive(key, host)

Acknowledge that a host.topic is alive. Used internally for updating heartbeats, but may also be used publically to acknowledge a system is alive (i.e. rpc message successfully sent to host)

backend_register(key, host)

Implements registration logic. Called by register(self,key,host)

backend_unregister(key, key_host)

Implements de-registration logic. Called by unregister(self,key,host)

register(key, host)

Register a host on a backend. Heartbeats, if applicable, may keepalive registration.

send_heartbeats()

Send all heartbeats. Use start_heartbeat to spawn a heartbeat greenthread, which loops this method.

start_heartbeat()

Implementation of MatchMakerBase.start_heartbeat Launches greenthread looping send_heartbeats(), yielding for CONF.matchmaker_heartbeat_freq seconds between iterations.

stop_heartbeat()

Destroys the heartbeat greenthread.

unregister(key, host)

Unregister a topic.

class LocalhostExchange(host='localhost')

Bases: cinder.openstack.common.rpc.matchmaker.Exchange

Exchange where all direct topics are local.

run(key)
class MatchMakerBase

Bases: object

Match Maker Base Class. Build off HeartbeatMatchMakerBase if building a heartbeat-capable MatchMaker.

ack_alive(key, host)

Acknowledge that a key.host is alive. Used internally for updating heartbeats, but may also be used publically to acknowledge a system is alive (i.e. rpc message successfully sent to host)

add_binding(binding, rule, last=True)
expire(topic, host)

Explicitly expire a host’s registration.

is_alive(topic, host)

Checks if a host is alive.

queues(key)
register(key, host)

Register a host on a backend. Heartbeats, if applicable, may keepalive registration.

send_heartbeats()

Send all heartbeats. Use start_heartbeat to spawn a heartbeat greenthread, which loops this method.

start_heartbeat()

Spawn heartbeat greenthread.

stop_heartbeat()

Destroys the heartbeat greenthread.

unregister(key, host)

Unregister a topic.

exception MatchMakerException

Bases: exceptions.Exception

Signified a match could not be found.

message = u'Match not found by MatchMaker.'
class MatchMakerLocalhost(host='localhost')

Bases: cinder.openstack.common.rpc.matchmaker.MatchMakerBase

Match Maker where all bare topics resolve to localhost. Useful for testing.

class MatchMakerRing(ring=None)

Bases: cinder.openstack.common.rpc.matchmaker.MatchMakerBase

Match Maker where hosts are loaded from a static hashmap.

class MatchMakerStub

Bases: cinder.openstack.common.rpc.matchmaker.MatchMakerBase

Match Maker where topics are untouched. Useful for testing, or for AMQP/brokered queues. Will not work where knowledge of hosts is known (i.e. zeromq)

class RingExchange(ring=None)

Bases: cinder.openstack.common.rpc.matchmaker.Exchange

Match Maker where hosts are loaded from a static file containing a hashmap (JSON formatted).

__init__ takes optional ring dictionary argument, otherwise loads the ringfile from CONF.mathcmaker_ringfile.

class RoundRobinRingExchange(ring=None)

Bases: cinder.openstack.common.rpc.matchmaker.RingExchange

A Topic Exchange based on a hashmap.

run(key)
class StubExchange

Bases: cinder.openstack.common.rpc.matchmaker.Exchange

Exchange that does nothing.

run(key)
class TopicBinding

Bases: cinder.openstack.common.rpc.matchmaker.Binding

Where a ‘bare’ key without dots. AMQP generally considers topic exchanges to be those with dots, but we deviate here in terminology as the behavior here matches that of a topic exchange (whereas where there are dots, behavior matches that of a direct exchange.

test(key)