def restore_metadata_items()

in gce_rescue/tasks/metadata.py [0:0]


def restore_metadata_items(vm, remove_rescue_mode: bool = False) -> Dict:
  """Restore original metadata.items after the instance is running again."""

  vm.refresh_fingerprint()

  if not remove_rescue_mode:
    vm.backup_items.append({ 'key': 'rescue-mode', 'value': vm.ts })
  else:
    vm.backup_items.remove({ 'key': 'rescue-mode', 'value': vm.ts })

  metadata_body = {
    'fingerprint': vm.data['metadata']['fingerprint'],
    'items': vm.backup_items
  }
  _logger.info('Restoring original metadata...')

  # gce-rescue/issues/21 - continue after wait period timed out
  if not remove_rescue_mode:
    wait_for_os_boot(vm)

  operation = vm.compute.instances().setMetadata(
    **vm.project_data,
    instance = vm.name,
    body = metadata_body).execute()
  result = wait_for_operation(vm, oper=operation)
  return result