Skip to content

Commit

Permalink
Fix cloud service sku values for vm picker table (#2725)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
cRui861 authored May 2, 2023
1 parent e1888e7 commit 6151cc5
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand Down Expand Up @@ -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) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
<div *blCellDef="let size">{{size.prettyRAM}}</div>
</bl-column>

<bl-column name="osdisk" [sortable]="true" [defaultWidth]="70">
<bl-column name="osdisk" [sortable]="true" [defaultWidth]="70" *ngIf="!isCloudService">
<div *blHeadCellDef>OS Disk</div>
<div *blCellDef="let size">{{size.prettyOSDiskSize}}</div>
</bl-column>
Expand Down
23 changes: 20 additions & 3 deletions src/app/models/vm-size.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ export function mapResourceSkuToVmSize(skuJson: any[]): List<VmSize> {
const vmSize: Partial<VmSizeAttributes> = {};
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));
}
Expand All @@ -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;
Expand Down

0 comments on commit 6151cc5

Please sign in to comment.