From 6151cc5cd08f17554d6ab1132c73fd150ec7f010 Mon Sep 17 00:00:00 2001 From: Rena Date: Tue, 2 May 2023 12:30:42 -0700 Subject: [PATCH] Fix cloud service sku values for vm picker table (#2725) * Fix vm size table display for cloud service skus to show the correct capability values * only show OS Disk for virtual machine skus * Fix unit tests --- .../vm-size-picker.component.ts | 3 +++ .../add/vm-size-picker/vm-size-picker.html | 2 +- src/app/models/vm-size.ts | 23 ++++++++++++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.component.ts b/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.component.ts index 5e67256686..47da5419dd 100644 --- a/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.component.ts +++ b/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.component.ts @@ -84,6 +84,7 @@ export class VmSizePickerComponent implements ControlValueAccessor, OnInit, OnCh public prices: OSPricing = null; public categoriesDisplayName = categoriesDisplayName; public basicInput = new FormControl(); + public isCloudService = false; public tableConfig: TableConfig = { sorting: { @@ -135,8 +136,10 @@ export class VmSizePickerComponent implements ControlValueAccessor, OnInit, OnCh let sizes; if (this.osSource === PoolOsSources.IaaS) { sizes = this.vmSizeService.virtualMachineSizes; + this.isCloudService = false; } else { sizes = this.vmSizeService.cloudServiceSizes; + this.isCloudService = true; } this.loadingStatus = LoadingStatus.Loading; this._sizeSub = sizes.subscribe((x) => { diff --git a/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.html b/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.html index d92e4ad89e..e28d439537 100644 --- a/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.html +++ b/src/app/components/pool/action/add/vm-size-picker/vm-size-picker.html @@ -32,7 +32,7 @@
{{size.prettyRAM}}
- +
OS Disk
{{size.prettyOSDiskSize}}
diff --git a/src/app/models/vm-size.ts b/src/app/models/vm-size.ts index 3545aaf813..7be7cebac6 100644 --- a/src/app/models/vm-size.ts +++ b/src/app/models/vm-size.ts @@ -69,11 +69,11 @@ export function mapResourceSkuToVmSize(skuJson: any[]): List { const vmSize: Partial = {}; const capabilities = skuToCapabilities[skuName]; vmSize.name = skuName; - vmSize.numberOfCores = _parseIntOrReturnDefault(capabilities.get("vCPUs")); + vmSize.numberOfCores = _parseIntOrReturnDefault(_getCapabilityDetails(capabilities, "vCPUs", "Cores")); vmSize.numberOfGpus = _parseIntOrReturnDefault(capabilities.get("GPUs")); vmSize.osDiskSizeInMB = _parseIntOrReturnDefault(capabilities.get("OSVhdSizeMB")); - vmSize.resourceDiskSizeInMB = _parseIntOrReturnDefault(capabilities.get("MaxResourceVolumeMB")); - vmSize.memoryInMB = _parseFloatOrReturnDefault(capabilities.get("MemoryGB")) * 1024; + vmSize.resourceDiskSizeInMB = _parseIntOrReturnDefault(_getCapabilityDetails(capabilities, "MaxResourceVolumeMB", "WebWorkerResourceDiskSizeInMb")); + vmSize.memoryInMB = _parseFloatOrReturnDefault(_getCapabilityDetails(capabilities, "MemoryGB", "MemoryInMb")); vmSize.maxDataDiskCount = _parseIntOrReturnDefault(capabilities.get("MaxDataDiskCount")); skuToVmSize.push(new VmSize(vmSize as VmSizeAttributes)); } @@ -92,6 +92,23 @@ function _getCapabilitiesMap(skuJson: any[]): any { return skuToCapabilities; } +/** + * Gets capability value for either a virtual machine sku capability name or a cloud service sku + * capability name. + */ +function _getCapabilityDetails(capabilities, capabilityName: string, altCapabilityName: string) { + const vmCapability = capabilities.get(capabilityName); + const cloudServiceCapability = capabilities.get(altCapabilityName); + if (vmCapability) { + if (capabilityName === "MemoryGB") { + return Math.round((vmCapability) * 1024).toString(); + } + return vmCapability; + } else if (cloudServiceCapability) { + return cloudServiceCapability; + } +} + function _parseIntOrReturnDefault(skuCapabilityValue : string): number { const value = parseInt(skuCapabilityValue); return isNaN(value) ? 0 : value;