function getCustomImageProperties()

in tasks/Node/src/tasks/AzureDtlCreateCustomImage/task.ts [33:78]


function getCustomImageProperties(sourceVmId: string, osType: string, linuxOsState: string, windowsOsState: string): DevTestLabsModels.CustomImagePropertiesFromVm {
    const properties = Object.create(DevTestLabsMappers.CustomImagePropertiesFromVm);
    properties.sourceVmId = sourceVmId;

    switch (osType) {
        case 'Linux':
            const linuxOsInfo: DevTestLabsModels.LinuxOsInfo = Object.create(DevTestLabsMappers.LinuxOsInfo);
            switch (linuxOsState) {
                case ('NonDeprovisioned'):
                    linuxOsInfo.linuxOsState = "NonDeprovisioned";
                    break;
                case ('DeprovisionRequested'):
                    linuxOsInfo.linuxOsState = "DeprovisionRequested";
                    break;
                case ('DeprovisionApplied'):
                    linuxOsInfo.linuxOsState = "DeprovisionApplied";
                    break;
                default:
                    throw `Invalid Linux OS State: ${linuxOsState ? linuxOsState : 'undefined'}. Expecting on of 'NonDeprovisioned' or 'DeprovisionRequested' or 'DeprovisionApplied'.`;
            }
            properties.linuxOsInfo = linuxOsInfo;
            break;
        case 'Windows':
            const windowsOsInfo: DevTestLabsModels.WindowsOsInfo = Object.create(DevTestLabsMappers.WindowsOsInfo);

            switch (windowsOsState) {
                case ('SysprepRequested'):
                    windowsOsInfo.windowsOsState = "SysprepRequested";
                    break;
                case ('NonSysprepped'):
                    windowsOsInfo.windowsOsState = "NonSysprepped";
                    break;
                case ('SysprepApplied'):
                    windowsOsInfo.windowsOsState = "SysprepApplied";
                    break;
                default:
                    throw `Invalid Windows OS State: ${windowsOsState ? windowsOsState : 'undefined'}. Expecting one of 'SysprepRequested' or 'NonSysprepped' or 'SysprepApplied'.`;
            }
            properties.windowsOsInfo = windowsOsInfo;
            break;
        default:
            throw `Invalid OS Type: ${osType ? osType : 'undefined'}. Expecting one of 'Linux' or 'Windows'.`;
    }

    return properties;
}