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:
@@ -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) => {
|
||||
|
||||
@@ -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,
|
||||
|
||||
37
src/coreform/ServiceMonitorForm.tsx
Normal file
37
src/coreform/ServiceMonitorForm.tsx
Normal 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;
|
||||
@@ -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: [],
|
||||
|
||||
Reference in New Issue
Block a user