From dfdad395a4d646082ed576f024ced86778dff2c9 Mon Sep 17 00:00:00 2001 From: Cody Jackson Date: Wed, 18 Nov 2020 14:01:57 -0700 Subject: [PATCH] Adding PagerDuty and OpsGenie receivers rancher/dashboard#1216 --- config/product/monitoring.js | 32 +++++++-- config/types.js | 2 + edit/monitoring.coreos.com.receiver/index.vue | 35 +++------- .../types/opsgenie.vue | 45 +++++++++++++ .../types/pagerduty.vue | 66 +++++++++++++++++++ models/monitoring.coreos.com.receiver.js | 14 ++++ 6 files changed, 162 insertions(+), 32 deletions(-) create mode 100644 edit/monitoring.coreos.com.receiver/types/opsgenie.vue create mode 100644 edit/monitoring.coreos.com.receiver/types/pagerduty.vue diff --git a/config/product/monitoring.js b/config/product/monitoring.js index f93c30e8cd..5ed8ee6dac 100644 --- a/config/product/monitoring.js +++ b/config/product/monitoring.js @@ -23,7 +23,7 @@ export function init(store) { PROMETHEUSRULE, PROMETHEUS, SPOOFED: { - RECEIVER, RECEIVER_SPEC, RECEIVER_EMAIL, RECEIVER_SLACK, RECEIVER_WEBHOOK, RECEIVER_HTTP_CONFIG, + RECEIVER, RECEIVER_SPEC, RECEIVER_EMAIL, RECEIVER_SLACK, RECEIVER_WEBHOOK, RECEIVER_PAGERDUTY, RECEIVER_OPSGENIE, RECEIVER_HTTP_CONFIG, ROUTE, ROUTE_SPEC } } = MONITORING; @@ -57,10 +57,12 @@ export function init(store) { id: RECEIVER_SPEC, type: 'schema', resourceFields: { - name: { type: 'string' }, - email_configs: { type: `array[${ RECEIVER_EMAIL }]` }, - slack_configs: { type: `array[${ RECEIVER_SLACK }]` }, - webhook_configs: { type: `array[${ RECEIVER_WEBHOOK }]` } + name: { type: 'string' }, + email_configs: { type: `array[${ RECEIVER_EMAIL }]` }, + slack_configs: { type: `array[${ RECEIVER_SLACK }]` }, + pagerduty_configs: { type: `array[${ RECEIVER_PAGERDUTY }]` }, + opsgenie_configs: { type: `array[${ RECEIVER_OPSGENIE }]` }, + webhook_configs: { type: `array[${ RECEIVER_WEBHOOK }]` } } }, { @@ -86,6 +88,26 @@ export function init(store) { send_resolved: { type: 'boolean' } } }, + { + id: RECEIVER_PAGERDUTY, + type: 'schema', + resourceFields: { + routing_key: { type: 'string' }, + service_key: { type: 'string' }, + http_config: { type: RECEIVER_HTTP_CONFIG }, + send_resolved: { type: 'boolean' } + } + }, + { + id: RECEIVER_OPSGENIE, + type: 'schema', + resourceFields: { + api_url: { type: 'string' }, + api_key: { type: 'string' }, + http_config: { type: RECEIVER_HTTP_CONFIG }, + send_resolved: { type: 'boolean' } + } + }, { id: RECEIVER_WEBHOOK, type: 'schema', diff --git a/config/types.js b/config/types.js index 1b1cc58b71..2906159704 100644 --- a/config/types.js +++ b/config/types.js @@ -87,6 +87,8 @@ export const MONITORING = { RECEIVER_EMAIL: 'monitoring.coreos.com.receiver.email', RECEIVER_SLACK: 'monitoring.coreos.com.receiver.slack', RECEIVER_WEBHOOK: 'monitoring.coreos.com.receiver.webhook', + RECEIVER_PAGERDUTY: 'monitoring.coreos.com.receiver.pagerduty', + RECEIVER_OPSGENIE: 'monitoring.coreos.com.receiver.opsgenie', RECEIVER_HTTP_CONFIG: 'monitoring.coreos.com.receiver.httpconfig', ROUTE: 'monitoring.coreos.com.route', ROUTE_SPEC: 'monitoring.coreos.com.route.spec', diff --git a/edit/monitoring.coreos.com.receiver/index.vue b/edit/monitoring.coreos.com.receiver/index.vue index 3cd0f2189c..a654a76a88 100644 --- a/edit/monitoring.coreos.com.receiver/index.vue +++ b/edit/monitoring.coreos.com.receiver/index.vue @@ -1,6 +1,6 @@ + + diff --git a/edit/monitoring.coreos.com.receiver/types/pagerduty.vue b/edit/monitoring.coreos.com.receiver/types/pagerduty.vue new file mode 100644 index 0000000000..f6b706d8b9 --- /dev/null +++ b/edit/monitoring.coreos.com.receiver/types/pagerduty.vue @@ -0,0 +1,66 @@ + + + diff --git a/models/monitoring.coreos.com.receiver.js b/models/monitoring.coreos.com.receiver.js index a17ad67c75..53a7bb1f02 100644 --- a/models/monitoring.coreos.com.receiver.js +++ b/models/monitoring.coreos.com.receiver.js @@ -16,6 +16,20 @@ export const RECEIVERS_TYPES = [ key: 'email_configs', logo: require(`~/assets/images/icon-email.svg`) }, + { + name: 'pagerduty', + label: 'PagerDuty', + title: 'PagerDuty Config', + key: 'pagerduty_configs', + logo: require(`~/assets/images/icon-email.svg`) + }, + { + name: 'opsgenie', + label: 'OpsGenie', + title: 'OpsGenie Config', + key: 'opsgenie_configs', + logo: require(`~/assets/images/icon-email.svg`) + }, { name: 'webhook', label: 'Webhook',