Arc and Azure CLI extensions GA + bug fix for SQL MIAA update (#18226)

* Changed instances of sql edit to sql update

* Updated az sql mi-arc edit to be update. Changed the params for indirect and direct mode.

* Removed preview from everywhere in arc and azcli extensions.

* Bumped version numbers for both extensions and removed preview bool in package.jsons
This commit is contained in:
Candice Ye
2022-02-07 10:32:37 -08:00
committed by GitHub
parent c3d8c37ed7
commit 5b3804c607
9 changed files with 67 additions and 22 deletions

View File

@@ -2,9 +2,8 @@
"name": "arc", "name": "arc",
"displayName": "%arc.displayName%", "displayName": "%arc.displayName%",
"description": "%arc.description%", "description": "%arc.description%",
"version": "0.11.0", "version": "0.12.0",
"publisher": "Microsoft", "publisher": "Microsoft",
"preview": true,
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt", "license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
"icon": "images/extension.png", "icon": "images/extension.png",
"engines": { "engines": {

View File

@@ -13,7 +13,7 @@
"command.estimateCostSqlMiaa.title": "Estimate Cost of SQL Managed Instance - Azure Arc", "command.estimateCostSqlMiaa.title": "Estimate Cost of SQL Managed Instance - Azure Arc",
"arc.openDashboard": "Manage", "arc.openDashboard": "Manage",
"resource.type.azure.arc.display.name": "Azure Arc data controller (preview)", "resource.type.azure.arc.display.name": "Azure Arc data controller",
"resource.type.azure.arc.description": "Creates an Azure Arc data controller", "resource.type.azure.arc.description": "Creates an Azure Arc data controller",
"arc.data.controller.new.wizard.title": "Create Azure Arc data controller", "arc.data.controller.new.wizard.title": "Create Azure Arc data controller",
"arc.data.controller.cluster.environment.title": "What is your target existing Kubernetes cluster environment?", "arc.data.controller.cluster.environment.title": "What is your target existing Kubernetes cluster environment?",

View File

@@ -8,9 +8,9 @@ import { getErrorMessage } from './common/utils';
const localize = nls.loadMessageBundle(); const localize = nls.loadMessageBundle();
export const arcDeploymentDeprecation = localize('arc.arcDeploymentDeprecation', "The Arc Deployment extension has been replaced by the Arc extension and has been uninstalled."); export const arcDeploymentDeprecation = localize('arc.arcDeploymentDeprecation', "The Arc Deployment extension has been replaced by the Arc extension and has been uninstalled.");
export function arcControllerDashboard(name: string): string { return localize('arc.controllerDashboard', "Azure Arc Data Controller Dashboard (Preview) - {0}", name); } export function arcControllerDashboard(name: string): string { return localize('arc.controllerDashboard', "Azure Arc Data Controller Dashboard - {0}", name); }
export function miaaDashboard(name: string): string { return localize('arc.miaaDashboard', "SQL managed instance - Azure Arc Dashboard (Preview) - {0}", name); } export function miaaDashboard(name: string): string { return localize('arc.miaaDashboard', "SQL managed instance - Azure Arc Dashboard - {0}", name); }
export function postgresDashboard(name: string): string { return localize('arc.postgresDashboard', "PostgreSQL Hyperscale - Azure Arc Dashboard (Preview) - {0}", name); } export function postgresDashboard(name: string): string { return localize('arc.postgresDashboard', "PostgreSQL Hyperscale - Azure Arc Dashboard - {0}", name); }
export const dataControllersType = localize('arc.dataControllersType', "Azure Arc Data Controller"); export const dataControllersType = localize('arc.dataControllersType', "Azure Arc Data Controller");
export const pgSqlType = localize('arc.pgSqlType', "PostgreSQL Hyperscale - Azure Arc"); export const pgSqlType = localize('arc.pgSqlType', "PostgreSQL Hyperscale - Azure Arc");

View File

@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as azExt from 'az-ext'; import * as azExt from 'az-ext';
import * as loc from '../../../localizedConstants'; import * as loc from '../../../localizedConstants';
import { IconPathHelper, cssStyles } from '../../../constants'; import { IconPathHelper, cssStyles, ConnectionMode } from '../../../constants';
import { DashboardPage } from '../../components/dashboardPage'; import { DashboardPage } from '../../components/dashboardPage';
import { MiaaModel, RPModel, DatabaseModel, systemDbs } from '../../../models/miaaModel'; import { MiaaModel, RPModel, DatabaseModel, systemDbs } from '../../../models/miaaModel';
import { ControllerModel } from '../../../models/controllerModel'; import { ControllerModel } from '../../../models/controllerModel';
@@ -220,9 +220,23 @@ export class MiaaBackupsPage extends DashboardPage {
cancellable: false cancellable: false
}, },
async (_progress, _token): Promise<void> => { async (_progress, _token): Promise<void> => {
await this._azApi.az.sql.miarc.edit( if (this._miaaModel.controllerModel.info.connectionMode === ConnectionMode.direct) {
this._miaaModel.info.name, this._saveArgs, this._miaaModel.controllerModel.info.namespace, this._miaaModel.controllerModel.azAdditionalEnvVars); await this._azApi.az.sql.miarc.update(
this._miaaModel.info.name,
this._saveArgs,
this._miaaModel.controllerModel.info.resourceGroup,
undefined, // Indirect mode argument - namespace
undefined, // Indirect mode argument - usek8s
this._miaaModel.controllerModel.azAdditionalEnvVars);
} else {
await this._azApi.az.sql.miarc.update(
this._miaaModel.info.name,
this._saveArgs,
undefined, // Direct mode argument - resourceGroup
this._miaaModel.controllerModel.info.namespace,
true,
this._miaaModel.controllerModel.azAdditionalEnvVars);
}
try { try {
await this._miaaModel.refresh(); await this._miaaModel.refresh();
} catch (error) { } catch (error) {

View File

@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as azExt from 'az-ext'; import * as azExt from 'az-ext';
import * as loc from '../../../localizedConstants'; import * as loc from '../../../localizedConstants';
import { IconPathHelper, cssStyles } from '../../../constants'; import { IconPathHelper, cssStyles, ConnectionMode } from '../../../constants';
import { DashboardPage } from '../../components/dashboardPage'; import { DashboardPage } from '../../components/dashboardPage';
import { convertToGibibyteString } from '../../../common/utils'; import { convertToGibibyteString } from '../../../common/utils';
import { MiaaModel } from '../../../models/miaaModel'; import { MiaaModel } from '../../../models/miaaModel';
@@ -130,8 +130,23 @@ export class MiaaComputeAndStoragePage extends DashboardPage {
}, },
async (_progress, _token): Promise<void> => { async (_progress, _token): Promise<void> => {
try { try {
await this._azApi.az.sql.miarc.edit( if (this._miaaModel.controllerModel.info.connectionMode === ConnectionMode.direct) {
this._miaaModel.info.name, this.saveArgs, this._miaaModel.controllerModel.info.namespace, this._miaaModel.controllerModel.azAdditionalEnvVars); await this._azApi.az.sql.miarc.update(
this._miaaModel.info.name,
this.saveArgs,
this._miaaModel.controllerModel.info.resourceGroup,
undefined, // Indirect mode argument - namespace
undefined, // Indirect mode argument - usek8s
this._miaaModel.controllerModel.azAdditionalEnvVars);
} else {
await this._azApi.az.sql.miarc.update(
this._miaaModel.info.name,
this.saveArgs,
undefined, // Direct mode argument - resourceGroup
this._miaaModel.controllerModel.info.namespace,
true,
this._miaaModel.controllerModel.azAdditionalEnvVars);
}
} catch (err) { } catch (err) {
this.saveButton!.enabled = true; this.saveButton!.enabled = true;
throw err; throw err;

View File

@@ -2,9 +2,8 @@
"name": "azcli", "name": "azcli",
"displayName": "%azcli.arc.displayName%", "displayName": "%azcli.arc.displayName%",
"description": "%azcli.arc.description%", "description": "%azcli.arc.description%",
"version": "0.3.0", "version": "0.4.0",
"publisher": "Microsoft", "publisher": "Microsoft",
"preview": true,
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt", "license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
"icon": "images/extension.png", "icon": "images/extension.png",
"engines": { "engines": {

View File

@@ -116,7 +116,7 @@ export function getAzApi(localAzDiscovered: Promise<IAzTool | undefined>, azTool
validateAz(azToolService.localAz); validateAz(azToolService.localAz);
return azToolService.localAz!.sql.miarc.show(name, namespace, additionalEnvVars); return azToolService.localAz!.sql.miarc.show(name, namespace, additionalEnvVars);
}, },
edit: async ( update: async (
name: string, name: string,
args: { args: {
coresLimit?: string; coresLimit?: string;
@@ -125,12 +125,17 @@ export function getAzApi(localAzDiscovered: Promise<IAzTool | undefined>, azTool
memoryRequest?: string; memoryRequest?: string;
noWait?: boolean; noWait?: boolean;
}, },
namespace: string, // Direct mode arguments
resourceGroup?: string,
// Indirect mode arguments
namespace?: string,
usek8s?: boolean,
// Additional arguments
additionalEnvVars?: azExt.AdditionalEnvVars additionalEnvVars?: azExt.AdditionalEnvVars
) => { ) => {
await localAzDiscovered; await localAzDiscovered;
validateAz(azToolService.localAz); validateAz(azToolService.localAz);
return azToolService.localAz!.sql.miarc.edit(name, args, namespace, additionalEnvVars); return azToolService.localAz!.sql.miarc.update(name, args, resourceGroup, namespace, usek8s, additionalEnvVars);
} }
}, },
midbarc: { midbarc: {

View File

@@ -154,7 +154,7 @@ export class AzTool implements azExt.IAzApi {
show: (name: string, namespace: string, additionalEnvVars?: azExt.AdditionalEnvVars): Promise<azExt.AzOutput<azExt.SqlMiShowResult>> => { show: (name: string, namespace: string, additionalEnvVars?: azExt.AdditionalEnvVars): Promise<azExt.AzOutput<azExt.SqlMiShowResult>> => {
return this.executeCommand<azExt.SqlMiShowResult>(['sql', 'mi-arc', 'show', '-n', name, '--k8s-namespace', namespace, '--use-k8s'], additionalEnvVars); return this.executeCommand<azExt.SqlMiShowResult>(['sql', 'mi-arc', 'show', '-n', name, '--k8s-namespace', namespace, '--use-k8s'], additionalEnvVars);
}, },
edit: ( update: (
name: string, name: string,
args: { args: {
coresLimit?: string, coresLimit?: string,
@@ -164,16 +164,24 @@ export class AzTool implements azExt.IAzApi {
noWait?: boolean, noWait?: boolean,
retentionDays?: string retentionDays?: string
}, },
namespace: string, // Direct mode arguments
resourceGroup?: string,
// Indirect mode arguments
namespace?: string,
usek8s?: boolean,
// Additional arguments
additionalEnvVars?: azExt.AdditionalEnvVars additionalEnvVars?: azExt.AdditionalEnvVars
): Promise<azExt.AzOutput<void>> => { ): Promise<azExt.AzOutput<void>> => {
const argsArray = ['sql', 'mi-arc', 'edit', '-n', name, '--k8s-namespace', namespace, '--use-k8s']; const argsArray = ['sql', 'mi-arc', 'update', '-n', name];
if (args.coresLimit) { argsArray.push('--cores-limit', args.coresLimit); } if (args.coresLimit) { argsArray.push('--cores-limit', args.coresLimit); }
if (args.coresRequest) { argsArray.push('--cores-request', args.coresRequest); } if (args.coresRequest) { argsArray.push('--cores-request', args.coresRequest); }
if (args.memoryLimit) { argsArray.push('--memory-limit', args.memoryLimit); } if (args.memoryLimit) { argsArray.push('--memory-limit', args.memoryLimit); }
if (args.memoryRequest) { argsArray.push('--memory-request', args.memoryRequest); } if (args.memoryRequest) { argsArray.push('--memory-request', args.memoryRequest); }
if (args.noWait) { argsArray.push('--no-wait'); } if (args.noWait) { argsArray.push('--no-wait'); }
if (args.retentionDays) { argsArray.push('--retention-days', args.retentionDays); } if (args.retentionDays) { argsArray.push('--retention-days', args.retentionDays); }
if (resourceGroup) { argsArray.push('--resource-group', resourceGroup); }
if (namespace) { argsArray.push('--k8s-namespace', namespace); }
if (usek8s) { argsArray.push('--use-k8s'); }
return this.executeCommand<void>(argsArray, additionalEnvVars); return this.executeCommand<void>(argsArray, additionalEnvVars);
} }
}, },

View File

@@ -328,7 +328,7 @@ declare module 'az-ext' {
delete(name: string, namespace?: string, additionalEnvVars?: AdditionalEnvVars): Promise<AzOutput<void>>, delete(name: string, namespace?: string, additionalEnvVars?: AdditionalEnvVars): Promise<AzOutput<void>>,
list(namespace?: string, additionalEnvVars?: AdditionalEnvVars): Promise<AzOutput<SqlMiListResult[]>>, list(namespace?: string, additionalEnvVars?: AdditionalEnvVars): Promise<AzOutput<SqlMiListResult[]>>,
show(name: string, namespace?: string, additionalEnvVars?: AdditionalEnvVars): Promise<AzOutput<SqlMiShowResult>>, show(name: string, namespace?: string, additionalEnvVars?: AdditionalEnvVars): Promise<AzOutput<SqlMiShowResult>>,
edit( update(
name: string, name: string,
args: { args: {
coresLimit?: string, //2 coresLimit?: string, //2
@@ -338,7 +338,12 @@ declare module 'az-ext' {
noWait?: boolean, //true noWait?: boolean, //true
retentionDays?: string, //5 retentionDays?: string, //5
}, },
// Direct mode arguments
resourceGroup?: string,
// Indirect mode arguments
namespace?: string, namespace?: string,
usek8s?: boolean,
// Additional arguments
additionalEnvVars?: AdditionalEnvVars additionalEnvVars?: AdditionalEnvVars
): Promise<AzOutput<void>> ): Promise<AzOutput<void>>
}, },