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):
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
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):
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):
# 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