X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/02c1d68ab5eeafffb09482d0432f8c4a6cb6dfca..9fdfd5c5b229ea42193710f891e953b452bd90e7:/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 9670c9c62b..9300645c38 100644 --- a/services/nodemanager/arvnodeman/computenode/driver/ec2.py +++ b/services/nodemanager/arvnodeman/computenode/driver/ec2.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 from __future__ import absolute_import, print_function @@ -49,12 +52,15 @@ class ComputeNodeDriver(BaseComputeNodeDriver): self.tags = {key[4:]: value for key, value in list_kwargs.iteritems() if key.startswith('tag:')} + # Tags are assigned at instance creation time + create_kwargs.setdefault('ex_metadata', {}) + create_kwargs['ex_metadata'].update(self.tags) super(ComputeNodeDriver, self).__init__( auth_kwargs, {'ex_filters': list_kwargs}, create_kwargs, 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', [ @@ -73,9 +79,10 @@ class ComputeNodeDriver(BaseComputeNodeDriver): scratch = int(size.scratch / 1000) + 1 if scratch > size.disk: volsize = scratch - size.disk - if volsize < 1: - volsize = 1 if volsize > 16384: + # Must be 1-16384 for General Purpose SSD (gp2) devices + # https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html + self._logger.warning("Requested EBS volume size %d is too large, capping size request to 16384 GB", volsize) volsize = 16384 kw["ex_blockdevicemappings"] = [{ "DeviceName": "/dev/xvdt", @@ -86,9 +93,6 @@ class ComputeNodeDriver(BaseComputeNodeDriver): }}] return kw - def post_create_node(self, cloud_node): - self.real.ex_create_tags(cloud_node, self.tags) - def sync_node(self, cloud_node, arvados_node): self.real.ex_create_tags(cloud_node, {'Name': arvados_node_fqdn(arvados_node)})