mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-14 13:41:46 +00:00
* fix: resource page detail title link Signed-off-by: Andy Lee <andy.lee@suse.com> * refactor: extract harvester type in a map Signed-off-by: Andy Lee <andy.lee@suse.com> * refactor: put in config/harvester-map.js Signed-off-by: Andy Lee <andy.lee@suse.com> --------- Signed-off-by: Andy Lee <andy.lee@suse.com>
156 lines
4.4 KiB
JavaScript
156 lines
4.4 KiB
JavaScript
import { clone, set } from '@shell/utils/object';
|
|
import { _YAML, _CREATE, _VIEW, _CONFIG } from '@shell/config/query-params';
|
|
import SteveModel from '@shell/plugins/steve/steve-class';
|
|
import { HCI } from '../../types';
|
|
import { PRODUCT_NAME as HARVESTER_PRODUCT } from '../../config/harvester';
|
|
|
|
export default class HciAlertmanagerConfig extends SteveModel {
|
|
get _detailLocation() {
|
|
return {
|
|
name: this.alertmanagerConfigDoneRouteName,
|
|
params: {
|
|
cluster: this.$rootGetters['clusterId'],
|
|
resource: HCI.ALERTMANAGERCONFIG,
|
|
namespace: this.metadata?.namespace,
|
|
id: this.name,
|
|
},
|
|
hash: '#receivers',
|
|
query: { as: 'config' }
|
|
};
|
|
}
|
|
|
|
get listLocation() {
|
|
const listLocation = clone(super.listLocation);
|
|
|
|
listLocation.name = this.harvesterResourcesInExplorer ? 'c-cluster-product-resource' : `${ HARVESTER_PRODUCT }-c-cluster-resource`;
|
|
listLocation.params.resource = HCI.ALERTMANAGERCONFIG;
|
|
|
|
return listLocation;
|
|
}
|
|
|
|
get harvesterResourcesInExplorer() {
|
|
return this.$rootGetters['productId'] !== HARVESTER_PRODUCT;
|
|
}
|
|
|
|
get doneOverride() {
|
|
const detailLocation = clone(this._detailLocation);
|
|
|
|
delete detailLocation.params.namespace;
|
|
delete detailLocation.params.id;
|
|
detailLocation.params.resource = HCI.ALERTMANAGERCONFIG;
|
|
detailLocation.name = `${ HARVESTER_PRODUCT }-c-cluster-resource`;
|
|
|
|
return detailLocation;
|
|
}
|
|
|
|
get parentNameOverride() {
|
|
return this.$rootGetters['i18n/t'](`typeLabel."${ HCI.ALERTMANAGERCONFIG }"`, { count: 1 })?.trim();
|
|
}
|
|
|
|
get parentLocationOverride() {
|
|
return this.doneOverride;
|
|
}
|
|
|
|
applyDefaults() {
|
|
if (this.spec) {
|
|
return this.spec;
|
|
}
|
|
const existingReceivers = this.spec?.route?.receivers || [];
|
|
|
|
const defaultSpec = {
|
|
receivers: [...existingReceivers],
|
|
route: {
|
|
receivers: this.spec?.route?.receivers || [],
|
|
groupBy: this.spec?.route?.groupBy || [],
|
|
groupWait: this.spec?.route?.groupWait || '30s',
|
|
groupInterval: this.spec?.route?.groupInterval || '5m',
|
|
repeatInterval: this.spec?.route?.repeatInterval || '4h',
|
|
match: this.spec?.route?.match || {},
|
|
matchRe: this.spec?.route?.matchRe || {}
|
|
}
|
|
};
|
|
|
|
set(this, 'spec', defaultSpec);
|
|
}
|
|
|
|
get _availableActions() {
|
|
const out = super._availableActions;
|
|
|
|
return out;
|
|
}
|
|
|
|
getReceiverActions(alertmanagerConfigActions) {
|
|
return alertmanagerConfigActions.filter((actionData) => {
|
|
if (actionData.divider) {
|
|
return true;
|
|
}
|
|
switch (actionData.action) {
|
|
case 'goToEdit':
|
|
return true;
|
|
case 'goToEditYaml':
|
|
return true;
|
|
case 'promptRemove':
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
|
|
get alertmanagerConfigDoneRouteName() {
|
|
return `${ HARVESTER_PRODUCT }-c-cluster-resource-namespace-id`;
|
|
}
|
|
|
|
getCreateReceiverRoute() {
|
|
return {
|
|
name: `${ HARVESTER_PRODUCT }-c-cluster-alertmanagerconfig-alertmanagerconfigid-receiver`,
|
|
params: { cluster: this.$rootGetters['clusterId'], alertmanagerconfigid: this.id },
|
|
query: { mode: _CREATE, currentView: _CONFIG }
|
|
};
|
|
}
|
|
|
|
getReceiverDetailLink(receiverName) {
|
|
return {
|
|
name: `${ HARVESTER_PRODUCT }-c-cluster-alertmanagerconfig-alertmanagerconfigid-receiver`,
|
|
params: {
|
|
cluster: this.$rootGetters['clusterId'],
|
|
alertmanagerconfigid: this.id,
|
|
receiverName
|
|
},
|
|
query: {
|
|
mode: _VIEW, receiverName, currentView: _CONFIG
|
|
}
|
|
};
|
|
}
|
|
|
|
getEditReceiverYamlRoute(receiverName, queryMode) {
|
|
return {
|
|
name: `${ HARVESTER_PRODUCT }-c-cluster-alertmanagerconfig-alertmanagerconfigid-receiver`,
|
|
params: {
|
|
cluster: this.$rootGetters['clusterId'],
|
|
alertmanagerconfigid: this.id
|
|
},
|
|
query: {
|
|
mode: queryMode || _VIEW,
|
|
receiverName,
|
|
currentView: _YAML
|
|
}
|
|
};
|
|
}
|
|
|
|
getEditReceiverConfigRoute(receiverName, queryMode) {
|
|
return {
|
|
name: `${ HARVESTER_PRODUCT }-c-cluster-alertmanagerconfig-alertmanagerconfigid-receiver`,
|
|
params: {
|
|
cluster: this.$rootGetters['clusterId'],
|
|
alertmanagerconfigid: this.id
|
|
},
|
|
query: {
|
|
mode: queryMode || _VIEW,
|
|
receiverName,
|
|
currentView: _CONFIG
|
|
}
|
|
};
|
|
}
|
|
}
|