]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add missing references
authorAngus Salkeld <asalkeld@redhat.com>
Fri, 30 Mar 2012 01:26:12 +0000 (12:26 +1100)
committerAngus Salkeld <asalkeld@redhat.com>
Fri, 30 Mar 2012 01:26:12 +0000 (12:26 +1100)
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
heat/common/config.py
heat/common/utils.py
heat/rpc/common.py

index eebe86ccfec73c3984ffda791812b3cac70760cf..1e367fed45d22ab6b4bee5c90085b1fe67f9a3db 100644 (file)
@@ -57,6 +57,40 @@ class HeatEngineConfigOpts(cfg.CommonConfigOpts):
         cfg.StrOpt('instance_driver',
                    default='heat.engine.nova',
                    help='Driver to use for controlling instances'),
+
+    cfg.StrOpt('rabbit_host',
+               default='localhost',
+               help='the RabbitMQ host'),
+    cfg.IntOpt('rabbit_port',
+               default=5672,
+               help='the RabbitMQ port'),
+    cfg.BoolOpt('rabbit_use_ssl',
+                default=False,
+                help='connect over SSL for RabbitMQ'),
+    cfg.StrOpt('rabbit_userid',
+               default='guest',
+               help='the RabbitMQ userid'),
+    cfg.StrOpt('rabbit_password',
+               default='guest',
+               help='the RabbitMQ password'),
+    cfg.StrOpt('rabbit_virtual_host',
+               default='/',
+               help='the RabbitMQ virtual host'),
+    cfg.IntOpt('rabbit_retry_interval',
+               default=1,
+               help='how frequently to retry connecting with RabbitMQ'),
+    cfg.IntOpt('rabbit_retry_backoff',
+               default=2,
+               help='how long to backoff for between retries when connecting '
+                    'to RabbitMQ'),
+    cfg.IntOpt('rabbit_max_retries',
+               default=0,
+               help='maximum retries with trying to connect to RabbitMQ '
+                    '(the default of 0 implies an infinite retry count)'),
+    cfg.StrOpt('control_exchange',
+               default='nova',
+               help='the main RabbitMQ exchange to connect to'),
+
     ]
 
     def __init__(self, default_config_files=None, **kwargs):
index a1c55c73d656989485d595190127fed83db058c5..3be57edd5e5d8174a1ed1f47f1da4bd3a76cd8ca 100644 (file)
@@ -24,6 +24,11 @@ import datetime
 import sys
 import uuid
 
+from eventlet import event
+from eventlet import greenthread
+from eventlet import semaphore
+from eventlet.green import subprocess
+
 from heat.common import exception
 
 
@@ -87,3 +92,63 @@ def utcnow():
     return datetime.datetime.utcnow()
 
 utcnow.override_time = None
+
+
+class LoopingCallDone(Exception):
+    """Exception to break out and stop a LoopingCall.
+
+    The poll-function passed to LoopingCall can raise this exception to
+    break out of the loop normally. This is somewhat analogous to
+    StopIteration.
+
+    An optional return-value can be included as the argument to the exception;
+    this return-value will be returned by LoopingCall.wait()
+
+    """
+
+    def __init__(self, retvalue=True):
+        """:param retvalue: Value that LoopingCall.wait() should return."""
+        self.retvalue = retvalue
+
+
+class LoopingCall(object):
+    def __init__(self, f=None, *args, **kw):
+        self.args = args
+        self.kw = kw
+        self.f = f
+        self._running = False
+
+    def start(self, interval, now=True):
+        self._running = True
+        done = event.Event()
+
+        def _inner():
+            if not now:
+                greenthread.sleep(interval)
+            try:
+                while self._running:
+                    self.f(*self.args, **self.kw)
+                    if not self._running:
+                        break
+                    greenthread.sleep(interval)
+            except LoopingCallDone, e:
+                self.stop()
+                done.send(e.retvalue)
+            except Exception:
+                LOG.exception(_('in looping call'))
+                done.send_exception(*sys.exc_info())
+                return
+            else:
+                done.send(True)
+
+        self.done = done
+
+        greenthread.spawn(_inner)
+        return self.done
+
+    def stop(self):
+        self._running = False
+
+    def wait(self):
+        return self.done.wait()
+
index a425a20430337767a3b517b0e7e74dc729602d5c..fb621cc3f9a2d4e891fd9d47d9c2c5645824a697 100644 (file)
@@ -20,7 +20,7 @@
 import copy
 import logging
 
-from heat import exception
+from heat.common import exception
 from heat.openstack.common import cfg
 from heat.common import config