5353: Explicitly set size field on node objects returned by list_nodes on AWS and...
authorPeter Amstutz <peter.amstutz@curoverse.com>
Thu, 19 Nov 2015 18:32:44 +0000 (13:32 -0500)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Thu, 19 Nov 2015 18:32:44 +0000 (13:32 -0500)
services/nodemanager/arvnodeman/computenode/driver/__init__.py
services/nodemanager/arvnodeman/computenode/driver/azure.py
services/nodemanager/arvnodeman/computenode/driver/ec2.py

index 14e804f385dc3e957fd707c34e7e4504ed1951e7..06b532ac5618d79915478930d05072278ad3753f 100644 (file)
@@ -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
 
index b1ec5e6abc95e923e1b6583d3c33e49a3247368d..cfa529bbbd3448744c3e0d3ceabb1c0de6cdf6ac 100644 (file)
@@ -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")
index 6afe3163c9cf89bb287ca3c0a904311345a36555..c0a72b7235f6137c0c92e321edc547e5e91ead0f 100644 (file)
@@ -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