From 28d5382dc36c0623d9505523978e7330ab353e50 Mon Sep 17 00:00:00 2001 From: Candice Ye Date: Thu, 28 Jul 2022 13:52:26 -0700 Subject: [PATCH] Added check for .toLowerCase and added upgrade message for clarity. (#20187) Co-authored-by: Candice Ye --- extensions/arc/src/localizedConstants.ts | 4 ++ extensions/arc/src/models/miaaModel.ts | 2 +- .../controller/controllerUpgrades.ts | 55 ++++++++++++------- .../src/ui/dashboards/miaa/miaaBackupsPage.ts | 2 +- .../miaa/miaaComputeAndStoragePage.ts | 2 +- .../miaa/miaaDashboardOverviewPage.ts | 2 +- .../miaa/miaaUpgradeManagementPage.ts | 49 +++++++++++------ .../src/ui/dialogs/connectControllerDialog.ts | 2 +- 8 files changed, 76 insertions(+), 42 deletions(-) diff --git a/extensions/arc/src/localizedConstants.ts b/extensions/arc/src/localizedConstants.ts index 7e51e38442..99cbe110b7 100644 --- a/extensions/arc/src/localizedConstants.ts +++ b/extensions/arc/src/localizedConstants.ts @@ -253,6 +253,10 @@ export function deletingInstance(name: string): string { return localize('arc.de export function installingExtension(name: string): string { return localize('arc.installingExtension', "Installing extension '{0}'...", name); } export function extensionInstalled(name: string): string { return localize('arc.extensionInstalled', "Extension '{0}' has been installed.", name); } export function updatingInstance(name: string): string { return localize('arc.updatingInstance', "Updating instance '{0}'...", name); } +export function upgradingDirectDC(name: string, desiredVersion: string, resourceGroup: string): string { return localize('arc.upgradingDirectDC', "Upgrading data controller '{0}' with command 'az arcdata dc upgrade --desired-version {1} --name {0} --resource-group {2}'", name, desiredVersion, resourceGroup); } +export function upgradingIndirectDC(name: string, desiredVersion: string, namespace: string): string { return localize('arc.upgradingIndirectDC', "Upgrading data controller '{0}' with command 'az arcdata dc upgrade --desired-version {1} --name {0} --k8s-namespace {2} --use-k8s'", name, desiredVersion, namespace); } +export function upgradingDirectMiaa(name: string, resourceGroup: string): string { return localize('arc.upgradingDirectMiaa', "Upgrading SQL MIAA '{0}' with command 'az sql mi-arc upgrade --name {0} --resource-group {1}'", name, resourceGroup); } +export function upgradingIndirectMiaa(name: string, namespace: string): string { return localize('arc.upgradingIndirectMiaa', "Upgrading SQL MIAA '{0}' with command 'az sql mi-arc upgrade --name {0} --k8s-namespace {1} --use-k8s'", name, namespace); } export function instanceDeleted(name: string): string { return localize('arc.instanceDeleted', "Instance '{0}' deleted", name); } export function instanceUpdated(name: string): string { return localize('arc.instanceUpdated', "Instance '{0}' updated", name); } export function extensionsDropped(name: string): string { return localize('arc.extensionsDropped', "Extensions '{0}' dropped", name); } diff --git a/extensions/arc/src/models/miaaModel.ts b/extensions/arc/src/models/miaaModel.ts index 77049983de..f466c8f7f2 100644 --- a/extensions/arc/src/models/miaaModel.ts +++ b/extensions/arc/src/models/miaaModel.ts @@ -100,7 +100,7 @@ export class MiaaModel extends ResourceModel { try { try { let result; - if (this.controllerModel.info.connectionMode === ConnectionMode.direct) { + if (this.controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { result = await this._azApi.az.sql.miarc.show( this.info.name, { diff --git a/extensions/arc/src/ui/dashboards/controller/controllerUpgrades.ts b/extensions/arc/src/ui/dashboards/controller/controllerUpgrades.ts index c629f22a13..429d013e06 100644 --- a/extensions/arc/src/ui/dashboards/controller/controllerUpgrades.ts +++ b/extensions/arc/src/ui/dashboards/controller/controllerUpgrades.ts @@ -222,15 +222,15 @@ export class ControllerUpgradesPage extends DashboardPage { try { upgradeButton.enabled = false; vscode.window.showInformationMessage(loc.upgradingController('kubectl get datacontrollers -A\' should not be localized.')); - await vscode.window.withProgress( - { - location: vscode.ProgressLocation.Notification, - title: loc.updatingInstance(this._controllerModel.info.name), - cancellable: true - }, - async (_progress, _token): Promise => { - if (nextVersion !== '') { - if (this._controllerModel.info.connectionMode === ConnectionMode.direct) { + if (this._controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: loc.upgradingDirectDC(this._controllerModel.info.name, nextVersion, this._controllerModel.info.resourceGroup), + cancellable: true + }, + async (_progress, _token): Promise => { + if (nextVersion !== '') { await this._azApi.az.arcdata.dc.upgrade( nextVersion, this._controllerModel.info.name, @@ -238,24 +238,41 @@ export class ControllerUpgradesPage extends DashboardPage { undefined, // Indirect mode argument - namespace ); } else { + vscode.window.showInformationMessage(loc.noUpgrades); + } + try { + await this._controllerModel.refresh(false, this._controllerModel.info.namespace); + } catch (error) { + vscode.window.showErrorMessage(loc.refreshFailed(error)); + } + } + ); + } else { + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: loc.upgradingIndirectDC(this._controllerModel.info.name, nextVersion, this._controllerModel.info.namespace), + cancellable: true + }, + async (_progress, _token): Promise => { + if (nextVersion !== '') { await this._azApi.az.arcdata.dc.upgrade( nextVersion, this._controllerModel.info.name, undefined, // Direct mode argument - resourceGroup this._controllerModel.info.namespace, ); + } else { + vscode.window.showInformationMessage(loc.noUpgrades); + } + try { + await this._controllerModel.refresh(false, this._controllerModel.info.namespace); + } catch (error) { + vscode.window.showErrorMessage(loc.refreshFailed(error)); } - } else { - vscode.window.showInformationMessage(loc.noUpgrades); } - - try { - await this._controllerModel.refresh(false, this._controllerModel.info.namespace); - } catch (error) { - vscode.window.showErrorMessage(loc.refreshFailed(error)); - } - } - ); + ); + } } catch (error) { console.log(error); } diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaBackupsPage.ts b/extensions/arc/src/ui/dashboards/miaa/miaaBackupsPage.ts index acaf68fe5f..f1d5c4dc64 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaBackupsPage.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaBackupsPage.ts @@ -220,7 +220,7 @@ export class MiaaBackupsPage extends DashboardPage { cancellable: false }, async (_progress, _token): Promise => { - if (this._miaaModel.controllerModel.info.connectionMode === ConnectionMode.direct) { + if (this._miaaModel.controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { await this._azApi.az.sql.miarc.update( this._miaaModel.info.name, this._saveArgs, diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaComputeAndStoragePage.ts b/extensions/arc/src/ui/dashboards/miaa/miaaComputeAndStoragePage.ts index 8eccab803c..d86dd2accf 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaComputeAndStoragePage.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaComputeAndStoragePage.ts @@ -132,7 +132,7 @@ export class MiaaComputeAndStoragePage extends DashboardPage { }, async (_progress, _token): Promise => { try { - if (this._miaaModel.controllerModel.info.connectionMode === ConnectionMode.direct) { + if (this._miaaModel.controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { await this._azApi.az.sql.miarc.update( this._miaaModel.info.name, this.saveArgs, diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts b/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts index 766d99aedf..1de266deb2 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts @@ -243,7 +243,7 @@ export class MiaaDashboardOverviewPage extends DashboardPage { cancellable: false }, async (_progress, _token) => { - if (this._controllerModel.info.connectionMode === ConnectionMode.direct) { + if (this._controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { return await this._azApi.az.sql.miarc.delete( this._miaaModel.info.name, { diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaUpgradeManagementPage.ts b/extensions/arc/src/ui/dashboards/miaa/miaaUpgradeManagementPage.ts index ecf931281b..9ff763c008 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaUpgradeManagementPage.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaUpgradeManagementPage.ts @@ -160,7 +160,7 @@ export class MiaaUpgradeManagementPage extends DashboardPage { private async getMiaaVersion(): Promise { try { let miaaShowResult; - if (this._controllerModel.info.connectionMode === ConnectionMode.direct || this._controllerModel.controllerConfig?.spec.settings.azure.connectionMode.toLowerCase() === ConnectionMode.direct) { + if (this._controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct || this._controllerModel.controllerConfig?.spec.settings.azure.connectionMode.toLowerCase() === ConnectionMode.direct) { miaaShowResult = await this._azApi.az.sql.miarc.show( this._miaaModel.info.name, { @@ -263,14 +263,14 @@ export class MiaaUpgradeManagementPage extends DashboardPage { try { upgradeButton.enabled = false; vscode.window.showInformationMessage(loc.upgradingMiaa('kubectl get sqlmi -A\' should not be localized.')); - await vscode.window.withProgress( - { - location: vscode.ProgressLocation.Notification, - title: loc.updatingInstance(this._miaaModel.info.name), - cancellable: true - }, - async (_progress, _token): Promise => { - if (this._controllerModel.info.connectionMode === ConnectionMode.direct) { + if (this._controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: loc.upgradingDirectMiaa(this._miaaModel.info.name, this._controllerModel.info.resourceGroup), + cancellable: true + }, + async (_progress, _token): Promise => { await this._azApi.az.sql.miarc.upgrade( this._miaaModel.info.name, { @@ -278,7 +278,21 @@ export class MiaaUpgradeManagementPage extends DashboardPage { namespace: undefined } ); - } else { + try { + await this._controllerModel.refresh(false, this._controllerModel.info.namespace); + } catch (error) { + vscode.window.showErrorMessage(loc.refreshFailed(error)); + } + } + ); + } else { + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: loc.upgradingIndirectMiaa(this._miaaModel.info.name, this._controllerModel.info.namespace), + cancellable: true + }, + async (_progress, _token): Promise => { await this._azApi.az.sql.miarc.upgrade( this._miaaModel.info.name, { @@ -286,15 +300,14 @@ export class MiaaUpgradeManagementPage extends DashboardPage { namespace: this._controllerModel.info.namespace, } ); + try { + await this._controllerModel.refresh(false, this._controllerModel.info.namespace); + } catch (error) { + vscode.window.showErrorMessage(loc.refreshFailed(error)); + } } - - try { - await this._controllerModel.refresh(false, this._controllerModel.info.namespace); - } catch (error) { - vscode.window.showErrorMessage(loc.refreshFailed(error)); - } - } - ); + ); + } } catch (error) { console.log(error); } diff --git a/extensions/arc/src/ui/dialogs/connectControllerDialog.ts b/extensions/arc/src/ui/dialogs/connectControllerDialog.ts index f8c81b4fd2..0ecbeed1f5 100644 --- a/extensions/arc/src/ui/dialogs/connectControllerDialog.ts +++ b/extensions/arc/src/ui/dialogs/connectControllerDialog.ts @@ -204,7 +204,7 @@ export class ConnectToControllerDialog extends ControllerDialogBase { controllerModel.info.connectionMode = controllerModel.controllerConfig?.spec.settings.azure.connectionMode.toLowerCase(); controllerModel.info.location = controllerModel.controllerConfig?.spec.settings.azure.location; - if (controllerModel.info.connectionMode === ConnectionMode.direct) { + if (controllerModel.info.connectionMode.toLowerCase() === ConnectionMode.direct) { const rawCustomLocation = controllerModel.controllerConfig?.metadata.annotations['management.azure.com/customLocation']; const exp = /custom[lL]ocations\/([\S]*)/; controllerModel.info.customLocation = exp.exec(rawCustomLocation)?.pop();