'Unshelve the instance.
:param context: request context
:param instance: a nova.objects.instance.Instance object
:param image: an image to build from.  If None we assume a
volume backed instance.
:param filter_properties: dict containing limits, retry info etc.
:param node: target compute node'

@wrap_exception()
@reverts_task_state
@wrap_instance_event(prefix='compute')
@wrap_instance_fault
def unshelve_instance(self, context, instance, image, filter_properties, node):

    if (filter_properties is None):
        filter_properties = {}
    @utils.synchronized(instance.uuid)
    def do_unshelve_instance():
        self._unshelve_instance(context, instance, image, filter_properties, node)
    do_unshelve_instance()
