From a74f2a3ca4e26c451a002f9a89f3ba4ac4a083c4 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Wed, 18 Aug 2010 18:32:08 -0700 Subject: fix report state --- nova/compute/service.py | 26 -------------------------- nova/models.py | 2 +- nova/service.py | 13 +++++++------ 3 files changed, 8 insertions(+), 33 deletions(-) diff --git a/nova/compute/service.py b/nova/compute/service.py index 708134072..3909c8245 100644 --- a/nova/compute/service.py +++ b/nova/compute/service.py @@ -81,22 +81,6 @@ class ComputeService(service.Service): pass return defer.succeed(len(self._instances)) - @defer.inlineCallbacks - def report_state(self, nodename, daemon): - # TODO(termie): make this pattern be more elegant. -todd - try: - record = model.Daemon(nodename, daemon) - record.heartbeat() - if getattr(self, "model_disconnected", False): - self.model_disconnected = False - logging.error("Recovered model server connection!") - - except model.ConnectionError, ex: - if not getattr(self, "model_disconnected", False): - self.model_disconnected = True - logging.exception("model server went away") - yield - @defer.inlineCallbacks @exception.wrap_exception def run_instance(self, instance_id, **_kwargs): @@ -214,13 +198,3 @@ class ComputeService(service.Service): "sudo virsh detach-disk %s %s " % (instance_id, target)) volume.finish_detach() defer.returnValue(True) - - -class Group(object): - def __init__(self, group_id): - self.group_id = group_id - - -class ProductCode(object): - def __init__(self, product_code): - self.product_code = product_code diff --git a/nova/models.py b/nova/models.py index 70010eab1..d0b66d9b7 100644 --- a/nova/models.py +++ b/nova/models.py @@ -143,7 +143,7 @@ class Daemon(Base, NovaBase): id = Column(Integer, primary_key=True) node_name = Column(String(255)) #, ForeignKey('physical_node.id')) binary = Column(String(255)) - report_count = Column(Integer) + report_count = Column(Integer, nullable=False, default=0) @classmethod def find_by_args(cls, node_name, binary): diff --git a/nova/service.py b/nova/service.py index 4c35bdefa..29f47e833 100644 --- a/nova/service.py +++ b/nova/service.py @@ -93,12 +93,13 @@ class Service(object, service.Service): try: try: #FIXME abstract this - daemon = models.find_by_args(node_name, binary) - except exception.NotFound(): + daemon = models.Daemon.find_by_args(node_name, binary) + except exception.NotFound: daemon = models.Daemon(node_name=node_name, - binary=binary) - self._update_daemon() - self.commit() + binary=binary, + report_count=0) + self._update_daemon(daemon) + daemon.save() if getattr(self, "model_disconnected", False): self.model_disconnected = False logging.error("Recovered model server connection!") @@ -109,6 +110,6 @@ class Service(object, service.Service): logging.exception("model server went away") yield - def _update_daemon(daemon): + def _update_daemon(self, daemon): """Set any extra daemon data here""" daemon.report_count = daemon.report_count + 1 -- cgit