From 220fa2de904f239e967bd5439cbd8f241bfdf17e Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Mon, 6 May 2024 17:28:46 +0530 Subject: [PATCH 1/8] PMM-12971 Add pg exporter connection limit --- .../AddRemoteInstance/AddRemoteInstance.types.ts | 2 ++ .../AddRemoteInstance/FormParts/FormParts.messages.ts | 3 +++ .../PostgreSQLConnectionDetails.tsx | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts index a8de85474a45d..ff7dda43f22f4 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts @@ -103,6 +103,7 @@ export interface PostgreSQLPayload extends RemoteCommonPayload, TLSCommon { agent_password: string; max_query_length: number; auto_discovery_limit: number; + max_exporter_connections: number; } export interface MySQLPayload extends RemoteCommonPayload, TLSCommon { @@ -196,6 +197,7 @@ export interface RDSPayload extends CommonRDSAzurePayload { metrics_mode: string; qan_postgresql_pgstatements: boolean; agent_password: string; + max_exporter_connections: number; } export interface MSAzurePayload extends CommonRDSAzurePayload { diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts index 9fcee1d47cdc2..e75465cdda40b 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts @@ -32,6 +32,7 @@ export const Messages = { autoDiscovery: 'Auto-discovery', autoDiscoveryLimit: 'Auto-discovery limit', autoDiscoveryLimitOptions: 'State', + maxConnectionLimit: 'Maximum connection limit', }, mysqlDetails: { maxQueryLength: 'Max query length', @@ -91,6 +92,7 @@ export const Messages = { database: 'Database (default: postgres)', maxQueryLength: 'Max query length', autoDiscoveryLimit: 'Auto-discovery limit', + maxConnectionLimit: 'Maximum connection limit', }, mysqlDetails: { maxQueryLength: 'Max query length', @@ -131,6 +133,7 @@ export const Messages = { database: 'Database name', maxQueryLength: 'Full Example (Fingerprint) storage is not allowed by default to have the best performance', autoDiscoveryLimit: 'Turn off auto-discovery when the total count of databases exceeds the limit.', + maxConnectionLimit: 'Maximum number of connections to PostgreSQL instance that exporter can use', }, mysqlDetails: { maxQueryLength: 'Full Example (Fingerprint) storage is not allowed by default to have the best performance', diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx index 1ae6fbc86512d..ecfb7b991bea4 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx @@ -83,6 +83,14 @@ export const PostgreSQLConnectionDetails: FC = ({ form tooltipText={Messages.form.tooltips.postgresqlDetails.maxQueryLength} /> +
+ +
); }; From b902175a7d624cd4bdeef309be853c9111d10a75 Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Tue, 7 May 2024 18:31:59 +0530 Subject: [PATCH 2/8] PMM-12971 Add check for azure pg --- .../PostgreSQLConnectionDetails.tsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx index ecfb7b991bea4..b0d779da43150 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx @@ -83,14 +83,16 @@ export const PostgreSQLConnectionDetails: FC = ({ form tooltipText={Messages.form.tooltips.postgresqlDetails.maxQueryLength} /> -
- -
+ {!remoteInstanceCredentials.isAzure && ( +
+ +
+ )} ); }; From e7c967ebebda2e07120a3d1b720620d2faa94153 Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Tue, 7 May 2024 20:30:36 +0530 Subject: [PATCH 3/8] PMM-12971 Update test cases for pg max connections --- .../PostgreSQLConnectionDetails.test.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx index c169872521614..5965323934edb 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx @@ -22,4 +22,26 @@ describe('PostgreSQL connection details:: ', () => { expect(screen.getByTestId('maxQueryLength-text-input')).toHaveValue('1000'); }); + + it('should have max connection field for pg and rds pg', () => { + render( +
} + /> + ); + const connectionlimitInput = screen.queryByTestId('maxExporterConnections-text-input'); + expect(connectionlimitInput).toBeInTheDocument(); + }); + + it('should not have max connection field for Azure', () => { + render( + } + /> + ); + const connectionlimitInput = screen.queryByTestId('maxExporterConnections-text-input'); + expect(connectionlimitInput).not.toBeInTheDocument(); + }); }); From 49b9dd354dd1422fdbc8d90014a5530550c28199 Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Mon, 20 May 2024 14:48:10 +0530 Subject: [PATCH 4/8] PMM-12971 Update pg max connection limit --- .../AdditionalOptions.constants.ts | 17 ++++++- .../AdditionalOptions.messages.ts | 4 ++ .../AdditionalOptions/AdditionalOptions.tsx | 45 ++++++++++++++++++- .../AdditionalOptions.types.ts | 6 +++ .../FormParts/FormParts.messages.ts | 9 ++-- .../PostgreSQLConnectionDetails.tsx | 10 ----- 6 files changed, 75 insertions(+), 16 deletions(-) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.constants.ts b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.constants.ts index 9db946b11a8eb..29114345ffb82 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.constants.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.constants.ts @@ -1,5 +1,9 @@ import { Messages } from './AdditionalOptions.messages'; -import { AutoDiscoveryOptionsInterface, TablestatOptionsInterface } from './AdditionalOptions.types'; +import { + AutoDiscoveryOptionsInterface, + TablestatOptionsInterface, + MaxConnectionLimitOptionsInterface, +} from './AdditionalOptions.types'; export const tablestatOptions = [ { @@ -30,3 +34,14 @@ export const autoDiscoveryOptions = [ label: Messages.form.autoDiscoveryOptions.custom, }, ]; + +export const maxConnectionLimitOptions = [ + { + value: MaxConnectionLimitOptionsInterface.enabled, + label: Messages.form.maxConnectionLimitOptions.enabled, + }, + { + value: MaxConnectionLimitOptionsInterface.disabled, + label: Messages.form.maxConnectionLimitOptions.disabled, + }, +]; diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.messages.ts b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.messages.ts index 76fd288d8892a..f81a325e52179 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.messages.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.messages.ts @@ -10,5 +10,9 @@ export const Messages = { disabled: 'Disabled', custom: 'Custom', }, + maxConnectionLimitOptions: { + enabled: 'Enabled', + disabled: 'Disabled', + }, }, }; diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx index 82ecdc8a1cf63..818e8b0e04564 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx @@ -14,8 +14,12 @@ import { Messages } from '../FormParts.messages'; import { getStyles } from '../FormParts.styles'; import { AdditionalOptionsFormPartProps, PostgreSQLAdditionalOptionsProps } from '../FormParts.types'; -import { autoDiscoveryOptions, tablestatOptions } from './AdditionalOptions.constants'; -import { AutoDiscoveryOptionsInterface, TablestatOptionsInterface } from './AdditionalOptions.types'; +import { autoDiscoveryOptions, tablestatOptions, maxConnectionLimitOptions } from './AdditionalOptions.constants'; +import { + AutoDiscoveryOptionsInterface, + MaxConnectionLimitOptionsInterface, + TablestatOptionsInterface, +} from './AdditionalOptions.types'; import { MongodbTLSCertificate } from './MongodbTLSCertificate'; import { MysqlTLSCertificate } from './MysqlTLSCertificate'; import { PostgreTLSCertificate } from './PostgreTLSCertificate'; @@ -43,19 +47,31 @@ export const AdditionalOptionsFormPart: FC = ({ export const PostgreSQLAdditionalOptions: FC = ({ form, isRDS, isAzure }) => { const selectedOption = form.getState()?.values?.autoDiscoveryOptions; + const maxConnSelectedOption = form.getState()?.values?.maxConnectionLimitOptions; const [selectedValue, setSelectedValue] = useState(selectedOption || AutoDiscoveryOptionsInterface.enabled); + const [maxConnSelectedValue, setMaxConnSelectedValue] = useState( + maxConnSelectedOption || MaxConnectionLimitOptionsInterface.disabled + ); const styles = useStyles2(getStyles); const validators = [platformCoreValidators.containsNumber, ...platformCoreValidators.int32]; const getAutoDiscoveryLimitValue = (type: AutoDiscoveryOptionsInterface) => type === AutoDiscoveryOptionsInterface.disabled ? -1 : 10; + const getMaxConnectionLimitValue = (type: MaxConnectionLimitOptionsInterface) => 5; + useEffect(() => { setSelectedValue(selectedOption); form.change('autoDiscoveryLimit', getAutoDiscoveryLimitValue(selectedOption)); // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedOption]); + useEffect(() => { + setMaxConnSelectedValue(maxConnSelectedOption); + form.change('maxExporterConnections', getMaxConnectionLimitValue(maxConnSelectedOption)); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [maxConnSelectedOption]); + return ( <>

{Messages.form.labels.trackingOptions}

@@ -87,6 +103,31 @@ export const PostgreSQLAdditionalOptions: FC = tooltipText={Messages.form.tooltips.postgresqlDetails.autoDiscoveryLimit} /> + {!isAzure && ( +
+

{Messages.form.labels.postgresqlDetails.maxConnection}

+
+ + +
+
+ )} ); }; diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts index ad4d29f414076..c9d78c12c445c 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts @@ -9,3 +9,9 @@ export enum AutoDiscoveryOptionsInterface { disabled = 'disabled', custom = 'custom', } + +export enum MaxConnectionLimitOptionsInterface { + enabled = 'enabled', + disabled = 'disabled', + custom = 'custom', +} diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts index e75465cdda40b..98f7fd6c7b1e3 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.messages.ts @@ -32,7 +32,9 @@ export const Messages = { autoDiscovery: 'Auto-discovery', autoDiscoveryLimit: 'Auto-discovery limit', autoDiscoveryLimitOptions: 'State', - maxConnectionLimit: 'Maximum connection limit', + maxConnection: 'Maximum connection limit', + maxConnectionLimit: 'Maximum connection limit per PostgreSQL instance', + maxConnectionLimitOptions: 'State', }, mysqlDetails: { maxQueryLength: 'Max query length', @@ -92,7 +94,7 @@ export const Messages = { database: 'Database (default: postgres)', maxQueryLength: 'Max query length', autoDiscoveryLimit: 'Auto-discovery limit', - maxConnectionLimit: 'Maximum connection limit', + maxConnectionLimit: 'Maximum connection limit per PostgreSQL instance', }, mysqlDetails: { maxQueryLength: 'Max query length', @@ -133,7 +135,8 @@ export const Messages = { database: 'Database name', maxQueryLength: 'Full Example (Fingerprint) storage is not allowed by default to have the best performance', autoDiscoveryLimit: 'Turn off auto-discovery when the total count of databases exceeds the limit.', - maxConnectionLimit: 'Maximum number of connections to PostgreSQL instance that exporter can use', + maxConnectionLimit: + 'The maximum connections the Exporter can open to each PostgreSQL instance for monitoring. Higher values might be needed for larger or busier instances, but avoid setting it too high as it can impact performance. Adjust based on your instance size and monitoring needs.', }, mysqlDetails: { maxQueryLength: 'Full Example (Fingerprint) storage is not allowed by default to have the best performance', diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx index b0d779da43150..1ae6fbc86512d 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.tsx @@ -83,16 +83,6 @@ export const PostgreSQLConnectionDetails: FC = ({ form tooltipText={Messages.form.tooltips.postgresqlDetails.maxQueryLength} /> - {!remoteInstanceCredentials.isAzure && ( -
- -
- )} ); }; From 912d148377adf490626afdcc3bff5284e8b34c69 Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Tue, 21 May 2024 14:29:09 +0530 Subject: [PATCH 5/8] PMM-12971 Update default max connection logic --- .../AdditionalOptions/AdditionalOptions.tsx | 5 +++-- .../AdditionalOptions.types.ts | 1 - .../PostgreSQLConnectionDetails.test.tsx | 22 ------------------- 3 files changed, 3 insertions(+), 25 deletions(-) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx index 818e8b0e04564..29fe2343c7013 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx @@ -58,7 +58,8 @@ export const PostgreSQLAdditionalOptions: FC = const getAutoDiscoveryLimitValue = (type: AutoDiscoveryOptionsInterface) => type === AutoDiscoveryOptionsInterface.disabled ? -1 : 10; - const getMaxConnectionLimitValue = (type: MaxConnectionLimitOptionsInterface) => 5; + const getMaxConnectionLimitValue = (type: MaxConnectionLimitOptionsInterface) => + type === MaxConnectionLimitOptionsInterface.disabled ? null : 5; useEffect(() => { setSelectedValue(selectedOption); @@ -120,8 +121,8 @@ export const PostgreSQLAdditionalOptions: FC = key="maxExporterConnections" name="maxExporterConnections" defaultValue={5} + placeholder={'5'} disabled={maxConnSelectedValue !== MaxConnectionLimitOptionsInterface.enabled} - validators={validators} label={Messages.form.labels.postgresqlDetails.maxConnectionLimit} tooltipText={Messages.form.tooltips.postgresqlDetails.maxConnectionLimit} /> diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts index c9d78c12c445c..c7857f353da2f 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.types.ts @@ -13,5 +13,4 @@ export enum AutoDiscoveryOptionsInterface { export enum MaxConnectionLimitOptionsInterface { enabled = 'enabled', disabled = 'disabled', - custom = 'custom', } diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx index 5965323934edb..c169872521614 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/PostgreSQLConnectionDetails/PostgreSQLConnectionDetails.test.tsx @@ -22,26 +22,4 @@ describe('PostgreSQL connection details:: ', () => { expect(screen.getByTestId('maxQueryLength-text-input')).toHaveValue('1000'); }); - - it('should have max connection field for pg and rds pg', () => { - render( - } - /> - ); - const connectionlimitInput = screen.queryByTestId('maxExporterConnections-text-input'); - expect(connectionlimitInput).toBeInTheDocument(); - }); - - it('should not have max connection field for Azure', () => { - render( - } - /> - ); - const connectionlimitInput = screen.queryByTestId('maxExporterConnections-text-input'); - expect(connectionlimitInput).not.toBeInTheDocument(); - }); }); From f40197cbfe025a5a7a449c2210ab6352164624da Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Tue, 21 May 2024 15:01:16 +0530 Subject: [PATCH 6/8] PMM-12971 Update test cases --- .../components/AddRemoteInstance/FormParts/FormParts.test.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.test.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.test.tsx index 7af1b758c480e..dbd3684fcc7fe 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.test.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/FormParts.test.tsx @@ -181,7 +181,7 @@ describe('getAdditionalOptions ::', () => { const fields = container.querySelectorAll('input'); const trakingFields = screen.getAllByTestId('tracking-radio-button'); expect(trakingFields.length).toBe(trackingOptions.length); - expect(fields.length).toBe(12); + expect(fields.length).toBe(16); }); it('should render correct for RDS PostgreSQL', async () => { const type = Databases.postgresql; @@ -198,6 +198,6 @@ describe('getAdditionalOptions ::', () => { const fields = container.querySelectorAll('input'); const trakingFields = screen.getAllByTestId('tracking-radio-button'); expect(trakingFields.length).toBe(rdsTrackingOptions.length); - expect(fields.length).toBe(13); + expect(fields.length).toBe(17); }); }); From f116cb33655f284a5c298242f6ce143e1e2ffea2 Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Fri, 24 May 2024 16:51:31 +0530 Subject: [PATCH 7/8] PMM-12971 fix validation and rds parameter --- .../AddRemoteInstance/AddRemoteInstance.types.ts | 2 +- .../FormParts/AdditionalOptions/AdditionalOptions.tsx | 11 ++++++++--- .../percona/shared/helpers/validatorsForm/int32.ts | 9 +++++++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts index ff7dda43f22f4..47847aaab972e 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.types.ts @@ -197,7 +197,7 @@ export interface RDSPayload extends CommonRDSAzurePayload { metrics_mode: string; qan_postgresql_pgstatements: boolean; agent_password: string; - max_exporter_connections: number; + max_postgresql_exporter_connections: number; } export interface MSAzurePayload extends CommonRDSAzurePayload { diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx index 29fe2343c7013..64ede8c7b5e54 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx @@ -7,6 +7,7 @@ import { CheckboxField } from 'app/percona/shared/components/Elements/Checkbox'; import { NumberInputField } from 'app/percona/shared/components/Form/NumberInput'; import { RadioButtonGroupField } from 'app/percona/shared/components/Form/RadioButtonGroup'; import { Databases } from 'app/percona/shared/core'; +import Validators from 'app/percona/shared/helpers/validators'; import { validators as platformCoreValidators } from 'app/percona/shared/helpers/validatorsForm'; import { rdsTrackingOptions, trackingOptions } from '../FormParts.constants'; @@ -53,7 +54,8 @@ export const PostgreSQLAdditionalOptions: FC = maxConnSelectedOption || MaxConnectionLimitOptionsInterface.disabled ); const styles = useStyles2(getStyles); - const validators = [platformCoreValidators.containsNumber, ...platformCoreValidators.int32]; + const validators = [platformCoreValidators.containsNumber, platformCoreValidators.int32]; + const maxConnValidators = [Validators.min(0), platformCoreValidators.int32]; const getAutoDiscoveryLimitValue = (type: AutoDiscoveryOptionsInterface) => type === AutoDiscoveryOptionsInterface.disabled ? -1 : 10; @@ -118,10 +120,13 @@ export const PostgreSQLAdditionalOptions: FC = fullWidth /> { + const num = parseFloat(value); + if (Number.isFinite(num) && Number.isInteger(num) && num > INT_32.min - 1 && num < INT_32.max + 1) { + return undefined; + } -export const int32 = [greaterThan(INT_32.min - 1), lessThan(INT_32.max + 1)]; + return `Must be an Integer number`; +}; From 142b957098c5a8c20639eb7c3c9e0dba32aecd52 Mon Sep 17 00:00:00 2001 From: Yash Sartanpara Date: Fri, 24 May 2024 18:53:10 +0530 Subject: [PATCH 8/8] PMM-12971 Fix logic for RDS --- .../FormParts/AdditionalOptions/AdditionalOptions.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx index 64ede8c7b5e54..f4e7be9d82425 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/FormParts/AdditionalOptions/AdditionalOptions.tsx @@ -71,7 +71,10 @@ export const PostgreSQLAdditionalOptions: FC = useEffect(() => { setMaxConnSelectedValue(maxConnSelectedOption); - form.change('maxExporterConnections', getMaxConnectionLimitValue(maxConnSelectedOption)); + form.change( + isRDS ? 'maxPostgresqlExporterConnections' : 'maxExporterConnections', + getMaxConnectionLimitValue(maxConnSelectedOption) + ); // eslint-disable-next-line react-hooks/exhaustive-deps }, [maxConnSelectedOption]); @@ -120,8 +123,8 @@ export const PostgreSQLAdditionalOptions: FC = fullWidth />