2017-02-06 6 views
0

У меня есть настольное приложение для Windows, которое управляет или автоматизирует функции VMware. Я хочу переименовать существующий снимок и обновить его с помощью следующего потока, но я не вижу никакого vmware API для переименования существующего моментального снимка. Может ли кто-нибудь предоставить мне информацию о том, как переименовать моментальный снимок vmware? БлагодаряRename vmware snapshot

Нажмите на 'Регистрация и инициировать снимок' -> Инициировать Гость VM Shutdown-> Переименовать текущий Snapshot- SS1 в Temp-SS1-> Возьмите новый снимок с текущим именем снимка (т.е. SS1) -> удалить предыдущий переименованный моментальный снимок (т.е. Temp-SS1).

+0

Можете ли вы разместить соответствующий код? –

+0

VirtualMachine vmObject = (VirtualMachine) vimClient.FindEntityViews (typeof (VirtualMachine), null, filter, null) .FirstOrDefault(); if (vmObject! = Null) { vmObject.ShutdownGuest(); \t \t \t \t \t "Здесь я хочу переименовать мой предыдущий снимок (SS в 'Temp SS1'!)" \t \t \t \t \t vmObject.CreateSnapshot (snapShotName, snapShotDescription, ложь, ложь); } – user7393522

ответ

0

Выше может быть сделано простым следующими двумя способами:

public bool CreateSnapShot(string vmName, string snapShotName, string snapShotDescription, bool replaceSnapShot, string currentSnapShotName) 
    { 
     try 
     { 
      NameValueCollection filter = new NameValueCollection(); 
      filter.Add(Constants.VM_FILTER_NAME, vmName); 

      ManagedObjectReference snapShotMor = null; 
      VirtualMachine vmObject = (VirtualMachine) vimClient.FindEntityViews(typeof(VirtualMachine), null, filter, null).FirstOrDefault(); 
      if (vmObject != null) 
      { 
       if (vmObject.Runtime.PowerState == VirtualMachinePowerState.poweredOn) 
        vmObject.ShutdownGuest(); 
       while (vmObject.Runtime.PowerState == VirtualMachinePowerState.poweredOn) 
       { 
        Thread.Sleep(5000); 
        vmObject.UpdateViewData();//This will refresh VM object state 
       } 

       if (replaceSnapShot && currentSnapShotName!= "") 
       { 
        if (RenameSnapshot(snapShotName, vmObject)) 
         snapShotMor = vmObject.CreateSnapshot(snapShotName, snapShotDescription, false, false); 
       } 
       else snapShotMor = vmObject.CreateSnapshot(snapShotName, snapShotDescription, false, false); 

       if (snapShotMor != null) 
        return true; 
       else return false; 
      } 
      else return false; 
     } 
     catch (Exception ex) 
     { 
      return false; 
     }   
    } 

Снимок переименование можно сделать с помощью следующего метода:

public bool RenameSnapshot(string snapShotName, VirtualMachine vmObject) 
    { 
     try 
     {             
      ManagedObjectReference snapshotObject = vmObject.Snapshot.CurrentSnapshot; 
      VirtualMachineSnapshot currentSnapshotName = new VirtualMachineSnapshot(vimClient, snapshotObject); 
      currentSnapshotName.RenameSnapshot("Temp-" + snapShotName, "Renamed for deletion"); 

      return true; 
     } 

     catch (Exception ex) 
     { 
      return false; 
     } 
    } 

После выполнения указанных выше двух шагов, которые вы можете удалить переименованы (Temp) снимок.

 Смежные вопросы

  • Нет связанных вопросов^_^