6507: Filter out "tag_" from create_kwargs.
[arvados.git] / services / nodemanager / arvnodeman / computenode / driver / azure.py
index ecab75ce497a02ecf906d4a5af77090e7204f32c..014b92c9beebbde6e9aece54af272d68bc1d3219 100644 (file)
@@ -3,7 +3,6 @@
 from __future__ import absolute_import, print_function
 
 import time
-from operator import attrgetter
 
 import libcloud.compute.base as cloud_base
 import libcloud.compute.providers as cloud_provider
@@ -19,11 +18,19 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
 
     def __init__(self, auth_kwargs, list_kwargs, create_kwargs,
                  driver_class=DEFAULT_DRIVER):
-        list_kwargs["ex_resource_group"] = create_kwargs["ex_resource_group"]
+
+        if not list_kwargs.get("ex_resource_group"):
+            raise Exception("Must include ex_resource_group in Cloud List configuration (list_kwargs)")
+
+        create_kwargs["ex_resource_group"] = list_kwargs["ex_resource_group"]
 
         self.tags = {key[4:]: value
                      for key, value in create_kwargs.iteritems()
                      if key.startswith('tag_')}
+        # filter out tags from create_kwargs
+        create_kwargs = {key: value
+                         for key, value in create_kwargs.iteritems()
+                         if not key.startswith('tag_')}
         super(ComputeNodeDriver, self).__init__(
             auth_kwargs, list_kwargs, create_kwargs,
             driver_class)
@@ -33,7 +40,7 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         name = 'compute-{}-{}'.format(node_id, cluster_id)
         tags = {
             'booted_at': time.strftime(ARVADOS_TIMEFMT, time.gmtime()),
-            'arv-ping-url': self._make_ping_url(arvados_node),
+            'arv-ping-url': self._make_ping_url(arvados_node)
         }
         tags.update(self.tags)
         return {
@@ -42,16 +49,11 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         }
 
     def sync_node(self, cloud_node, arvados_node):
-        hostname = arvados_node_fqdn(arvados_node)
-        self.real.ex_create_tags(cloud_node.id, {"hostname": hostname})
+        self.real.ex_create_tags(cloud_node,
+                                 {'hostname': arvados_node_fqdn(arvados_node)})
 
     def _init_image(self, urn):
-        return "image", self.list_images(ex_urn=urn)[0]
-
-    def _init_ssh_key(self, filename):
-        with open(filename) as ssh_file:
-            key = cloud_base.NodeAuthSSHKey(ssh_file.read())
-        return 'auth', key
+        return "image", self.get_image(urn)
 
     def list_nodes(self):
         # Azure only supports filtering node lists by resource group.