4137: Fix bad state reference in Node Manager daemon.
authorBrett Smith <brett@curoverse.com>
Wed, 22 Oct 2014 19:13:09 +0000 (15:13 -0400)
committerBrett Smith <brett@curoverse.com>
Wed, 22 Oct 2014 19:13:20 +0000 (15:13 -0400)
Refs #4137.

services/nodemanager/arvnodeman/daemon.py
services/nodemanager/tests/test_daemon.py

index 803e9baa982d5b05270db0652bfbd2c273fdd306..6ea3cdf4291393edb18088d5ed26122c499fd3bf 100644 (file)
@@ -161,8 +161,8 @@ class NodeManagerDaemonActor(actor_class):
         self._update_poll_time('cloud_nodes')
         for key, node in self.cloud_nodes.update_from(nodelist):
             self._logger.info("Registering new cloud node %s", key)
-            if key in self.booting:
-                record = self.booting.pop(key)
+            if key in self.booted:
+                record = self.booted.pop(key)
             else:
                 record = self._new_node(node)
             self.cloud_nodes.add(record)
index eb625be5ad917285f0ef3ca36014619838ab79cc..869ae4a9a4213c249780b9aeb56502886487bbf6 100644 (file)
@@ -130,6 +130,13 @@ class NodeManagerDaemonActorTestCase(testutil.ActorTestMixin,
         self.daemon.node_up(setup).get(self.TIMEOUT)
         self.assertEqual(1, self.node_factory.start.call_count)
 
+    def test_no_duplication_when_booted_node_listed(self):
+        cloud_node = testutil.cloud_node_mock(2)
+        setup = self.start_node_boot(cloud_node, id_num=2)
+        self.daemon.node_up(setup)
+        self.daemon.update_cloud_nodes([cloud_node]).get(self.TIMEOUT)
+        self.assertEqual(1, self.node_factory.start.call_count)
+
     def test_node_counted_after_boot_with_slow_listing(self):
         # Test that, after we boot a compute node, we assume it exists
         # even it doesn't appear in the listing (e.g., because of delays