'Suspend an instance.
Note we do not wait for the SUSPENDED state, this is polled for by
check_suspend_complete in a similar way to the create logic so we can
take advantage of coroutines.'

def handle_suspend(self):

    if (self.resource_id is None):
        raise exception.Error((_('Cannot    suspend    %s,    resource_id    not    set') % self.name))
    try:
        server = self.client().servers.get(self.resource_id)
    except Exception as e:
        if self.client_plugin().is_not_found(e):
            raise exception.NotFound((_('Failed    to    find    instance    %s') % self.resource_id))
        else:
            raise
    else:
        if (self.client_plugin().get_status(server) != 'SUSPENDED'):
            LOG.debug('suspending    instance    %s', self.resource_id)
            server.suspend()
        return server.id
