Exemplo n.º 1
0
    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
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
 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