Merge pull request #58 from navi-infra/INFRA-675

INFRA-675 | Abhishek | Add changes to configure service monitor from portal
This commit is contained in:
Abhishek Katiyar
2021-03-09 09:53:50 +05:30
committed by GitHub Enterprise
4 changed files with 66 additions and 3 deletions

View File

@@ -14,6 +14,7 @@ import {Button, Divider, Snackbar, Typography} from '@material-ui/core';
import {Alert} from "@material-ui/lab";
import DeploymentForm from './DeploymentForm';
import AWSAccessForm from './AWSAccessForm';
import ServiceMonitorForm from "./ServiceMonitorForm";
const useStyles = makeStyles((theme: Theme) => ({
root: {
@@ -69,6 +70,12 @@ const tabList: Array<FormTab> = [
component: <AWSAccessForm />,
errorCheckFn: _m.hasAwsAccess
},
{
name: 'Service Monitor',
displayName: 'service monitor',
component: <ServiceMonitorForm />,
errorCheckFn: _m.hasServiceMonitor
},
]
const tabHasErrors = (tab: FormTab, errors: any) => {

View File

@@ -4,12 +4,13 @@ import { toMenuItems } from './FormUtil';
import * as _m from '../models/Manifest'
import { FormikTextField } from '../components/common/FormikTextField';
import { useFormikContext } from 'formik';
import { makeStyles, TableCell } from '@material-ui/core';
import {Box, makeStyles, TableCell, Typography} from '@material-ui/core';
import { FormikTable } from '../components/common/FormikTable';
import HealthCheckCard from './HealthCheckCard';
import { cardStyles } from './Styles';
import {boxStyleProps, cardStyles} from './Styles';
import AutoscalingCard from './AutoscalingCard';
import CardLayout from '../components/common/CardLayout';
import {FormikCardList} from "../components/common/FormikCardList";
const useStyles = makeStyles({
...cardStyles,

View File

@@ -0,0 +1,37 @@
import CardLayout from "../components/common/CardLayout";
import {FormikTextField} from "../components/common/FormikTextField";
import * as React from "react";
import {makeStyles} from "@material-ui/core";
import {cardStyles} from "./Styles";
import NotConfigured from "./NotConfiguredPanel";
import * as _m from '../models/Manifest'
import {useFormikContext} from "formik";
const useStyles = makeStyles({
...cardStyles,
spacer: {
marginTop: 5,
marginBottom: 10
}
});
const ServiceMonitorForm = () => {
const { values, setValues }: { values: any, setValues: any } = useFormikContext()
const classes = useStyles();
return (
<NotConfigured
addRemoveCondition={_m.hasServiceMonitor(values)}
addAction={()=>setValues(_m.addServiceMonitor(values))}
removeAction={()=>setValues(_m.removeServiceMonitor(values))}
name="Service Monitor">
<CardLayout heading="Service Monitor">
<FormikTextField label="Port" fullWidth className={classes.spacer} name="deployment.serviceMonitor.port" />
<FormikTextField label="Path" fullWidth className={classes.spacer} name="deployment.serviceMonitor.path" />
<FormikTextField label="Interval(in seconds)" fullWidth className={classes.spacer} name="deployment.serviceMonitor.interval" />
</CardLayout>
</NotConfigured>
)
}
export default ServiceMonitorForm;

View File

@@ -9,7 +9,8 @@ export const path = {
s3Buckets: 'extraResources.s3_buckets',
loadBalancers: 'deployment.loadBalancers',
additionalIpWhitelisting: 'deployment.securityGroup',
alerts: 'deployment.alerts'
alerts: 'deployment.alerts',
serviceMonitor: 'deployment.serviceMonitor'
}
// Constants
@@ -57,6 +58,10 @@ export const hasEnvironmentVariables = (manifest: any) => {
return has(manifest, path.environmentVariables)
}
export const hasServiceMonitor = (manifest: any) => {
return (has(manifest, path.serviceMonitor) && has(manifest,path.deployment))
}
export const addDeployment = (manifest: any) => {
return setIn(manifest, path.deployment, {
cluster: '',
@@ -131,10 +136,23 @@ export const addAwsAccess = (manifest: any) => {
return setIn(manifest, path.awsAccess, {})
}
export const addServiceMonitor = (manifest: any) => {
return setIn(manifest, path.serviceMonitor, {
enabled: true,
port: 'serviceport',
path: '/actuator/prometheus',
interval: '30s'
})
}
export const removeAwsAccess = (manifest: any) => {
return remove(manifest, path.awsAccess)
}
export const removeServiceMonitor = (manifest: any) => {
return remove(manifest, path.serviceMonitor)
}
export const newAwsAccessPolicy = () => {
return {
actions: [],