'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.'

def fetch_server(self, server_id):

    server = None
    try:
        server = self.client().servers.get(server_id)
    except exceptions.OverLimit as exc:
        LOG.warning('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('Received    the    following    exception    when    fetching    server    (%(id)s)    :    %(exception)s', {'id': server_id, 'exception': exc})
        else:
            raise
    return server
