'Starting an instance on this host.'

@wrap_exception()
@reverts_task_state
@wrap_instance_event(prefix='compute')
@wrap_instance_fault
def start_instance(self, context, instance):

    self._notify_about_instance_usage(context, instance, 'power_on.start')
    compute_utils.notify_about_instance_action(context, instance, self.host, action=fields.NotificationAction.POWER_ON, phase=fields.NotificationPhase.START)
    self._power_on(context, instance)
    instance.power_state = self._get_power_state(context, instance)
    instance.vm_state = vm_states.ACTIVE
    instance.task_state = None
    snapshot_id = instance.system_metadata.get('shelved_image_id')
    if snapshot_id:
        self._delete_snapshot_of_shelved_instance(context, instance, snapshot_id)
    compute_utils.remove_shelved_keys_from_system_metadata(instance)
    instance.save(expected_task_state=task_states.POWERING_ON)
    self._notify_about_instance_usage(context, instance, 'power_on.end')
    compute_utils.notify_about_instance_action(context, instance, self.host, action=fields.NotificationAction.POWER_ON, phase=fields.NotificationPhase.END)
