def fetch_server(self, server_id): """Fetch fresh server object from Nova. Log warnings and return None for non-critical API errors. Use this method in various ``check_*_complete`` resource methods, where intermittent errors can be tolerated. """ server = None try: server = self.client().servers.get(server_id) except exceptions.OverLimit as exc: LOG.warning(_LW("Received an OverLimit response when " "fetching server (%(id)s) : %(exception)s"), {'id': server_id, 'exception': exc}) except exceptions.ClientException as exc: if ((getattr(exc, 'http_status', getattr(exc, 'code', None)) in (500, 503))): LOG.warning(_LW("Received the following exception when " "fetching server (%(id)s) : %(exception)s"), {'id': server_id, 'exception': exc}) else: raise return server
def stop_sandbox(self, context, sandbox_id): elevated = context.elevated() novaclient = nova.NovaClient(elevated) server_name = self._find_server_by_container_id(sandbox_id) if not server_name: LOG.warning( _LW("Cannot find server name for sandbox %s") % sandbox_id) return novaclient.stop_server(server_name)
def get_addresses(self, server): """Return the server's IP address, fetching it from Nova.""" try: server_id = self.get_server_id(server) server = self.client().servers.get(server_id) except exceptions.NotFound as ex: LOG.warning(_LW('Instance (%(server)s) not found: %(ex)s'), {'server': server, 'ex': ex}) else: return server.addresses
def refresh_server(self, server): """Refresh server's attributes. Also log warnings for non-critical API errors. """ try: server.get() except exceptions.OverLimit as exc: LOG.warning(_LW("Server %(name)s (%(id)s) received an OverLimit " "response during server.get(): %(exception)s"), {'name': server.name, 'id': server.id, 'exception': exc}) except exceptions.ClientException as exc: if ((getattr(exc, 'http_status', getattr(exc, 'code', None)) in (500, 503))): LOG.warning(_LW('Server "%(name)s" (%(id)s) received the ' 'following exception during server.get(): ' '%(exception)s'), {'name': server.name, 'id': server.id, 'exception': exc}) else: raise
def safe_rstrip(value, chars=None): """Removes trailing characters from a string if that does not make it empty :param value: A string value that will be stripped. :param chars: Characters to remove. :return: Stripped value. """ if not isinstance(value, six.string_types): LOG.warning( _LW("Failed to remove trailing character. Returning original object. " "Supplied object is not a string: %s."), value) return value return value.rstrip(chars) or value
def get_sandbox_id(self, container): if container.meta: return container.meta.get('sandbox_id', None) else: LOG.warning(_LW("Unexpected missing of sandbox_id")) return None