8561: rather than getting node's ipadd, use it's ec2_instance_id
authorradhika <radhika@curoverse.com>
Tue, 15 Mar 2016 00:19:28 +0000 (20:19 -0400)
committerradhika <radhika@curoverse.com>
Tue, 15 Mar 2016 00:19:28 +0000 (20:19 -0400)
services/nodemanager/arvnodeman/computenode/dispatch/__init__.py
services/nodemanager/arvnodeman/computenode/driver/__init__.py
services/nodemanager/arvnodeman/computenode/driver/azure.py
services/nodemanager/arvnodeman/computenode/driver/ec2.py
services/nodemanager/arvnodeman/computenode/driver/gce.py

index a239f1f252b5998d4e38a7bddbb0d7d4acdec3b3..4d1acf5367d076ac7a952dc1d0e4b2ded7414c87 100644 (file)
@@ -406,7 +406,7 @@ class ComputeNodeMonitorActor(config.actor_class):
         first_ping_s = arvados_node.get('first_ping_at')
         if (self.arvados_node is not None) or (not first_ping_s):
             return None
-        elif ((arvados_node['ip_address'] in self.cloud_node.private_ips) and
+        elif ((arvados_node['info'].get('ec2_instance_id') == self._cloud.node_id(self.cloud_node)) and
               (arvados_timestamp(first_ping_s) >= self.cloud_node_start_time)):
             self._later.update_arvados_node(arvados_node)
             return self.cloud_node.id
index 9bdcc5f7a123e5a0d15dc237e2144bfe5358fdb4..d72c86dc0afacc05c271c4beaa6b32a46c000c70 100644 (file)
@@ -196,6 +196,11 @@ class BaseComputeNodeDriver(RetryMixin):
             lambda self, value: setattr(self.real, attr_name, value),
             doc=getattr(getattr(NodeDriver, attr_name), '__doc__', None))
 
+    # node id
+    @classmethod
+    def node_id(cls):
+        raise NotImplementedError("BaseComputeNodeDriver.node_id")
+
     _locals = locals()
     for _attr_name in dir(NodeDriver):
         if (not _attr_name.startswith('_')) and (_attr_name not in _locals):
index fbae522499651653158463d1e8debc0c34294600..167d8b3210937acc226eaa1b5d41e333225b4176 100644 (file)
@@ -77,7 +77,7 @@ echo %s > /var/tmp/arv-node-data/meta-data/instance-type
         # Azure only supports filtering node lists by resource group.
         # Do our own filtering based on tag.
         nodes = [node for node in
-                super(ComputeNodeDriver, self).list_nodes()
+                super(ComputeNodeDriver, self).list_nodes(ex_fetch_nic=False)
                 if node.extra["tags"].get("arvados-class") == self.tags["arvados-class"]]
         for n in nodes:
             # Need to populate Node.size
@@ -98,3 +98,7 @@ echo %s > /var/tmp/arv-node-data/meta-data/instance-type
     @classmethod
     def node_start_time(cls, node):
         return arvados_timestamp(node.extra["tags"].get("booted_at"))
+
+    @classmethod
+    def node_id(cls, node):
+        return node.name
index 991a2983c7217f1a29368293513587d117d01d59..d314d38986e0df62a3c79624c28e77c7630cdbb6 100644 (file)
@@ -92,3 +92,7 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         time_str = node.extra['launch_time'].split('.', 2)[0] + 'UTC'
         return time.mktime(time.strptime(
                 time_str,'%Y-%m-%dT%H:%M:%S%Z')) - time.timezone
+
+    @classmethod
+    def node_id(cls, node):
+        return node.id
index bbabdd4c761b5a0e3809449878227adea7db0a5a..be9988333b60ae4a9bae2711fe8c50b4f65831d2 100644 (file)
@@ -163,3 +163,7 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
                     node.extra['metadata']['items'], 'booted_at'))
         except KeyError:
             return 0
+
+    @classmethod
+    def node_id(cls, node):
+        return node.id