Add resource deployment filtering by option values (#14101)

* Add resource deployment filtering by option values

* Fix compile error
This commit is contained in:
Charles Gagnon
2021-01-28 17:19:08 -08:00
committed by GitHub
parent 5bf1f640e8
commit db845754c6
6 changed files with 44 additions and 19 deletions

View File

@@ -8,7 +8,7 @@ import * as nls from 'vscode-nls';
import { NotebookBasedDialogInfo } from './interfaces';
import { NotebookService } from './services/notebookService';
import { PlatformService } from './services/platformService';
import { ResourceTypeService } from './services/resourceTypeService';
import { OptionValuesFilter, ResourceTypeService } from './services/resourceTypeService';
import { ToolsService } from './services/toolsService';
import { DeploymentInputDialog } from './ui/deploymentInputDialog';
import { ResourceTypePickerDialog } from './ui/resourceTypePickerDialog';
@@ -37,12 +37,12 @@ export async function activate(context: vscode.ExtensionContext): Promise<rd.IEx
* @param resourceTypeNameFilters Optional filters to apply to the resource types displayed. If undefined all
* resource types will be displayed
*/
const openDialog = (defaultResourceTypeName: string, resourceTypeNameFilters?: string[]) => {
const openDialog = (defaultResourceTypeName: string, resourceTypeNameFilters?: string[], optionValuesFilter?: OptionValuesFilter) => {
const defaultResourceType = resourceTypes.find(resourceType => resourceType.name === defaultResourceTypeName);
if (!defaultResourceType) {
vscode.window.showErrorMessage(localize('resourceDeployment.UnknownResourceType', "The resource type: {0} is not defined", defaultResourceTypeName));
} else {
const dialog = new ResourceTypePickerDialog(resourceTypeService, defaultResourceType, resourceTypeNameFilters);
const dialog = new ResourceTypePickerDialog(resourceTypeService, defaultResourceType, resourceTypeNameFilters, optionValuesFilter);
dialog.open();
}
};
@@ -53,14 +53,21 @@ export async function activate(context: vscode.ExtensionContext): Promise<rd.IEx
vscode.commands.registerCommand('azdata.resource.sql-bdc.deploy', () => {
openDialog('sql-bdc');
});
vscode.commands.registerCommand('azdata.resource.deploy', (defaultResourceTypeName?: string, resourceTypeNameFilters?: string[]) => {
/**
* Command to open the Resource Deployment wizard - with options to filter the values shown
* @param defaultResourceTypeName - The default resourceType to be selected
* @param resourceTypeNameFilters - The list of resourceTypes to show in the wizard
* @param optionValuesFilter - The list of resourceType option values to show in the wizard. This is an object in the format
* { "resource-type-name": { "option-name": ["option-value-1", "option-value-2"] } }
*/
vscode.commands.registerCommand('azdata.resource.deploy', (defaultResourceTypeName?: string, resourceTypeNameFilters?: string[], optionValuesFilter?: OptionValuesFilter) => {
if ((resourceTypeNameFilters && !Array.isArray(resourceTypeNameFilters) ||
(resourceTypeNameFilters && resourceTypeNameFilters.length > 0 && typeof resourceTypeNameFilters[0] !== 'string'))) {
throw new Error('resourceTypeNameFilters must either be undefined or an array of strings');
}
if (typeof defaultResourceTypeName === 'string') {
openDialog(defaultResourceTypeName, resourceTypeNameFilters);
openDialog(defaultResourceTypeName, resourceTypeNameFilters, optionValuesFilter);
} else {
let defaultDeploymentType: string;
if (platformService.platform() === 'win32') {
@@ -68,7 +75,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<rd.IEx
} else {
defaultDeploymentType = 'sql-image';
}
openDialog(defaultDeploymentType, resourceTypeNameFilters);
openDialog(defaultDeploymentType, resourceTypeNameFilters, optionValuesFilter);
}
});
vscode.commands.registerCommand('azdata.openNotebookInputDialog', (dialogInfo: NotebookBasedDialogInfo) => {