понедельник, 10 октября 2016 г.

Windows Azure Pack. Добавление возможности выбора сети на странице быстрого создания VM.

Есть в Windows Azure Pack  странная особенность - отсутствие возможности выбора подключения к сети при создании виртуальной машины из меню "Быстрое создание". В данной статье предложено решение для устранения этого недостатка.



Автор решения - Сергей Груздов (egel@egel.su)

Для того, чтобы появилось меню выбора сети на странице быстрого создания виртуальной машины, нам необходимо отредактировать три файла.

1. Откроем VM.ViewModel.VMInstance.QuickCreate.js:

notepad C:\inetpub\MgmtSvc-TenantSite\Content\VM\Scripts\ViewModels\VM.ViewModel.VMInstance.QuickCreate.js

Добавим строку в функцию _bind:

     function _bind() {
        this.updateSubscriptions();
        this.updateTemplates();
        this.updateVmShieldingData();
        this.bindEventHandlers();
        this.setVMComputerNameMaxLength();
        this.updateNetworks();
    }

Для функции _populateTemplateValues(template) добавим параметр osType в класс observable:

        $.observable(this.vmData).setProperty({
            templateId: template.id,
            userName: userName,
            isUsernameEditable: userNameEditable,
            shielded: template.shielded,
            osType: template.operatingSystem.osType
        }); 

Отредактируем функцию initializeVMData():

    function initializeVMData() {
        return {
            name: null,
            subscriptionId: null,
            password: null,
            templateId: -1,
            userName: "",
            isUsernameEditable: false,
            shielded: null,
            vmShieldingData: [loadingEntryItem],
            vmShieldingDataId: null,
            stampId: null,
            productKey: null,
            sshKey: null,
            osType: null,
            network: -1,
            vmNetworks: [],
            isNetworkRequired: false,
            isHardwareProfileRequired: true
        };
    }

Добавим две строки в _viewModel:

    _viewModel = global.Shell.Class.define(_init, {
        subscriptions: [loadingEntryItem],
        vmTemplates: [loadingEntryItem],
        vmData: initializeVMData(),
        updateSubscriptions: _updateSubscriptions,
        updateTemplates: _updateTemplates,
        populateTemplateValues: _populateTemplateValues,
        updateVmShieldingData: _updateVmShieldingData,
        setVMComputerNameMaxLength: _setVMComputerNameMaxLength,
        destroy: _destroy,
        bindEventHandlers: _bindEventHandlers,
        unbindEventHandlers: _unbindEventHandlers,
        bind: _bind,
        virtualNetworks: [loadingEntryItem],
        updateNetworks: _updateNetworks
    });

Добавим одну новую функцию - _updateNetworks():

    

2. Выполним правку файла VM.Workflow.VMInstance.QuickCreate.js.

notepad C:\inetpub\MgmtSvc-TenantSite\Content\VM\Scripts\Workflows\VM.Workflow.VMInstance.QuickCreate.js

Заменим содержимое _createVMInstanceStep:



3. Завершающий этап - редактирование страницы быстрого создания виртуальной машины:

notepad C:\inetpub\MgmtSvc-TenantSite\Content\VM\Templates\Menu\VMInstance.QuickCreate.html

В этом файле необходимо найти строку:
<div class="drawer-form-item aux-dialog-shieldingData" data-link="visible{:vmData.shielded}">

 И перед ней добавить форму выбора сети:



Выполняем iisreset и проверяем. Должно получиться так:






Комментариев нет:

Отправить комментарий