diff --git a/extensions/azurecore/src/account-provider/auths/azureAuth.ts b/extensions/azurecore/src/account-provider/auths/azureAuth.ts index 227f7acb0c..4299ea4f9d 100644 --- a/extensions/azurecore/src/account-provider/auths/azureAuth.ts +++ b/extensions/azurecore/src/account-provider/auths/azureAuth.ts @@ -73,6 +73,10 @@ export abstract class AzureAuth implements vscode.Disposable { this.resources = this.resources.concat(this.metadata.settings.azureDevOpsResource); } + if (this.metadata.settings.azureLogAnalyticsResource) { + this.resources = this.resources.concat(this.metadata.settings.azureLogAnalyticsResource); + } + this.scopes = [...this.metadata.settings.scopes]; this.scopesString = this.scopes.join(' '); } diff --git a/extensions/azurecore/src/account-provider/providerSettings.ts b/extensions/azurecore/src/account-provider/providerSettings.ts index e8743c868a..dbec86c0e8 100644 --- a/extensions/azurecore/src/account-provider/providerSettings.ts +++ b/extensions/azurecore/src/account-provider/providerSettings.ts @@ -17,7 +17,8 @@ const enum SettingIds { sql = 'sql', ossrdbms = 'ossrdbms', vault = 'vault', - ado = 'ado' + ado = 'ado', + ala = 'ala' } const publicAzureSettings: ProviderSettings = { @@ -68,6 +69,11 @@ const publicAzureSettings: ProviderSettings = { endpoint: '499b84ac-1321-427f-aa17-267ca6975798', azureResourceId: AzureResource.AzureDevOps, }, + azureLogAnalyticsResource: { + id: SettingIds.ala, + endpoint: 'https://api.loganalytics.io', + azureResourceId: AzureResource.AzureLogAnalytics, + }, redirectUri: 'https://vscode-redirect.azurewebsites.net/', scopes: [ 'openid', 'email', 'profile', 'offline_access', @@ -117,6 +123,11 @@ const usGovAzureSettings: ProviderSettings = { endpoint: 'https://vault.usgovcloudapi.net', azureResourceId: AzureResource.AzureKeyVault }, + azureLogAnalyticsResource: { + id: SettingIds.ala, + endpoint: 'https://api.loganalytics.us', + azureResourceId: AzureResource.AzureLogAnalytics, + }, redirectUri: 'https://vscode-redirect.azurewebsites.net/', scopes: [ 'openid', 'email', 'profile', 'offline_access', @@ -165,6 +176,11 @@ const usNatAzureSettings: ProviderSettings = { endpoint: 'https://vault.cloudapi.eaglex.ic.gov', azureResourceId: AzureResource.AzureKeyVault }, + azureLogAnalyticsResource: { + id: SettingIds.ala, + endpoint: 'https://api.loganalytics.azure.eaglex.ic.gov', + azureResourceId: AzureResource.AzureLogAnalytics, + }, redirectUri: 'https://vscode-redirect.azurewebsites.net/', scopes: [ 'openid', 'email', 'profile', 'offline_access', @@ -237,6 +253,11 @@ const chinaAzureSettings: ProviderSettings = { endpoint: 'https://vault.azure.cn', azureResourceId: AzureResource.AzureKeyVault }, + azureLogAnalyticsResource: { + id: SettingIds.ala, + endpoint: 'https://api.loganalytics.azure.cn', + azureResourceId: AzureResource.AzureLogAnalytics, + }, redirectUri: 'https://vscode-redirect.azurewebsites.net/' } diff --git a/extensions/azurecore/src/azurecore.d.ts b/extensions/azurecore/src/azurecore.d.ts index 764b13142f..1e54f65a84 100644 --- a/extensions/azurecore/src/azurecore.d.ts +++ b/extensions/azurecore/src/azurecore.d.ts @@ -118,6 +118,11 @@ declare module 'azurecore' { */ azureDevOpsResource?: Resource; + /** + * Information that describes the Azure Log Analytics resource + */ + azureLogAnalyticsResource?: Resource; + /** * A list of tenant IDs to authenticate against. If defined, then these IDs will be used * instead of querying the tenants endpoint of the armResource diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index cc34f72562..2c5fb70f56 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -789,6 +789,13 @@ declare module 'azdata' { delete?: boolean; } + export enum AzureResource { + /** + * Azure Log Analytics + */ + AzureLogAnalytics = 8 + } + export interface ButtonProperties { /** * Specifies whether to use expanded layout or not. diff --git a/src/sql/platform/accounts/common/interfaces.ts b/src/sql/platform/accounts/common/interfaces.ts index 386b56689f..1daf0d6186 100644 --- a/src/sql/platform/accounts/common/interfaces.ts +++ b/src/sql/platform/accounts/common/interfaces.ts @@ -47,12 +47,18 @@ export interface IAccountManagementService { readonly updateAccountListEvent: Event; } +// API sqlExtHostTypes.ts > AzureResource should also be updated // Enum matching the AzureResource enum from azdata.d.ts export enum AzureResource { ResourceManagement = 0, Sql = 1, OssRdbms = 2, - AzureKeyVault = 3 + AzureKeyVault = 3, + Graph = 4, + MicrosoftResourceManagement = 5, + AzureDevOps = 6, + MsGraph = 7, + AzureLogAnalytics = 8 } export interface IAccountStore { diff --git a/src/sql/workbench/api/common/sqlExtHostTypes.ts b/src/sql/workbench/api/common/sqlExtHostTypes.ts index 78ad5e9832..1602a4ca5b 100644 --- a/src/sql/workbench/api/common/sqlExtHostTypes.ts +++ b/src/sql/workbench/api/common/sqlExtHostTypes.ts @@ -425,6 +425,7 @@ export class TreeComponentItem extends vsExtTypes.TreeItem { checked?: boolean; } +// Accounts interfaces.ts > AzureResource should also be updated export enum AzureResource { ResourceManagement = 0, Sql = 1, @@ -433,7 +434,8 @@ export enum AzureResource { Graph = 4, MicrosoftResourceManagement = 5, AzureDevOps = 6, - MsGraph = 7 + MsGraph = 7, + AzureLogAnalytics = 8 } export class TreeItem extends vsExtTypes.TreeItem { diff --git a/src/sql/workbench/services/connection/browser/connectionManagementService.ts b/src/sql/workbench/services/connection/browser/connectionManagementService.ts index 9c9a47afcf..01f93b9119 100644 --- a/src/sql/workbench/services/connection/browser/connectionManagementService.ts +++ b/src/sql/workbench/services/connection/browser/connectionManagementService.ts @@ -75,7 +75,7 @@ export class ConnectionManagementService extends Disposable implements IConnecti private static readonly CONNECTION_MEMENTO = 'ConnectionManagement'; private static readonly _azureResources: AzureResource[] = - [AzureResource.ResourceManagement, AzureResource.Sql, AzureResource.OssRdbms]; + [AzureResource.ResourceManagement, AzureResource.Sql, AzureResource.OssRdbms, AzureResource.AzureLogAnalytics]; constructor( @IConnectionDialogService private _connectionDialogService: IConnectionDialogService,