import { SelectableValue } from '@grafana/data'; export enum AzureCloud { Public = 'AzureCloud', China = 'AzureChinaCloud', USGovernment = 'AzureUSGovernment', Germany = 'AzureGermanCloud', None = '', } export const KnownAzureClouds = [ { value: AzureCloud.Public, label: 'Azure' }, { value: AzureCloud.China, label: 'Azure China' }, { value: AzureCloud.USGovernment, label: 'Azure US Government' }, { value: AzureCloud.Germany, label: 'Azure Germany' }, ] as SelectableValue[]; export type AzureAuthType = 'msi' | 'clientsecret'; export type ConcealedSecret = symbol; interface AzureCredentialsBase { authType: AzureAuthType; defaultSubscriptionId?: string; } export interface AzureManagedIdentityCredentials extends AzureCredentialsBase { authType: 'msi'; } export interface AzureClientSecretCredentials extends AzureCredentialsBase { authType: 'clientsecret'; azureCloud?: string; tenantId?: string; clientId?: string; clientSecret?: string | ConcealedSecret; } export type AzureCredentials = AzureManagedIdentityCredentials | AzureClientSecretCredentials; export function isCredentialsComplete(credentials: AzureCredentials): boolean { switch (credentials.authType) { case 'msi': return true; case 'clientsecret': return !!(credentials.azureCloud && credentials.tenantId && credentials.clientId && credentials.clientSecret); } }