Files
Hugo Häggmark 68cbd23916 Chore: reduces barrel files (#107512)
* Chore: reduce barrel files

* chore: fixes unit test

* chore: fix broken path
2025-07-07 09:23:27 +02:00

75 lines
2.5 KiB
TypeScript

import {
AzureCredentials,
getDatasourceCredentials,
getDefaultAzureCloud,
getClientSecret,
resolveLegacyCloudName,
updateDatasourceCredentials,
} from '@grafana/azure-sdk';
import { config } from '@grafana/runtime';
import { AzureMonitorDataSourceInstanceSettings, AzureMonitorDataSourceSettings } from './types/types';
export function getCredentials(
options: AzureMonitorDataSourceSettings | AzureMonitorDataSourceInstanceSettings
): AzureCredentials {
// Try to get the credentials from the datasource settings,
// If not found, return the legacy azure monitor credentials if they exist or fallback to default credentials
const creds = getDatasourceCredentials(options);
if (creds) {
return creds;
}
return getLegacyCredentials(options) || getDefaultCredentials();
}
export function updateCredentials(
options: AzureMonitorDataSourceSettings,
credentials: AzureCredentials
): AzureMonitorDataSourceSettings {
return updateDatasourceCredentials(options, credentials);
}
function getLegacyCredentials(
options: AzureMonitorDataSourceSettings | AzureMonitorDataSourceInstanceSettings
): AzureCredentials | undefined {
try {
// If authentication type isn't explicitly specified and datasource has client credentials,
// then this is existing datasource which is configured for app registration (client secret)
if (
options.jsonData.azureAuthType === 'clientsecret' ||
(!options.jsonData.azureAuthType && options.jsonData.tenantId && options.jsonData.clientId)
) {
return {
authType: 'clientsecret',
tenantId: options.jsonData.tenantId,
clientId: options.jsonData.clientId,
azureCloud: resolveLegacyCloudName(options.jsonData.cloudName) || getDefaultAzureCloud(),
clientSecret: getClientSecret(options),
};
}
// If the authentication type is not set, then no legacy credentials exist so return undefined
if (!options.jsonData.azureAuthType) {
return undefined;
}
return { authType: options.jsonData.azureAuthType };
} catch (e) {
if (e instanceof Error) {
console.error('Unable to restore legacy credentials: %s', e.message);
}
return undefined;
}
}
function getDefaultCredentials(): AzureCredentials {
if (config.azure.managedIdentityEnabled) {
return { authType: 'msi' };
} else if (config.azure.workloadIdentityEnabled) {
return { authType: 'workloadidentity' };
} else {
return { authType: 'clientsecret', azureCloud: getDefaultAzureCloud() };
}
}