Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ export const Messages = {
pgStatements: 'PG Stat Statements',
pgMonitor: 'PG Stat Monitor',
},
mongoQuerySourceOptions: {
none: 'None',
profiler: 'Profiler',
mongolog: 'Mongolog',
},
schemaOptions: {
http: 'HTTP',
https: 'HTTPS',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
ProxySQLPayload,
MongoDBPayload,
AddServicePayload,
MongoQuerySourceOptions,
} from './AddRemoteInstance.types';

const BASE_URL = '/services';
Expand Down Expand Up @@ -180,6 +181,12 @@ export const toPayload = (values: any, discoverName?: string, type?: InstanceAva
if (values.tls) {
data.authentication_mechanism = 'MONGODB-X509';
}

if (data.query_source === MongoQuerySourceOptions.profiler) {
data.qan_mongodb_profiler = true;
} else if (data.query_source === MongoQuerySourceOptions.mongolog) {
data.qan_mongodb_mongolog = true;
}
}

data.pmm_agent_id = values.pmm_agent_id.value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { getInstanceData, remoteToken } from './AddRemoteInstance.tools';
import {
AddRemoteInstanceProps,
FormValues,
MongoQuerySourceOptions,
MSAzurePayload,
RDSPayload,
TrackingOptions,
Expand Down Expand Up @@ -63,6 +64,10 @@ const AddRemoteInstance: FC<AddRemoteInstanceProps> = ({
initialValues.disable_comments_parsing = true;
}

if (type === Databases.mongodb) {
initialValues.query_source = MongoQuerySourceOptions.none;
}

const onSubmit = useCallback(
async (values: FormValues) => {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export interface FormValues extends RemoteInstanceCredentials {
qan_mysql_perfschema?: boolean;
disable_comments_parsing?: boolean;
tracking?: TrackingOptions;
query_source?: MongoQuerySourceOptions;
}

export enum TrackingOptions {
Expand All @@ -12,6 +13,12 @@ export enum TrackingOptions {
pgMonitor = 'qan_postgresql_pgstatmonitor_agent',
}

export enum MongoQuerySourceOptions {
none = 'none',
profiler = 'qan_mongodb_profiler',
mongolog = 'qan_mongodb_mongolog',
}

export interface InstanceData {
instanceType?: string;
defaultPort?: number;
Expand Down Expand Up @@ -138,6 +145,7 @@ export interface MongoDBPayload extends RemoteCommonPayload, TLSCommon {
cluster: string;
replication_set: string;
qan_mongodb_profiler: boolean;
qan_mongodb_mongolog: boolean;
tls_certificate_key: string;
tls_certificate_key_file_password: string;
tls_ca: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ 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';
import { mongoQuerySourceOptions, rdsTrackingOptions, trackingOptions } from '../FormParts.constants';
import { Messages } from '../FormParts.messages';
import { getStyles } from '../FormParts.styles';
import { AdditionalOptionsFormPartProps, PostgreSQLAdditionalOptionsProps } from '../FormParts.types';
Expand Down Expand Up @@ -186,6 +186,23 @@ const MySQLOptions = ({ form }: { form: FormApi }) => {
);
};

const MongoQuerySourceOptions = ({}: { form: FormApi }) => {
const styles = useStyles2(getStyles);

return (
<>
<h4>{Messages.form.labels.mongoQuerySource}</h4>
<RadioButtonGroupField
name="query_source"
data-testid="query-source-radio-button-group"
options={mongoQuerySourceOptions}
className={styles.radioField}
fullWidth
/>
</>
);
};

export const getAdditionalOptions = (
type: InstanceAvailableType,
remoteInstanceCredentials: RemoteInstanceCredentials,
Expand Down Expand Up @@ -270,11 +287,7 @@ export const getAdditionalOptions = (
<CheckboxField label={Messages.form.labels.additionalOptions.tls} name="tls" />
<MongodbTLSCertificate form={form} />
<CheckboxField label={Messages.form.labels.additionalOptions.tlsSkipVerify} name="tls_skip_verify" />
<CheckboxField
name="qan_mongodb_profiler"
data-testid="qan-mongodb-profiler-checkbox"
label={Messages.form.labels.additionalOptions.qanMongodbProfiler}
/>
<MongoQuerySourceOptions form={form} />
</>
);
case Databases.haproxy:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { SelectableValue } from '@grafana/data';

import { Messages } from '../AddRemoteInstance.messages';
import { TrackingOptions } from '../AddRemoteInstance.types';
import { MongoQuerySourceOptions, TrackingOptions } from '../AddRemoteInstance.types';

import { MetricsParameters, Schema } from './FormParts.types';

Expand All @@ -25,3 +25,9 @@ export const metricsParametersOptions: SelectableValue[] = [
{ value: MetricsParameters.manually, label: Messages.form.metricsParametersOptions.manually },
{ value: MetricsParameters.parsed, label: Messages.form.metricsParametersOptions.parsed },
];

export const mongoQuerySourceOptions: SelectableValue[] = [
{ value: MongoQuerySourceOptions.none, label: Messages.form.mongoQuerySourceOptions.none },
{ value: MongoQuerySourceOptions.profiler, label: Messages.form.mongoQuerySourceOptions.profiler },
{ value: MongoQuerySourceOptions.mongolog, label: Messages.form.mongoQuerySourceOptions.mongolog },
];
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export const Messages = {
},
labels: {
trackingOptions: 'Stat tracking options',
mongoQuerySource: 'Query source',
externalService: {
url: 'External service endpoint',
connectionParameters: 'External service connection parameters',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@ describe('getAdditionalOptions ::', () => {

expect(screen.getByTestId('tls-checkbox-input')).toBeInTheDocument();
expect(screen.getByTestId('tls_skip_verify-checkbox-input')).toBeInTheDocument();
expect(screen.getByTestId('qan_mongodb_profiler-checkbox-input')).toBeInTheDocument();
expect(screen.getByTestId('query_source-radio-state')).toBeInTheDocument();

expect(fields.length).toBe(3);
expect(fields.length).toBe(6);
});
it('should render correct for MySQL', async () => {
const type = Databases.mysql;
Expand Down
1 change: 1 addition & 0 deletions public/app/percona/inventory/Inventory.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export enum AgentType {
proxysql = 'proxysql',
proxysqlExporter = 'proxysqlExporter',
qanMongodb_profiler_agent = 'qan_mongodb_profiler_agent',
qanMongodb_mongolog_agent = 'qan_mongodb_mongolog_agent',
qanMysql_perfschema_agent = 'qan_mysql_perfschema_agent',
qanMysql_slowlog_agent = 'qan_mysql_slowlog_agent',
qanPostgresql_pgstatements_agent = 'qan_postgresql_pgstatements_agent',
Expand Down
Loading