8816: ComputeNodeUpdateActor._throttle_errors logs errors instead of re-throwing...
[arvados.git] / services / nodemanager / arvnodeman / computenode / driver / azure.py
index c39000017e0346e16f778872aeac920872468749..167d8b3210937acc226eaa1b5d41e333225b4176 100644 (file)
@@ -2,6 +2,7 @@
 
 from __future__ import absolute_import, print_function
 
+import pipes
 import time
 
 import libcloud.compute.base as cloud_base
@@ -37,7 +38,7 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
             auth_kwargs, list_kwargs, create_kwargs,
             driver_class)
 
-    def arvados_create_kwargs(self, arvados_node):
+    def arvados_create_kwargs(self, size, arvados_node):
         cluster_id, _, node_id = arvados_node['uuid'].split('-')
         name = 'compute-{}-{}'.format(node_id, cluster_id)
         tags = {
@@ -47,9 +48,13 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         tags.update(self.tags)
 
         customdata = """#!/bin/sh
-mkdir -p /var/tmp/arv-node-data/meta-data
-echo "%s" > /var/tmp/arv-node-data/arv-ping-url
-""" % (tags['arv-ping-url'])
+mkdir -p    /var/tmp/arv-node-data/meta-data
+echo %s > /var/tmp/arv-node-data/arv-ping-url
+echo %s > /var/tmp/arv-node-data/meta-data/instance-id
+echo %s > /var/tmp/arv-node-data/meta-data/instance-type
+""" % (pipes.quote(tags['arv-ping-url']),
+       pipes.quote(name),
+       pipes.quote(size.id))
 
         return {
             'name': name,
@@ -72,7 +77,7 @@ echo "%s" > /var/tmp/arv-node-data/arv-ping-url
         # 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
@@ -93,3 +98,7 @@ echo "%s" > /var/tmp/arv-node-data/arv-ping-url
     @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