2024-03-19 17:04:11 +05:30

347 lines
6.5 KiB
TypeScript

import ROUTES from 'constants/routes';
import { ModuleProps } from '../OnboardingContainer';
import { DataSourceType } from '../Steps/DataSource/DataSource';
export enum ModulesMap {
APM = 'APM',
LogsManagement = 'LogsManagement',
InfrastructureMonitoring = 'InfrastructureMonitoring',
AwsMonitoring = 'AwsMonitoring',
}
export const frameworksMap = {
APM: {
java: [
{
value: 'springBoot',
label: 'Spring Boot',
},
{
value: 'tomcat',
label: 'Tomcat',
},
{
value: 'jboss',
label: 'JBoss',
},
{
value: 'other',
label: 'Others',
},
],
javascript: [
{
value: 'express',
label: 'Express',
},
{
value: 'nestjs',
label: 'Nest JS',
},
{
value: 'nodejs',
label: 'Nodejs',
},
{
value: 'reactjs',
label: 'React JS',
},
{
value: 'others',
label: 'Other Web Instrumentation',
},
],
python: [
{
value: 'django',
label: 'Django',
},
{
value: 'fastAPI',
label: 'Fast API',
},
{
value: 'flask',
label: 'Flask',
},
{
value: 'falcon',
label: 'Falcon',
},
{
value: 'other',
label: 'Others',
},
],
},
LogsManagement: {},
InfrastructureMonitoring: {},
AwsMonitoring: {},
};
export const defaultApplicationDataSource = {
name: 'java',
id: 'java',
imgURL: `Logos/java.png`,
};
const supportedLanguages = [
{
name: 'java',
id: 'java',
imgURL: `/Logos/java.png`,
},
{
name: 'python',
id: 'python',
imgURL: `/Logos/python.png`,
},
{
name: 'go',
id: 'go',
imgURL: `/Logos/go.png`,
},
{
name: 'javascript',
id: 'javascript',
imgURL: `/Logos/javascript.png`,
},
{
name: 'rails',
id: 'rails',
imgURL: `/Logos/rails.png`,
},
{
name: '.NET',
id: 'dotnet',
imgURL: `/Logos/dotnet.png`,
},
{
name: 'rust',
id: 'rust',
imgURL: `/Logos/rust.png`,
},
{
name: 'elixir',
id: 'elixir',
imgURL: `/Logos/elixir.png`,
},
{
name: 'swift',
id: 'swift',
imgURL: `/Logos/swift.png`,
},
{
name: 'php',
id: 'php',
imgURL: `/Logos/php.png`,
},
];
export const defaultLogsType = {
name: 'Kubernetes Pod Logs',
id: 'kubernetes',
imgURL: `/Logos/kubernetes.svg`,
};
const supportedLogsTypes = [
{
name: 'Kubernetes Pod Logs',
id: 'kubernetes',
imgURL: `/Logos/kubernetes.svg`,
},
{
name: 'Docker Container Logs',
id: 'docker',
imgURL: `/Logos/docker.svg`,
},
{
name: 'SysLogs',
id: 'syslogs',
imgURL: `/Logos/syslogs.svg`,
},
{
name: 'Application Logs',
id: 'application_logs',
imgURL: `/Logos/software-window.svg`,
},
{
name: 'FluentBit',
id: 'fluentBit',
imgURL: `/Logos/fluent-bit.png`,
},
{
name: 'FluentD',
id: 'fluentD',
imgURL: `/Logos/fluentd.png`,
},
{
name: 'LogStash',
id: 'logStash',
imgURL: `/Logos/logstash.svg`,
},
{
name: 'Heroku',
id: 'heroku',
imgURL: `/Logos/heroku.png`,
},
{
name: 'Vercel',
id: 'vercel',
imgURL: `/Logos/vercel.png`,
},
{
name: 'HTTP',
id: 'http',
imgURL: `/Logos/http.png`,
},
{
name: 'Cloudwatch',
id: 'cloudwatch',
imgURL: `/Logos/cloudwatch.png`,
},
];
export const defaultInfraMetricsType = {
name: 'Kubernetes Infra Metrics',
id: 'kubernetesInfraMetrics',
imgURL: `/Logos/kubernetes.svg`,
};
const supportedInfraMetrics = [
{
name: 'Kubernetes Infra Metrics',
id: 'kubernetesInfraMetrics',
imgURL: `/Logos/kubernetes.svg`,
},
{
name: 'HostMetrics',
id: 'hostMetrics',
imgURL: `/Logos/software-window.svg`,
},
{
name: 'Other Metrics',
id: 'otherMetrics',
imgURL: `/Logos/cmd-terminal.svg`,
},
];
export const defaultAwsServices = {
name: 'EC2 - App/Server Logs',
id: 'awsEc2ApplicationLogs',
imgURL: `/Logos/ec2.svg`,
};
const supportedAwsServices = [
{
name: 'EC2 - App/Server Logs',
id: 'awsEc2ApplicationLogs',
imgURL: `/Logos/ec2.svg`,
},
{
name: 'EC2 - Infra Metrics',
id: 'awsEc2InfrastructureMetrics',
imgURL: `/Logos/ec2.svg`,
},
{
name: 'ECS - EC2',
id: 'awsEcsEc2',
imgURL: `/Logos/ecs.svg`,
},
{
name: 'ECS - Fargate',
id: 'awsEcsFargate',
imgURL: `/Logos/ecs.svg`,
},
{
name: 'ECS - External',
id: 'awsEcsExternal',
imgURL: `/Logos/ecs.svg`,
},
{
name: 'EKS',
id: 'awsEks',
imgURL: `/Logos/eks.svg`,
},
];
export const getDataSources = (module: ModuleProps): DataSourceType[] => {
if (module.id === ModulesMap.APM) {
return supportedLanguages;
}
if (module.id === ModulesMap.InfrastructureMonitoring) {
return supportedInfraMetrics;
}
if (module.id === ModulesMap.LogsManagement) {
return supportedLogsTypes;
}
return supportedAwsServices;
};
export const getSupportedFrameworks = ({
module,
dataSource,
}: {
module: ModuleProps;
dataSource: DataSourceType;
}): [] => {
const { id: moduleID } = module;
const { name: dataSourceName } = dataSource;
if (
(moduleID === ModulesMap.APM && dataSourceName === 'go') ||
(moduleID === ModulesMap.APM && dataSourceName === 'rails') ||
(moduleID === ModulesMap.APM && dataSourceName === '.NET') ||
(moduleID === ModulesMap.APM && dataSourceName === 'rust') ||
(moduleID === ModulesMap.APM && dataSourceName === 'elixir') ||
(moduleID === ModulesMap.APM && dataSourceName === 'swift') ||
(moduleID === ModulesMap.APM && dataSourceName === 'php')
) {
return [];
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return frameworksMap[moduleID][dataSourceName];
};
export const hasFrameworks = ({
module,
dataSource,
}: {
module: ModuleProps;
dataSource: any;
}): boolean => {
const { id: moduleID } = module;
const { name: dataSourceName } = dataSource;
// eslint-disable-next-line sonarjs/prefer-single-boolean-return
if (
moduleID === ModulesMap.LogsManagement ||
moduleID === ModulesMap.InfrastructureMonitoring ||
(moduleID === ModulesMap.APM && dataSourceName === 'go') ||
(moduleID === ModulesMap.APM && dataSourceName === 'rails') ||
(moduleID === ModulesMap.APM && dataSourceName === '.NET') ||
(moduleID === ModulesMap.APM && dataSourceName === 'rust') ||
(moduleID === ModulesMap.APM && dataSourceName === 'elixir') ||
(moduleID === ModulesMap.APM && dataSourceName === 'swift') ||
(moduleID === ModulesMap.APM && dataSourceName === 'php')
) {
return false;
}
return true;
};
export const moduleRouteMap = {
[ModulesMap.APM]: ROUTES.GET_STARTED_APPLICATION_MONITORING,
[ModulesMap.LogsManagement]: ROUTES.GET_STARTED_LOGS_MANAGEMENT,
[ModulesMap.InfrastructureMonitoring]:
ROUTES.GET_STARTED_INFRASTRUCTURE_MONITORING,
[ModulesMap.AwsMonitoring]: ROUTES.GET_STARTED_AWS_MONITORING,
};