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')
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
+ 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)
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'