Проблема в Отключить сетевую карту Интерфейса VM от VMWare, используя vsphere-automation-sdk.net в c # - PullRequest
0 голосов
/ 01 января 2019

Вот мой код для отключения сетевой карты виртуальной машины в VMware.Он работает отлично, и нет исключений, все учетные данные верны.Он закодирован так же, как указано в документации SDK.Но после запуска, когда я вижу VM на VMWare, там NIC не отключен.Любой, пожалуйста, помогите мне исправить это.Спасибо.

В основном, мы предоставляем нашим клиентам DRaaS.Поэтому для теста DR мы пытаемся создать новый клон виртуальной машины из существующих виртуальных машин на том же VMWare.Но когда мы делаем клон виртуальной машины, ее сетевой адаптер конфликтует с существующей виртуальной машиной.Спасибо.

VMTypes.PlacementSpec vmPlacementSpec = new VMTypes.PlacementSpec();

VMTypes.FilterSpec VMFilterSpec = new VMTypes.FilterSpec();

HashSet<string> datacenters = new HashSet<string>
{
    GetDatacenter(serviceManager, vmModel.DataCenterName)
};

VMFilterSpec.SetNames(new HashSet<String> { vmModel.vmName });
VMFilterSpec.SetDatacenters(datacenters);

VM vmservice = serviceManager.VapiConnection.GetService<VM>();

List<VMTypes.Summary> vmsummarize = vmservice.List(VMFilterSpec);

if (vmsummarize.Count >= 0)
{
    string Vm_Id = vmsummarize[0].GetVm();
    if (Vm_Id != null)
    {
        Network netWork = serviceManager.VapiConnection.GetService<Network>();

            VMTypes.Info VMConfigInfo = vmservice.Get(Vm_Id);
            Dictionary<string, EthernetTypes.Info> dictOfEthernetAdapters = VMConfigInfo.GetNics();
            foreach (var item in dictOfEthernetAdapters)
            {
                EthernetTypes.Info NetworkDetails = item.Value;
                NetworkDetails.SetWakeOnLanEnabled(false);
                NetworkDetails.SetState(ConnectionState.UNRECOVERABLE_ERROR);
                NetworkDetails.SetStartConnected(false);
                NetworkDetails.SetAllowGuestControl(false);
            }
    }
}

1 Ответ

0 голосов
/ 08 января 2019

Наконец я сделал это сам.Я нашел для отключения NIC, я должен выключить и затем включен.Спасибо за просмотр моего вопроса всем, кто смотрел.

VMTypes.PlacementSpec vmPlacementSpec = new VMTypes.PlacementSpec();

        VMTypes.FilterSpec VMFilterSpec = new VMTypes.FilterSpec();

        HashSet<string> datacenters = new HashSet<string>
        {
            GetDatacenter(serviceManager, vmModel.DataCenterName)
        };

        VMFilterSpec.SetNames(new HashSet<String> { vmModel.vmName });
        VMFilterSpec.SetDatacenters(datacenters);

        VM vmservice = serviceManager.VapiConnection.GetService<VM>();

        List<VMTypes.Summary> vmsummarize = vmservice.List(VMFilterSpec);

        if (vmsummarize.Count >= 0)
        {
            string Vm_Id = vmsummarize[0].GetVm();
            if (Vm_Id != null)
            {
                Power power = serviceManager.VapiConnection.GetService<Power>();
                Network netWork = serviceManager.VapiConnection.GetService<Network>();
                PowerTypes.Info powertype = power.Get(Vm_Id);

                if (powertype.GetState().Name == "POWERED_ON")
                {
                    Console.WriteLine("Power Off starting ");
                    power.Stop(Vm_Id);
                    Console.WriteLine("Powered Off Now ");

                    VMTypes.Info VMConfigInfo = vmservice.Get(Vm_Id);
                    Dictionary<string, EthernetTypes.Info> dictOfEthernetAdapters = VMConfigInfo.GetNics();
                    foreach (var item in dictOfEthernetAdapters)
                    {
                        EthernetTypes.Info NetworkDetails = item.Value;
                        NetworkDetails.SetWakeOnLanEnabled(false);
                        NetworkDetails.SetState(ConnectionState.UNRECOVERABLE_ERROR);
                        NetworkDetails.SetStartConnected(false);
                        NetworkDetails.SetAllowGuestControl(false);
                    }
                    Console.WriteLine("Power ON starting ");
                    power.Start(Vm_Id);
                    Console.WriteLine("Powered ON Now ");
                }
                else if (powertype.GetState().Name == "POWERED_OFF")
                {
                    VMTypes.Info VMConfigInfo = vmservice.Get(Vm_Id);
                    Dictionary<string, EthernetTypes.Info> dictOfEthernetAdapters = VMConfigInfo.GetNics();
                    foreach (var item in dictOfEthernetAdapters)
                    {
                        EthernetTypes.Info NetworkDetails = item.Value;
                        NetworkDetails.SetWakeOnLanEnabled(false);
                        NetworkDetails.SetState(ConnectionState.UNRECOVERABLE_ERROR);
                        NetworkDetails.SetStartConnected(false);
                        NetworkDetails.SetAllowGuestControl(false);
                    }
                    Console.WriteLine("Powered ON started ");
                    power.Start(Vm_Id);
                    Console.WriteLine("Powered ON Now ");
                }
            }
        }
        else
        {
            Console.WriteLine("Index was out of range");
        }
...