Files
karma/ui/src/Models/API.js
2020-03-31 09:16:56 +01:00

100 lines
3.1 KiB
JavaScript

import PropTypes from "prop-types";
const AlertState = PropTypes.oneOf(["unprocessed", "active", "suppressed"]);
const Annotation = PropTypes.exact({
name: PropTypes.string.isRequired,
value: PropTypes.string.isRequired,
visible: PropTypes.bool.isRequired,
isLink: PropTypes.bool.isRequired,
});
const APIAlertAlertmanagerState = PropTypes.exact({
name: PropTypes.string.isRequired,
cluster: PropTypes.string.isRequired,
state: AlertState.isRequired,
startsAt: PropTypes.string.isRequired,
source: PropTypes.string.isRequired,
silencedBy: PropTypes.arrayOf(PropTypes.string).isRequired,
inhibitedBy: PropTypes.arrayOf(PropTypes.string).isRequired,
});
const APIAlert = PropTypes.exact({
annotations: PropTypes.arrayOf(Annotation).isRequired,
labels: PropTypes.object.isRequired,
startsAt: PropTypes.string.isRequired,
state: AlertState.isRequired,
alertmanager: PropTypes.arrayOf(APIAlertAlertmanagerState).isRequired,
receiver: PropTypes.string.isRequired,
});
const APIStateCount = PropTypes.exact({
active: PropTypes.number.isRequired,
suppressed: PropTypes.number.isRequired,
unprocessed: PropTypes.number.isRequired,
});
const APIGroup = PropTypes.exact({
receiver: PropTypes.string.isRequired,
labels: PropTypes.object.isRequired,
alerts: PropTypes.arrayOf(APIAlert),
id: PropTypes.string.isRequired,
alertmanagerCount: PropTypes.objectOf(PropTypes.number).isRequired,
stateCount: APIStateCount.isRequired,
shared: PropTypes.exact({
annotations: PropTypes.arrayOf(Annotation).isRequired,
labels: PropTypes.object.isRequired,
silences: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string))
.isRequired,
}).isRequired,
});
const APISilenceMatcher = PropTypes.exact({
name: PropTypes.string.isRequired,
value: PropTypes.string.isRequired,
isRegex: PropTypes.bool.isRequired,
});
const APISilence = PropTypes.exact({
id: PropTypes.string.isRequired,
matchers: PropTypes.arrayOf(APISilenceMatcher).isRequired,
startsAt: PropTypes.string.isRequired,
endsAt: PropTypes.string.isRequired,
createdAt: PropTypes.string.isRequired,
createdBy: PropTypes.string.isRequired,
comment: PropTypes.string.isRequired,
ticketID: PropTypes.string.isRequired,
ticketURL: PropTypes.string.isRequired,
});
const APIAlertmanagerUpstream = PropTypes.exact({
name: PropTypes.string.isRequired,
cluster: PropTypes.string.isRequired,
uri: PropTypes.string.isRequired,
publicURI: PropTypes.string.isRequired,
readonly: PropTypes.bool.isRequired,
headers: PropTypes.object.isRequired,
corsCredentials: PropTypes.oneOf(["omit", "same-origin", "include"])
.isRequired,
error: PropTypes.string.isRequired,
version: PropTypes.string.isRequired,
clusterMembers: PropTypes.arrayOf(PropTypes.string).isRequired,
});
const APIGrid = PropTypes.exact({
labelName: PropTypes.string.isRequired,
labelValue: PropTypes.string.isRequired,
alertGroups: PropTypes.arrayOf(APIGroup).isRequired,
stateCount: APIStateCount.isRequired,
});
export {
APIAlert,
APIGroup,
APISilence,
APISilenceMatcher,
APIAlertAlertmanagerState,
APIAlertmanagerUpstream,
APIGrid,
};