Merge branch '8497-datamanager-batchsize-1000' of https://github.com/wtsi-hgi/arvados...
[arvados.git] / services / nodemanager / arvnodeman / computenode / driver / ec2.py
index 255a948a6c3aa0ee2c17ae1581685d282c341813..991a2983c7217f1a29368293513587d117d01d59 100644 (file)
@@ -52,19 +52,10 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         super(ComputeNodeDriver, self).__init__(
             auth_kwargs, {'ex_filters': list_kwargs}, create_kwargs,
             driver_class)
-        for key in self.create_kwargs.keys():
-            init_method = getattr(self, '_init_' + key, None)
-            if init_method is not None:
-                new_pair = init_method(self.create_kwargs.pop(key))
-                if new_pair is not None:
-                    self.create_kwargs[new_pair[0]] = new_pair[1]
 
     def _init_image_id(self, image_id):
         return 'image', self.search_for(image_id, 'list_images')
 
-    def _init_ping_host(self, ping_host):
-        self.ping_host = ping_host
-
     def _init_security_groups(self, group_names):
         return 'ex_security_groups', [
             self.search_for(gname.strip(), 'ex_get_security_groups')
@@ -73,20 +64,9 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
     def _init_subnet_id(self, subnet_id):
         return 'ex_subnet', self.search_for(subnet_id, 'ex_list_subnets')
 
-    def _init_ssh_key(self, filename):
-        with open(filename) as ssh_file:
-            key = cloud_base.NodeAuthSSHKey(ssh_file.read())
-        return 'auth', key
-
-    def arvados_create_kwargs(self, arvados_node):
-        result = {'name': arvados_node_fqdn(arvados_node)}
-        ping_secret = arvados_node['info'].get('ping_secret')
-        if ping_secret is not None:
-            ping_url = ('https://{}/arvados/v1/nodes/{}/ping?ping_secret={}'.
-                        format(self.ping_host, arvados_node['uuid'],
-                               ping_secret))
-            result['ex_userdata'] = ping_url
-        return result
+    def arvados_create_kwargs(self, size, arvados_node):
+        return {'name': arvados_node_fqdn(arvados_node),
+                'ex_userdata': self._make_ping_url(arvados_node)}
 
     def post_create_node(self, cloud_node):
         self.real.ex_create_tags(cloud_node, self.tags)
@@ -95,6 +75,18 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         self.real.ex_create_tags(cloud_node,
                                  {'Name': arvados_node_fqdn(arvados_node)})
 
+    def list_nodes(self):
+        # Need to populate Node.size
+        nodes = super(ComputeNodeDriver, self).list_nodes()
+        for n in nodes:
+            if not n.size:
+                n.size = self.sizes[n.extra["instance_type"]]
+        return nodes
+
+    @classmethod
+    def node_fqdn(cls, node):
+        return node.name
+
     @classmethod
     def node_start_time(cls, node):
         time_str = node.extra['launch_time'].split('.', 2)[0] + 'UTC'