13822: Don't call list_sizes() in cloud client constructor.
[arvados.git] / services / nodemanager / arvnodeman / computenode / driver / __init__.py
index fb8db517337465a40a83dd53ae9878d419850ca7..22ffa24079b6d32ea05a6d7daa9dc3aab777f867 100644 (file)
@@ -35,8 +35,10 @@ class BaseComputeNodeDriver(RetryMixin):
         return driver_class(**auth_kwargs)
 
     @RetryMixin._retry()
-    def _set_sizes(self):
-        self.sizes = {sz.id: sz for sz in self.real.list_sizes()}
+    def sizes(self):
+        if self._sizes is None:
+            self._sizes = {sz.id: sz for sz in self.real.list_sizes()}
+        return self._sizes
 
     def __init__(self, auth_kwargs, list_kwargs, create_kwargs,
                  driver_class, retry_wait=1, max_retry_wait=180):
@@ -73,7 +75,7 @@ class BaseComputeNodeDriver(RetryMixin):
                 if new_pair is not None:
                     self.create_kwargs[new_pair[0]] = new_pair[1]
 
-        self._set_sizes()
+        self._sizes = None
 
     def _init_ping_host(self, ping_host):
         self.ping_host = ping_host
@@ -127,7 +129,7 @@ class BaseComputeNodeDriver(RetryMixin):
         try:
             return self.real.list_nodes(**l)
         except CLOUD_ERRORS:
-            tracker.counter_add('cloud_errors')
+            tracker.counter_add('list_nodes_errors')
             raise
 
     def create_cloud_name(self, arvados_node):
@@ -186,7 +188,7 @@ class BaseComputeNodeDriver(RetryMixin):
             try:
                 return self.search_for_now(kwargs['name'], 'list_nodes', self._name_key)
             except ValueError:
-                tracker.counter_add('cloud_errors')
+                tracker.counter_add('create_node_errors')
                 raise create_error
 
     def post_create_node(self, cloud_node):
@@ -229,7 +231,7 @@ class BaseComputeNodeDriver(RetryMixin):
                 # it, which means destroy_node actually succeeded.
                 return True
             # The node is still on the list.  Re-raise.
-            tracker.counter_add('cloud_errors')
+            tracker.counter_add('destroy_node_errors')
             raise
 
     # Now that we've defined all our own methods, delegate generic, public