diff --git a/src/coreform/BaseForm.tsx b/src/coreform/BaseForm.tsx index 953513a..77296fc 100644 --- a/src/coreform/BaseForm.tsx +++ b/src/coreform/BaseForm.tsx @@ -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 = [ component: , errorCheckFn: _m.hasAwsAccess }, + { + name: 'Service Monitor', + displayName: 'service monitor', + component: , + errorCheckFn: _m.hasServiceMonitor + }, ] const tabHasErrors = (tab: FormTab, errors: any) => { diff --git a/src/coreform/DeploymentBasicTab.tsx b/src/coreform/DeploymentBasicTab.tsx index 3352bed..3689c7d 100644 --- a/src/coreform/DeploymentBasicTab.tsx +++ b/src/coreform/DeploymentBasicTab.tsx @@ -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, diff --git a/src/coreform/ServiceMonitorForm.tsx b/src/coreform/ServiceMonitorForm.tsx new file mode 100644 index 0000000..aef8fee --- /dev/null +++ b/src/coreform/ServiceMonitorForm.tsx @@ -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 ( + setValues(_m.addServiceMonitor(values))} + removeAction={()=>setValues(_m.removeServiceMonitor(values))} + name="Service Monitor"> + + + + + + + ) +} + +export default ServiceMonitorForm; \ No newline at end of file diff --git a/src/models/Manifest.ts b/src/models/Manifest.ts index adbfcc8..41e20b9 100644 --- a/src/models/Manifest.ts +++ b/src/models/Manifest.ts @@ -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: [],