in ui/src/App.js [48:115]
function AlarmsMain() {
const [tenantID, setTenantID] = useState<string>("default");
const apiUtil = React.useMemo(() => APIUtil(tenantID),[tenantID])
// Initialize tenant if not already initialized
const {error} = apiUtil.useAlarmsApi(apiUtil.getRouteTree, {tenantID})
React.useEffect(() => {
if (error?.response?.status === 400 &&
error?.response?.data?.message?.includes('does not exist')) {
APIUtil(tenantID).editRouteTree({
route: {
receiver: `${tenantID}_tenant_base_route`,
}
})
}
}, [error, tenantID])
const {response: amTenancyResp} = apiUtil.useAlarmsApi(apiUtil.getAlertmanagerTenancy, {})
const {response: promTenancyResp} = apiUtil.useAlarmsApi(apiUtil.getPrometheusTenancy, {})
const amTenancy: TenancyConfig = amTenancyResp ?? {restrictor_label: "", restrict_queries: false};
const promTenancy: TenancyConfig = promTenancyResp ?? {restrictor_label: "tenant", restrict_queries: false};
const isSingleTenant = amTenancy.restrictor_label === "";
const filterLabels = (labels: Labels): Labels => {
const labelsToFilter = ['monitor', 'instance', 'job'];
isSingleTenant && labelsToFilter.push(promTenancy.restrictor_label);
const filtered = {...labels};
for (const label of labelsToFilter) {
delete filtered[label];
}
return filtered;
}
return(
<>
<MuiThemeProvider theme={theme}>
<MuiStylesThemeProvider theme={theme}>
<SnackbarProvider
maxSnack={3}
preventDuplicate
anchorOrigin={{
vertical: 'bottom',
horizontal: 'right',
}}>
{isSingleTenant ||
<TenantSelector apiUtil={apiUtil} setTenantId={setTenantID} tenantID={tenantID}/>
}
<Alarms
apiUtil={apiUtil}
makeTabLink={({match, keyName}) => {
return `${keyName}`
}
}
alertManagerGlobalConfigEnabled={true}
disabledTabs={['suppressions', 'routes']}
thresholdEditorEnabled={true}
filterLabels={filterLabels}
/>
</SnackbarProvider>
</MuiStylesThemeProvider>
</MuiThemeProvider>
</>
)
}