суббота, 13 августа 2016 г.

Windows Azure Pack. После обновления до UR10 неактивна кнопка "Detach".


Обнаружил данную проблему случайно, когда просматривал технет. Она оказалась довольно неприятным сюрпризом. Увы, но вот детач ISO и VHDX  после обновления я не проверил. Клиенты, как ни странно, тоже. Для устранения данной проблемы необходимо немного подправить функцию, отвечающую за статус кнопки (enabled).
Надо выполнить:

1. Зайти на сервер, где находится сайт WAP Tenant.
2. Открыть в редакторе файл:
C:\inetpub\MgmtSvc-TenantSite\Content\VM\Scripts\Commands\VM.Command.VirtualMachine.Detach.js
3. Найти строки и исправить.
Было:
            return navigationContext.extension === global.VMExtension.name &&
                   navigationContext.viewName === constants.tabId.vmConfigTabId &&
                   dataContext.activeVM &&
                   dataContext.activeVM.status &&
                   utility.canDetach(dataContext.activeVM.status) &&
                   configViewModel &&
                   configViewModel.selectedDevice &&
                   !isOSDisk &&
                  !isDataDisk &&
                   isDetachingNetworkAdapterAllowed;

Стало:

            return navigationContext.extension === global.VMExtension.name &&
                   navigationContext.viewName === constants.tabId.vmConfigTabId &&
                   dataContext.activeVM &&
                   dataContext.activeVM.status &&
                   utility.canDetach(dataContext.activeVM.status) &&
                   configViewModel &&
                   configViewModel.selectedDevice &&
                   !isOSDisk &&
                  !isDataDisk;
//                   isDetachingNetworkAdapterAllowed;

4. Ожидать следующий CU, где этот баг пофиксят.




2 комментария:

  1. Добрый день.

    В вашем варианте тогда появляется возможность отключать сетевые интерфейсы при включенной ВМ.

    Попробуйте так сделать:

    /// To detach NICs, VM can be in Stopped/Running state.
    /// For attaching network adapter when VM is in Running state, host should be TH and VM should be of Generation 2 type.
    if (configViewModel &&
    configViewModel.selectedDevice &&
    configViewModel.selectedDevice.deviceTypeString === constants.vmDeviceType.Network &&
    dataContext.activeVM &&
    dataContext.activeVM.status !== constants.vmStatus.PowerOff) { // &&
    // For attaching/detaching Network Adapter when VM is in running state host OS should be Threshold, as WAP & SPF doesn't have information
    // about the host we are checking for presence of "shielded" property which will be present only if the VM is hosted on a TH host
    // This is a workaround which will be removed once VMM & SPF exposes host OS information to WAP
    //utility.canAttachDetachNIC(dataContext.activeVM.status, dataContext.activeVM.generation, dataContext.activeVM.shielded)) {

    isDetachingNetworkAdapterAllowed = true;
    }

    return navigationContext.extension === global.VMExtension.name &&
    navigationContext.viewName === constants.tabId.vmConfigTabId &&
    dataContext.activeVM &&
    dataContext.activeVM.status &&
    utility.canDetach(dataContext.activeVM.status) &&
    configViewModel &&
    configViewModel.selectedDevice &&
    !isOSDisk &&
    !isDataDisk &&
    !isDetachingNetworkAdapterAllowed;
    },

    ОтветитьУдалить
  2. Дмитрий, точно. Проверил - вы правы, не досмотрел. Одно починил, другое поломал (хотя детач сети не проходит, но лишняя ошибка ведет к лишним вопросам от клиентов). Спасибо! :)

    ОтветитьУдалить