X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2ac65228ff6b32921e6c8194b6c51ce9a710f385..94f2b439783a8e63d6d7b9ba2760f54fc642a8fb:/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 9300645c38..c453b91ccb 100644 --- a/services/nodemanager/arvnodeman/computenode/driver/ec2.py +++ b/services/nodemanager/arvnodeman/computenode/driver/ec2.py @@ -91,18 +91,27 @@ class ComputeNodeDriver(BaseComputeNodeDriver): "VolumeSize": volsize, "VolumeType": "gp2" }}] + if size.preemptable: + # 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