From: Peter Amstutz Date: Thu, 19 Nov 2015 18:32:44 +0000 (-0500) Subject: 5353: Explicitly set size field on node objects returned by list_nodes on AWS and... X-Git-Tag: 1.1.0~1244^2~1 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/23c3347fe9779c3826179285de86e8540d46d749 5353: Explicitly set size field on node objects returned by list_nodes on AWS and Azure. --- diff --git a/services/nodemanager/arvnodeman/computenode/driver/__init__.py b/services/nodemanager/arvnodeman/computenode/driver/__init__.py index 14e804f385..06b532ac56 100644 --- a/services/nodemanager/arvnodeman/computenode/driver/__init__.py +++ b/services/nodemanager/arvnodeman/computenode/driver/__init__.py @@ -53,6 +53,8 @@ class BaseComputeNodeDriver(object): if new_pair is not None: self.create_kwargs[new_pair[0]] = new_pair[1] + self.sizes = {sz.id: sz for sz in self.real.list_sizes()} + def _init_ping_host(self, ping_host): self.ping_host = ping_host diff --git a/services/nodemanager/arvnodeman/computenode/driver/azure.py b/services/nodemanager/arvnodeman/computenode/driver/azure.py index b1ec5e6abc..cfa529bbbd 100644 --- a/services/nodemanager/arvnodeman/computenode/driver/azure.py +++ b/services/nodemanager/arvnodeman/computenode/driver/azure.py @@ -88,6 +88,14 @@ class ComputeNodeDriver(BaseComputeNodeDriver): # of failure that the Azure libcloud driver doesn't know how to interpret. return (cloud_node.state in (cloud_types.NodeState.ERROR, cloud_types.NodeState.UNKNOWN)) + 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["properties"]["hardwareProfile"]["vmSize"]] + return nodes + @classmethod def node_fqdn(cls, node): return node.extra["tags"].get("hostname") diff --git a/services/nodemanager/arvnodeman/computenode/driver/ec2.py b/services/nodemanager/arvnodeman/computenode/driver/ec2.py index 6afe3163c9..c0a72b7235 100644 --- a/services/nodemanager/arvnodeman/computenode/driver/ec2.py +++ b/services/nodemanager/arvnodeman/computenode/driver/ec2.py @@ -75,6 +75,14 @@ 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