diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/ConfigEditor.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/ConfigEditor.tsx index 88016952e01..e040801d038 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/ConfigEditor.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/ConfigEditor.tsx @@ -24,7 +24,7 @@ export class ConfigEditor extends PureComponent { const { options } = this.props; this.state = { - config: ConfigEditor.keyFill(options), + config: ConfigEditor.defaults(options), subscriptions: [], logAnalyticsSubscriptions: [], logAnalyticsWorkspaces: [], @@ -44,36 +44,19 @@ export class ConfigEditor extends PureComponent { static getDerivedStateFromProps(props: Props, state: State) { return { ...state, - config: ConfigEditor.keyFill(props.options), + config: ConfigEditor.defaults(props.options), }; } - static keyFill = (options: any) => { + static defaults = (options: any) => { options.jsonData.cloudName = options.jsonData.cloudName || 'azuremonitor'; if (!options.jsonData.hasOwnProperty('azureLogAnalyticsSameAs')) { options.jsonData.azureLogAnalyticsSameAs = true; } - if (!options.hasOwnProperty('editorSecureJsonData')) { - options.editorSecureJsonData = { - clientSecret: '', - logAnalyticsClientSecret: '', - appInsightsApiKey: '', - }; - } - - if (!options.hasOwnProperty('editorJsonData')) { - options.editorJsonData = { - clientId: options.jsonData.clientId || '', - tenantId: options.jsonData.tenantId || '', - subscriptionId: options.jsonData.subscriptionId || '', - logAnalyticsClientId: options.jsonData.logAnalyticsClientId || '', - logAnalyticsDefaultWorkspace: options.jsonData.logAnalyticsDefaultWorkspace || '', - logAnalyticsTenantId: options.jsonData.logAnalyticsTenantId || '', - logAnalyticsSubscriptionId: options.jsonData.logAnalyticsSubscriptionId || '', - appInsightsAppId: options.jsonData.appInsightsAppId || '', - }; + if (!options.hasOwnProperty('secureJsonData')) { + options.secureJsonData = {}; } if (!options.hasOwnProperty('secureJsonFields')) { @@ -111,39 +94,13 @@ export class ConfigEditor extends PureComponent { } } - for (const m in config.editorJsonData) { - if (!config.hasOwnProperty('jsonData')) { - config.jsonData = {}; - } - if (config.editorJsonData[m].length === 0) { - if (config.hasOwnProperty('jsonData') && config.jsonData.hasOwnProperty(m)) { - delete config.jsonData[m]; - } - } else { - config.jsonData[m] = config.editorJsonData[m]; - } - } - - for (const l in config.editorSecureJsonData) { - if (!config.hasOwnProperty('secureJsonData')) { - config.secureJsonData = {}; - } - if (config.editorSecureJsonData[l].length === 0) { - if (config.hasOwnProperty('secureJsonData') && config.secureJsonData.hasOwnProperty(l)) { - delete config.secureJsonData[l]; - } - } else { - config.secureJsonData[l] = config.editorSecureJsonData[l]; - } - } - this.props.onOptionsChange({ ...config, }); }; hasNecessaryCredentials = () => { - if (!this.state.config.secureJsonFields.clientSecret && !this.state.config.editorSecureJsonData.clientSecret) { + if (!this.state.config.secureJsonFields.clientSecret && !this.state.config.secureJsonData.clientSecret) { return false; } @@ -157,7 +114,7 @@ export class ConfigEditor extends PureComponent { logAnalyticsHasNecessaryCredentials = () => { if ( !this.state.config.secureJsonFields.logAnalyticsClientSecret && - !this.state.config.editorSecureJsonData.logAnalyticsClientSecret + !this.state.config.secureJsonData.logAnalyticsClientSecret ) { return false; } @@ -206,11 +163,10 @@ export class ConfigEditor extends PureComponent { if (subscriptions && subscriptions.length > 0) { this.setState({ subscriptions }); - this.state.config.editorJsonData.subscriptionId = - this.state.config.editorJsonData.subscriptionId || subscriptions[0].value; + this.state.config.jsonData.subscriptionId = this.state.config.jsonData.subscriptionId || subscriptions[0].value; } - if (this.state.config.editorJsonData.subscriptionId && this.state.config.jsonData.azureLogAnalyticsSameAs) { + if (this.state.config.jsonData.subscriptionId && this.state.config.jsonData.azureLogAnalyticsSameAs) { await this.getWorkspaces(); } }; @@ -233,19 +189,18 @@ export class ConfigEditor extends PureComponent { if (logAnalyticsSubscriptions && logAnalyticsSubscriptions.length > 0) { this.setState({ logAnalyticsSubscriptions }); - this.state.config.editorJsonData.logAnalyticsSubscriptionId = - this.state.config.editorJsonData.logAnalyticsSubscriptionId || logAnalyticsSubscriptions[0].value; + this.state.config.jsonData.logAnalyticsSubscriptionId = + this.state.config.jsonData.logAnalyticsSubscriptionId || logAnalyticsSubscriptions[0].value; } - if (this.state.config.editorJsonData.logAnalyticsSubscriptionId) { + if (this.state.config.jsonData.logAnalyticsSubscriptionId) { await this.getWorkspaces(); } }; getWorkspaces = async () => { - const sameAs = - this.state.config.jsonData.azureLogAnalyticsSameAs && this.state.config.editorJsonData.subscriptionId; - if (!sameAs && !this.state.config.editorJsonData.logAnalyticsSubscriptionId) { + const sameAs = this.state.config.jsonData.azureLogAnalyticsSameAs && this.state.config.jsonData.subscriptionId; + if (!sameAs && !this.state.config.jsonData.logAnalyticsSubscriptionId) { return; } @@ -256,9 +211,7 @@ export class ConfigEditor extends PureComponent { ); let logAnalyticsWorkspaces = await azureLogAnalyticsDatasource.getWorkspaces( - sameAs - ? this.state.config.editorJsonData.subscriptionId - : this.state.config.editorJsonData.logAnalyticsSubscriptionId + sameAs ? this.state.config.jsonData.subscriptionId : this.state.config.jsonData.logAnalyticsSubscriptionId ); logAnalyticsWorkspaces = logAnalyticsWorkspaces.map((workspace: any) => { return { @@ -270,8 +223,8 @@ export class ConfigEditor extends PureComponent { if (logAnalyticsWorkspaces.length > 0) { this.setState({ logAnalyticsWorkspaces }); - this.state.config.editorJsonData.logAnalyticsDefaultWorkspace = - this.state.config.editorJsonData.logAnalyticsDefaultWorkspace || logAnalyticsWorkspaces[0].value; + this.state.config.jsonData.logAnalyticsDefaultWorkspace = + this.state.config.jsonData.logAnalyticsDefaultWorkspace || logAnalyticsWorkspaces[0].value; } }; diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/__snapshots__/ConfigEditor.test.tsx.snap b/public/app/plugins/datasource/grafana-azure-monitor-datasource/__snapshots__/ConfigEditor.test.tsx.snap index 94a3557d961..19e85c690aa 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/__snapshots__/ConfigEditor.test.tsx.snap +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/__snapshots__/ConfigEditor.test.tsx.snap @@ -10,21 +10,6 @@ exports[`Render should render component 1`] = ` "basicAuthPassword": "", "basicAuthUser": "", "database": "", - "editorJsonData": Object { - "appInsightsAppId": "", - "clientId": "", - "logAnalyticsClientId": "", - "logAnalyticsDefaultWorkspace": "", - "logAnalyticsSubscriptionId": "", - "logAnalyticsTenantId": "", - "subscriptionId": "", - "tenantId": "", - }, - "editorSecureJsonData": Object { - "appInsightsApiKey": "", - "clientSecret": "", - "logAnalyticsClientSecret": "", - }, "id": 21, "isDefault": false, "jsonData": Object { @@ -57,21 +42,6 @@ exports[`Render should render component 1`] = ` "basicAuthPassword": "", "basicAuthUser": "", "database": "", - "editorJsonData": Object { - "appInsightsAppId": "", - "clientId": "", - "logAnalyticsClientId": "", - "logAnalyticsDefaultWorkspace": "", - "logAnalyticsSubscriptionId": "", - "logAnalyticsTenantId": "", - "subscriptionId": "", - "tenantId": "", - }, - "editorSecureJsonData": Object { - "appInsightsApiKey": "", - "clientSecret": "", - "logAnalyticsClientSecret": "", - }, "id": 21, "isDefault": false, "jsonData": Object { @@ -106,21 +76,6 @@ exports[`Render should render component 1`] = ` "basicAuthPassword": "", "basicAuthUser": "", "database": "", - "editorJsonData": Object { - "appInsightsAppId": "", - "clientId": "", - "logAnalyticsClientId": "", - "logAnalyticsDefaultWorkspace": "", - "logAnalyticsSubscriptionId": "", - "logAnalyticsTenantId": "", - "subscriptionId": "", - "tenantId": "", - }, - "editorSecureJsonData": Object { - "appInsightsApiKey": "", - "clientSecret": "", - "logAnalyticsClientSecret": "", - }, "id": 21, "isDefault": false, "jsonData": Object { diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.test.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.test.tsx index 24a64b0e4e3..928a9b43698 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.test.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.test.tsx @@ -20,18 +20,16 @@ const setup = (propOverrides?: object) => { basicAuthPassword: '', withCredentials: false, isDefault: false, - jsonData: { - azureLogAnalyticsSameAs: false, - }, secureJsonFields: { logAnalyticsClientSecret: false, }, - editorJsonData: { + jsonData: { + azureLogAnalyticsSameAs: false, logAnalyticsDefaultWorkspace: '', logAnalyticsClientSecret: '', logAnalyticsTenantId: '', }, - editorSecureJsonData: { + secureJsonData: { logAnalyticsClientSecret: '', }, version: 1, @@ -67,7 +65,7 @@ describe('Render', () => { it('should enable azure log analytics load workspaces button', () => { const wrapper = setup({ - editorJsonData: { + jsonData: { logAnalyticsDefaultWorkspace: '', logAnalyticsTenantId: 'e7f3f661-a933-4b3f-8176-51c4f982ec48', logAnalyticsClientId: '44693801-6ee6-49de-9b2d-9106972f9572', diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx index 291005a8b89..468452cf6c7 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx @@ -43,8 +43,8 @@ export class AnalyticsConfig extends PureComponent { onLogAnalyticsTenantIdChange = (logAnalyticsTenantId: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, logAnalyticsTenantId, }, }); @@ -53,8 +53,8 @@ export class AnalyticsConfig extends PureComponent { onLogAnalyticsClientIdChange = (logAnalyticsClientId: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, logAnalyticsClientId, }, }); @@ -63,8 +63,8 @@ export class AnalyticsConfig extends PureComponent { onLogAnalyticsClientSecretChange = (logAnalyticsClientSecret: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorSecureJsonData: { - ...this.state.config.editorSecureJsonData, + secureJsonData: { + ...this.state.config.secureJsonData, logAnalyticsClientSecret, }, }); @@ -81,8 +81,8 @@ export class AnalyticsConfig extends PureComponent { onLogAnalyticsSubscriptionSelect = (logAnalyticsSubscription: SelectableValue) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, logAnalyticsSubscriptionId: logAnalyticsSubscription.value, }, }); @@ -91,8 +91,8 @@ export class AnalyticsConfig extends PureComponent { onWorkspaceSelectChange = (logAnalyticsDefaultWorkspace: SelectableValue) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, logAnalyticsDefaultWorkspace: logAnalyticsDefaultWorkspace.value, }, }); @@ -110,29 +110,30 @@ export class AnalyticsConfig extends PureComponent { hasWorkspaceRequiredFields = () => { const { - config: { editorJsonData, editorSecureJsonData, jsonData, secureJsonFields }, + config: { jsonData, secureJsonData, secureJsonFields }, } = this.state; if (jsonData.azureLogAnalyticsSameAs) { return ( - editorJsonData.tenantId && - editorJsonData.clientId && - editorJsonData.subscriptionId && - (editorSecureJsonData.clientSecret || secureJsonFields.clientSecret) + jsonData.tenantId && + jsonData.clientId && + jsonData.subscriptionId && + (secureJsonData.clientSecret || secureJsonFields.clientSecret) ); } return ( - editorJsonData.logAnalyticsTenantId.length && - editorJsonData.logAnalyticsClientId.length && - editorJsonData.logAnalyticsSubscriptionId && - (secureJsonFields.logAnalyticsClientSecret || editorSecureJsonData.logAnalyticsClientSecret) + jsonData.logAnalyticsTenantId && + jsonData.logAnalyticsTenantId.length && + (jsonData.logAnalyticsClientId && jsonData.logAnalyticsClientId.length) && + jsonData.logAnalyticsSubscriptionId && + (secureJsonFields.logAnalyticsClientSecret || secureJsonData.logAnalyticsClientSecret) ); }; render() { const { - config: { editorJsonData, editorSecureJsonData, jsonData, secureJsonFields }, + config: { jsonData, secureJsonData, secureJsonFields }, logAnalyticsSubscriptions, logAnalyticsWorkspaces, } = this.state; @@ -154,10 +155,10 @@ export class AnalyticsConfig extends PureComponent { {!jsonData.azureLogAnalyticsSameAs && ( {
) => onTenantIdChange(event.target.value)} />
@@ -124,7 +124,7 @@ export class AzureCredentialsForm extends PureComponent { ) => onClientIdChange(event.target.value)} /> @@ -152,7 +152,7 @@ export class AzureCredentialsForm extends PureComponent { ) => onClientSecretChange(event.target.value)} /> diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.test.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.test.tsx index 9a51b406ff7..88946c2b720 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.test.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.test.tsx @@ -20,14 +20,13 @@ const setup = (propOverrides?: object) => { basicAuthPassword: '', withCredentials: false, isDefault: false, - jsonData: {}, secureJsonFields: { appInsightsApiKey: false, }, - editorJsonData: { + jsonData: { appInsightsAppId: 'cddcc020-2c94-460a-a3d0-df3147ffa792', }, - editorSecureJsonData: { + secureJsonData: { appInsightsApiKey: 'e7f3f661-a933-4b3f-8176-51c4f982ec48', }, version: 1, @@ -54,10 +53,10 @@ describe('Render', () => { secureJsonFields: { appInsightsApiKey: true, }, - editorJsonData: { + jsonData: { appInsightsAppId: 'cddcc020-2c94-460a-a3d0-df3147ffa792', }, - editorSecureJsonData: { + secureJsonData: { appInsightsApiKey: 'e7f3f661-a933-4b3f-8176-51c4f982ec48', }, }, @@ -71,10 +70,10 @@ describe('Render', () => { secureJsonFields: { appInsightsApiKey: false, }, - editorJsonData: { + jsonData: { appInsightsAppId: 'cddcc020-2c94-460a-a3d0-df3147ffa792', }, - editorSecureJsonData: { + secureJsonData: { appInsightsApiKey: 'e7f3f661-a933-4b3f-8176-51c4f982ec48', }, }, diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx index b6883761d2f..ae6b8103194 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx @@ -31,8 +31,8 @@ export class InsightsConfig extends PureComponent { onAppInsightsAppIdChange = (appInsightsAppId: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, appInsightsAppId, }, }); @@ -41,8 +41,8 @@ export class InsightsConfig extends PureComponent { onAppInsightsApiKeyChange = (appInsightsApiKey: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorSecureJsonData: { - ...this.state.config.editorSecureJsonData, + secureJsonData: { + ...this.state.config.secureJsonData, appInsightsApiKey, }, }); @@ -87,7 +87,7 @@ export class InsightsConfig extends PureComponent { this.onAppInsightsApiKeyChange(event.target.value)} /> @@ -100,7 +100,7 @@ export class InsightsConfig extends PureComponent {
this.onAppInsightsAppIdChange(event.target.value)} />
diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MonitorConfig.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MonitorConfig.tsx index d10a7f25a77..7baf0355529 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MonitorConfig.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MonitorConfig.tsx @@ -54,8 +54,8 @@ export class MonitorConfig extends PureComponent { onTenantIdChange = (tenantId: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, tenantId, }, }); @@ -64,8 +64,8 @@ export class MonitorConfig extends PureComponent { onClientIdChange = (clientId: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, clientId, }, }); @@ -74,8 +74,8 @@ export class MonitorConfig extends PureComponent { onClientSecretChange = (clientSecret: string) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorSecureJsonData: { - ...this.state.config.editorSecureJsonData, + secureJsonData: { + ...this.state.config.secureJsonData, clientSecret, }, }); @@ -95,8 +95,8 @@ export class MonitorConfig extends PureComponent { onSubscriptionSelect = (subscription: SelectableValue) => { this.props.onDatasourceUpdate({ ...this.state.config, - editorJsonData: { - ...this.state.config.editorJsonData, + jsonData: { + ...this.state.config.jsonData, subscriptionId: subscription.value, }, }); @@ -111,10 +111,10 @@ export class MonitorConfig extends PureComponent { selectedAzureCloud={config.jsonData.cloudName} azureCloudOptions={azureClouds} subscriptionOptions={subscriptions} - selectedSubscription={config.editorJsonData.subscriptionId} - tenantId={config.editorJsonData.tenantId} - clientId={config.editorJsonData.clientId} - clientSecret={config.editorSecureJsonData.clientSecret} + selectedSubscription={config.jsonData.subscriptionId} + tenantId={config.jsonData.tenantId} + clientId={config.jsonData.clientId} + clientSecret={config.secureJsonData.clientSecret} clientSecretConfigured={config.secureJsonFields.clientSecret} onAzureCloudChange={this.onAzureCloudSelect} onSubscriptionSelectChange={this.onSubscriptionSelect}