mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-06 01:25:38 -05:00
Premium SSD v2 disks in SQL VM recommendations (#24556)
* Premium SSD v2 disks in SQL VM recommendations * Resolving review comments.
This commit is contained in:
@@ -302,12 +302,12 @@ export class SkuRecommendationResultsDialog {
|
||||
const tempTableRow: azdata.DeclarativeTableCellValue[] = [
|
||||
{ value: constants.SQL_TEMPDB },
|
||||
{
|
||||
value: recommendation.targetSku.tempDbDiskSizes!.length > 0
|
||||
? constants.STORAGE_CONFIGURATION(recommendation.targetSku.logDiskSizes![0].size, recommendation.targetSku.logDiskSizes!.length)
|
||||
value: recommendation.targetSku.tempDbDiskSizes!?.length > 0
|
||||
? this.getStorageConfigurationText(recommendation.targetSku.logDiskSizes)
|
||||
: constants.EPHEMERAL_TEMPDB
|
||||
},
|
||||
{
|
||||
value: recommendation.targetSku.tempDbDiskSizes!.length > 0
|
||||
value: recommendation.targetSku.tempDbDiskSizes!?.length > 0
|
||||
? this.getCachingText(recommendation.targetSku.logDiskSizes![0].caching)
|
||||
: constants.CACHING_NA
|
||||
}
|
||||
@@ -315,13 +315,17 @@ export class SkuRecommendationResultsDialog {
|
||||
|
||||
const dataDiskTableRow: azdata.DeclarativeTableCellValue[] = [
|
||||
{ value: constants.SQL_DATA_FILES },
|
||||
{ value: constants.STORAGE_CONFIGURATION(recommendation.targetSku.dataDiskSizes![0].size, recommendation.targetSku.dataDiskSizes!.length) },
|
||||
{
|
||||
value: this.getStorageConfigurationText(recommendation.targetSku.dataDiskSizes)
|
||||
},
|
||||
{ value: this.getCachingText(recommendation.targetSku.dataDiskSizes![0].caching) }
|
||||
];
|
||||
|
||||
const logDiskTableRow: azdata.DeclarativeTableCellValue[] = [
|
||||
{ value: constants.SQL_LOG_FILES },
|
||||
{ value: constants.STORAGE_CONFIGURATION(recommendation.targetSku.logDiskSizes![0].size, recommendation.targetSku.logDiskSizes!.length) },
|
||||
{
|
||||
value: this.getStorageConfigurationText(recommendation.targetSku.logDiskSizes)
|
||||
},
|
||||
{ value: this.getCachingText(recommendation.targetSku.logDiskSizes![0].caching) }
|
||||
];
|
||||
|
||||
@@ -365,6 +369,48 @@ export class SkuRecommendationResultsDialog {
|
||||
}
|
||||
}
|
||||
|
||||
// This method looks into Disk SKU list and returns storage configuration text.
|
||||
private getStorageConfigurationText(disks: contracts.AzureManagedDiskSku[]): string {
|
||||
|
||||
const diskTypeCountMap: { [diskConfigurationText: string]: number } = {};
|
||||
if (disks!?.length > 0) {
|
||||
disks.forEach(disk => {
|
||||
const diskConfigurationText = this.GetDiskConfigurationText(disk);
|
||||
if (diskConfigurationText in diskTypeCountMap) {
|
||||
// Check if the key exists in the map
|
||||
diskTypeCountMap[diskConfigurationText]++;
|
||||
} else {
|
||||
// If the key doesn't exist, initialize it with a count of 1
|
||||
diskTypeCountMap[diskConfigurationText] = 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let storageConfigurationText: string = '';
|
||||
for (const diskConfigurationText in diskTypeCountMap) {
|
||||
if (diskTypeCountMap.hasOwnProperty(diskConfigurationText)) {
|
||||
const count: number = diskTypeCountMap[diskConfigurationText];
|
||||
storageConfigurationText = storageConfigurationText.concat(constants.STORAGE_CONFIGURATION(count, diskConfigurationText));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return storageConfigurationText;
|
||||
}
|
||||
|
||||
// This method returns single disk configuration text.
|
||||
private GetDiskConfigurationText(disk: contracts.AzureManagedDiskSku): string {
|
||||
return disk!?.type === contracts.AzureManagedDiskType.PremiumSSDV2 ?
|
||||
constants.DISK_CONFIGURATION(this.getDiskTypeText(disk.type), disk.maxSizeInGib, disk.maxIOPS, disk.maxThroughputInMbps) :
|
||||
disk.size;
|
||||
}
|
||||
|
||||
// This method returns disk type text from enum value.
|
||||
private getDiskTypeText(type: contracts.AzureManagedDiskType): string {
|
||||
const diskTypeText = constants.DiskTypeLookup[type];
|
||||
return diskTypeText !== undefined ? diskTypeText : constants.UNKNOWN_DISK_TYPE;
|
||||
}
|
||||
|
||||
private createStoragePropertiesTable(_view: azdata.ModelView, databaseName?: string): azdata.FlexContainer {
|
||||
let instanceRequirements;
|
||||
switch (this._targetType) {
|
||||
|
||||
Reference in New Issue
Block a user