X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f2019e7042d12088bce45f8c2ad52ec600a4076d..a8bfbac314335eb0bff3f4ff5e856d3c327de31d:/services/nodemanager/arvnodeman/computenode/driver/ec2.py diff --git a/services/nodemanager/arvnodeman/computenode/driver/ec2.py b/services/nodemanager/arvnodeman/computenode/driver/ec2.py index d204d7a8c0..2b15642797 100644 --- a/services/nodemanager/arvnodeman/computenode/driver/ec2.py +++ b/services/nodemanager/arvnodeman/computenode/driver/ec2.py @@ -60,7 +60,7 @@ class ComputeNodeDriver(BaseComputeNodeDriver): driver_class) def _init_image_id(self, image_id): - return 'image', self.search_for(image_id, 'list_images') + return 'image', self.search_for(image_id, 'list_images', ex_owner='self') def _init_security_groups(self, group_names): return 'ex_security_groups', [ @@ -91,18 +91,27 @@ class ComputeNodeDriver(BaseComputeNodeDriver): "VolumeSize": volsize, "VolumeType": "gp2" }}] + if size.preemptible: + # Request a Spot instance for this node + kw['ex_spot_market'] = True return kw def sync_node(self, cloud_node, arvados_node): self.real.ex_create_tags(cloud_node, {'Name': arvados_node_fqdn(arvados_node)}) + def create_node(self, size, arvados_node): + # Set up tag indicating the Arvados assigned Cloud Size id. + self.create_kwargs['ex_metadata'].update({'arvados_node_size': size.id}) + return super(ComputeNodeDriver, self).create_node(size, 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"]] + n.extra['arvados_node_size'] = n.extra.get('tags', {}).get('arvados_node_size') return nodes @classmethod