export function APIUtil()

in ui/src/APIUtil.js [18:136]


export function APIUtil(tenantID: string): ApiUtil {
  return {
    useAlarmsApi: useApi,

    // Alertmanager Requests
    viewFiringAlerts: async function(_req) {
      const resp = await makeRequest({
        url: `${AM_BASE_URL}/alerts`,
      });
      return resp.filter(alert => alert.labels.tenant === tenantID);
    },
    viewMatchingAlerts: ({expression}) =>
      makeRequest({url: `${AM_BASE_URL}/matching_alerts/${expression}`}),

    // suppressions
    getSuppressions: _req =>
      makeRequest({
        url: `${AM_BASE_URL}/silences`,
        method: 'GET',
      }),
    // global config
    getGlobalConfig: _req =>
      makeRequest({url: `${AM_BASE_URL}/globalconfig`, method: 'GET'}),


    // Prometheus Configmanager Requests
    createAlertRule: ({rule}) =>
      makeRequest({
        url: `${PROM_CONFIG_URL}/${tenantID}/alert`,
        method: 'POST',
        data: rule,
      }),
    editAlertRule: ({rule}) =>
      makeRequest({
        url: `${PROM_CONFIG_URL}/${tenantID}/alert/${rule.alert}`,
        data: rule,
        method: 'PUT',
      }),
    getAlertRules: _req =>
      makeRequest({
        url: `${PROM_CONFIG_URL}/${tenantID}/alert`,
        method: 'GET',
      }),
    deleteAlertRule: ({ruleName}) =>
      makeRequest({
        url: `${PROM_CONFIG_URL}/${tenantID}/alert/${ruleName}`,
        method: 'DELETE',
      }),

    // Alertmanager Configurer Requests
    // receivers
    createReceiver: ({receiver}) =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/receiver`,
        method: 'POST',
        data: receiver,
      }),
    editReceiver: ({receiver}) =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/receiver/${receiver.name}`,
        method: 'PUT',
        data: receiver,
      }),
    getReceivers: _req =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/receiver`,
        method: 'GET',
      }),
    deleteReceiver: ({receiverName}) =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/receiver/${receiverName}`,
        method: 'DELETE',
      }),

    // routes
    getRouteTree: _req =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/route`,
        method: 'GET',
      }),
    editRouteTree: req =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/route`,
        method: 'POST',
        data: req.route,
      }),

  // metric series
  getMetricSeries: async function (_req) {
    const resp = await makeRequest({
      url: `${PROM_BASE_URL}/series?match[]={__name__=~".*"}`,
      method: 'GET',
    })
    return resp.data;
    },

    editGlobalConfig: ({config}) =>
      makeRequest({
        url: `${AM_CONFIG_URL}/${tenantID}/globalconfig`,
        method: 'POST',
        data: config,
      }),
    getTenants: _req =>
      makeRequest({
        url: `${AM_CONFIG_URL}/tenants`,
        method: 'GET',
      }),
    getAlertmanagerTenancy: _req =>
      makeRequest({
        url: `${AM_CONFIG_URL}/tenancy`,
        method: 'GET',
      }),
    getPrometheusTenancy: _req =>
      makeRequest({
        url: `${PROM_CONFIG_URL}/tenancy`,
        method: 'GET',
      })
    }
};