Brown bag typo bugfix. refs #7031
[arvados.git] / services / nodemanager / arvnodeman / computenode / driver / azure.py
index 014b92c9beebbde6e9aece54af272d68bc1d3219..b1494d02851f0f78b85ddc070a16211983e98b2f 100644 (file)
@@ -7,6 +7,7 @@ import time
 import libcloud.compute.base as cloud_base
 import libcloud.compute.providers as cloud_provider
 import libcloud.compute.types as cloud_types
+from libcloud.common.exceptions import BaseHTTPError
 
 from . import BaseComputeNodeDriver
 from .. import arvados_node_fqdn, arvados_timestamp, ARVADOS_TIMEFMT
@@ -49,12 +50,30 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         }
 
     def sync_node(self, cloud_node, arvados_node):
-        self.real.ex_create_tags(cloud_node,
-                                 {'hostname': arvados_node_fqdn(arvados_node)})
+        try:
+            self.real.ex_create_tags(cloud_node,
+                                     {'hostname': arvados_node_fqdn(arvados_node)})
+            return True
+        except BaseHTTPError as b:
+            return False
 
     def _init_image(self, urn):
         return "image", self.get_image(urn)
 
+    def post_create_node(self, cloud_node):
+        self.real.ex_run_command(cloud_node,
+                                 """bash -c '
+                                 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
+                                 echo "%s" > /var/tmp/arv-node-data/meta-data/local-ipv4
+                                 '""" % (cloud_node.extra["tags"]["arv-ping-url"],
+                                         cloud_node.id,
+                                         cloud_node.extra["properties"]["hardwareProfile"]["vmSize"],
+                                         cloud_node.private_ips[0]),
+                                 timestamp=int(time.time()))
+
     def list_nodes(self):
         # Azure only supports filtering node lists by resource group.
         # Do our own filtering based on tag.