docs: def update_vm(vm_ref, vm_config_spec):
      '''
      Updates the virtual machine configuration with the given object
  
      vm_ref
          Virtual machine managed object reference
  
      vm_config_spec
          Virtual machine config spec object to update
      '''
      vm_name = get_managed_object_name(vm_ref)
      log.trace('Updating vm \'%s\'', vm_name)
      try:
          task = vm_ref.ReconfigVM_Task(vm_config_spec)
      except vim.fault.NoPermission as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareApiError(
              'Not enough permissions. Required privilege: '
              '{}'.format(exc.privilegeId))
      except vim.fault.VimFault as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareApiError(exc.msg)
      except vmodl.RuntimeFault as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareRuntimeError(exc.msg)
      vm_ref = wait_for_task(task, vm_name, 'ReconfigureVM Task')
      return vm_ref