mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Change feature flag for SQL kernel to be user preference (#3838)
* Change feature flag for SQL kernel to be user preference * fix test that was broken * Tweak package.nls.json to show "(Preview)"
This commit is contained in:
@@ -26,6 +26,11 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"default": "",
|
"default": "",
|
||||||
"description": "%notebook.pythonPath.description%"
|
"description": "%notebook.pythonPath.description%"
|
||||||
|
},
|
||||||
|
"notebook.sqlKernelEnabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "%notebook.sqlKernelEnabled.description%"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
"notebook.configuration.title": "Notebook configuration",
|
"notebook.configuration.title": "Notebook configuration",
|
||||||
"notebook.enabled.description": "Enable viewing notebook files using built-in notebook editor.",
|
"notebook.enabled.description": "Enable viewing notebook files using built-in notebook editor.",
|
||||||
"notebook.pythonPath.description": "Local path to python installation used by Notebooks.",
|
"notebook.pythonPath.description": "Local path to python installation used by Notebooks.",
|
||||||
|
"notebook.sqlKernelEnabled.description": "Enable SQL kernel in notebook editor (Preview)",
|
||||||
"notebook.command.new": "New Notebook",
|
"notebook.command.new": "New Notebook",
|
||||||
"notebook.command.open": "Open Notebook"
|
"notebook.command.open": "Open Notebook"
|
||||||
}
|
}
|
||||||
@@ -234,7 +234,7 @@ export class NotebookComponent extends AngularDisposable implements OnInit, OnDe
|
|||||||
|
|
||||||
private async loadModel(): Promise<void> {
|
private async loadModel(): Promise<void> {
|
||||||
await this.awaitNonDefaultProvider();
|
await this.awaitNonDefaultProvider();
|
||||||
let providerId = notebookUtils.sqlNotebooksEnabled() ? 'sql' : this._notebookParams.providers.find(provider => provider !== DEFAULT_NOTEBOOK_PROVIDER); // this is tricky; really should also depend on the connection profile
|
let providerId = notebookUtils.sqlNotebooksEnabled(this.contextKeyService) ? 'sql' : this._notebookParams.providers.find(provider => provider !== DEFAULT_NOTEBOOK_PROVIDER); // this is tricky; really should also depend on the connection profile
|
||||||
this.setContextKeyServiceWithProviderId(providerId);
|
this.setContextKeyServiceWithProviderId(providerId);
|
||||||
this.fillInActionsForCurrentContext();
|
this.fillInActionsForCurrentContext();
|
||||||
for (let providerId of this._notebookParams.providers) {
|
for (let providerId of this._notebookParams.providers) {
|
||||||
@@ -248,7 +248,7 @@ export class NotebookComponent extends AngularDisposable implements OnInit, OnDe
|
|||||||
notificationService: this.notificationService,
|
notificationService: this.notificationService,
|
||||||
notebookManagers: this.notebookManagers,
|
notebookManagers: this.notebookManagers,
|
||||||
standardKernels: this._notebookParams.input.standardKernels,
|
standardKernels: this._notebookParams.input.standardKernels,
|
||||||
providerId: notebookUtils.sqlNotebooksEnabled() ? 'sql' : 'jupyter', // this is tricky; really should also depend on the connection profile
|
providerId: notebookUtils.sqlNotebooksEnabled(this.contextKeyService) ? 'sql' : 'jupyter', // this is tricky; really should also depend on the connection profile
|
||||||
defaultKernel: this._notebookParams.input.defaultKernel,
|
defaultKernel: this._notebookParams.input.defaultKernel,
|
||||||
capabilitiesService: this.capabilitiesService
|
capabilitiesService: this.capabilitiesService
|
||||||
}, false, this.profile);
|
}, false, this.profile);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import * as pfs from 'vs/base/node/pfs';
|
|||||||
import { localize } from 'vs/nls';
|
import { localize } from 'vs/nls';
|
||||||
import { IOutputChannel } from 'vs/workbench/parts/output/common/output';
|
import { IOutputChannel } from 'vs/workbench/parts/output/common/output';
|
||||||
import { DEFAULT_NOTEBOOK_PROVIDER, DEFAULT_NOTEBOOK_FILETYPE, INotebookService } from 'sql/workbench/services/notebook/common/notebookService';
|
import { DEFAULT_NOTEBOOK_PROVIDER, DEFAULT_NOTEBOOK_FILETYPE, INotebookService } from 'sql/workbench/services/notebook/common/notebookService';
|
||||||
|
import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,9 +74,9 @@ export function getStandardKernelsForProvider(providerId: string, notebookServic
|
|||||||
return <IStandardKernelWithProvider[]>(standardKernels);
|
return <IStandardKernelWithProvider[]>(standardKernels);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private feature flag to enable Sql Notebook experience
|
// Feature flag to enable Sql Notebook experience
|
||||||
export function sqlNotebooksEnabled() {
|
export function sqlNotebooksEnabled(contextKeyService: IContextKeyService) {
|
||||||
return process.env['SQLOPS_SQL_NOTEBOOK'] !== undefined;
|
return contextKeyService.contextMatchesRules(ContextKeyExpr.equals('config.notebook.sqlKernelEnabled', true));
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IStandardKernelWithProvider {
|
export interface IStandardKernelWithProvider {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import { Deferred } from 'sql/base/common/promise';
|
|||||||
import { SqlSessionManager } from 'sql/workbench/services/notebook/common/sqlSessionManager';
|
import { SqlSessionManager } from 'sql/workbench/services/notebook/common/sqlSessionManager';
|
||||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||||
import { sqlNotebooksEnabled } from 'sql/parts/notebook/notebookUtils';
|
import { sqlNotebooksEnabled } from 'sql/parts/notebook/notebookUtils';
|
||||||
|
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
|
|
||||||
export interface NotebookProviderProperties {
|
export interface NotebookProviderProperties {
|
||||||
provider: string;
|
provider: string;
|
||||||
@@ -88,7 +89,8 @@ export class NotebookService extends Disposable implements INotebookService {
|
|||||||
@IStorageService private _storageService: IStorageService,
|
@IStorageService private _storageService: IStorageService,
|
||||||
@IExtensionService extensionService: IExtensionService,
|
@IExtensionService extensionService: IExtensionService,
|
||||||
@IExtensionManagementService extensionManagementService: IExtensionManagementService,
|
@IExtensionManagementService extensionManagementService: IExtensionManagementService,
|
||||||
@IInstantiationService private _instantiationService: IInstantiationService
|
@IInstantiationService private _instantiationService: IInstantiationService,
|
||||||
|
@IContextKeyService private _contextKeyService: IContextKeyService
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
this._register(notebookRegistry.onNewRegistration(this.updateRegisteredProviders, this));
|
this._register(notebookRegistry.onNewRegistration(this.updateRegisteredProviders, this));
|
||||||
@@ -351,7 +353,7 @@ export class NotebookService extends Disposable implements INotebookService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private registerBuiltInProvider() {
|
private registerBuiltInProvider() {
|
||||||
if (!sqlNotebooksEnabled()) {
|
if (!sqlNotebooksEnabled(this._contextKeyService)) {
|
||||||
let defaultProvider = new BuiltinProvider();
|
let defaultProvider = new BuiltinProvider();
|
||||||
this.registerProvider(defaultProvider.providerId, defaultProvider);
|
this.registerProvider(defaultProvider.providerId, defaultProvider);
|
||||||
notebookRegistry.registerNotebookProvider({
|
notebookRegistry.registerNotebookProvider({
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { NotebookService } from 'sql/workbench/services/notebook/common/notebook
|
|||||||
import { INotebookProvider } from 'sql/workbench/services/notebook/common/notebookService';
|
import { INotebookProvider } from 'sql/workbench/services/notebook/common/notebookService';
|
||||||
import { INotebookManagerDetails, INotebookSessionDetails, INotebookKernelDetails, INotebookFutureDetails } from 'sql/workbench/api/common/sqlExtHostTypes';
|
import { INotebookManagerDetails, INotebookSessionDetails, INotebookKernelDetails, INotebookFutureDetails } from 'sql/workbench/api/common/sqlExtHostTypes';
|
||||||
import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager';
|
import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager';
|
||||||
|
import { ContextKeyServiceStub } from 'sqltest/stubs/contextKeyServiceStub';
|
||||||
|
|
||||||
suite('MainThreadNotebook Tests', () => {
|
suite('MainThreadNotebook Tests', () => {
|
||||||
|
|
||||||
@@ -31,7 +32,7 @@ suite('MainThreadNotebook Tests', () => {
|
|||||||
let extContext = <IExtHostContext>{
|
let extContext = <IExtHostContext>{
|
||||||
getProxy: proxyType => mockProxy.object
|
getProxy: proxyType => mockProxy.object
|
||||||
};
|
};
|
||||||
mockNotebookService = TypeMoq.Mock.ofType(NotebookService);
|
mockNotebookService = TypeMoq.Mock.ofType(NotebookService, undefined, undefined, undefined, undefined, undefined, new ContextKeyServiceStub());
|
||||||
notebookUri = URI.parse('file:/user/default/my.ipynb');
|
notebookUri = URI.parse('file:/user/default/my.ipynb');
|
||||||
mainThreadNotebook = new MainThreadNotebook(extContext, mockNotebookService.object);
|
mainThreadNotebook = new MainThreadNotebook(extContext, mockNotebookService.object);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user