dashboard/shell/models/logging.banzaicloud.io.outp...

174 lines
3.5 KiB
JavaScript

import SteveModel from '@shell/plugins/steve/steve-class';
export const PROVIDERS = [
{
name: 'awsElasticsearch',
labelKey: 'logging.outputProviders.awsElasticsearch',
default: { endpoint: {} },
},
{
name: 'azurestorage',
labelKey: 'logging.outputProviders.azurestorage',
default: { },
},
{
name: 'cloudwatch',
labelKey: 'logging.outputProviders.cloudwatch',
default: { },
},
{
name: 'datadog',
labelKey: 'logging.outputProviders.datadog',
default: { },
},
{
name: 'elasticsearch',
labelKey: 'logging.outputProviders.elasticsearch',
default: {},
},
{
name: 'file',
labelKey: 'logging.outputProviders.file',
default: { },
},
{
name: 'forward',
labelKey: 'logging.outputProviders.forward',
default: { servers: [{}] },
},
{
name: 'gelf',
labelKey: 'logging.outputProviders.gelf',
default: { },
},
{
name: 'gcs',
labelKey: 'logging.outputProviders.gcs',
default: { },
},
{
name: 'kafka',
labelKey: 'logging.outputProviders.kafka',
default: { format: { type: 'json' } },
},
{
name: 'kinesisStream',
labelKey: 'logging.outputProviders.kinesisStream',
default: { },
},
{
name: 'logdna',
labelKey: 'logging.outputProviders.logdna',
default: { },
},
{
name: 'logz',
labelKey: 'logging.outputProviders.logz',
default: { endpoint: {} },
},
{
name: 'loki',
labelKey: 'logging.outputProviders.loki',
default: { configure_kubernetes_labels: true },
},
{
name: 'newrelic',
labelKey: 'logging.outputProviders.newrelic',
default: { },
},
{
name: 'opensearch',
labelKey: 'logging.outputProviders.opensearch',
default: {},
},
{
name: 'redis',
labelKey: 'logging.outputProviders.redis',
default: {
port: 6379, db_number: 0, ttl: 0
},
},
{
name: 'splunkHec',
labelKey: 'logging.outputProviders.splunkHec',
default: {},
},
{
name: 'sumologic',
labelKey: 'logging.outputProviders.sumologic',
default: { },
},
{
name: 'syslog',
labelKey: 'logging.outputProviders.syslog',
default: { },
},
{
name: 's3',
labelKey: 'logging.outputProviders.s3',
default: { },
},
];
export default class LogOutput extends SteveModel {
get canCustomEdit() {
return this.allProvidersSupported;
}
get providers() {
const spec = this.spec || {};
return Object.keys(spec)
.filter((provider) => provider !== 'loggingRef');
}
get providersDisplay() {
return this.providers.map((p) => {
const translation = this.t(`logging.outputProviders.${ p }`);
return translation || this.t('logging.outputProviders.unknown');
});
}
isSupportedProvider(provider) {
return !!PROVIDERS.find((p) => p.name === provider);
}
get allProvidersSupported() {
return this.providers.every(this.isSupportedProvider);
}
get providersSortable() {
const copy = [...this.providersDisplay];
copy.sort();
return copy.join('');
}
get text() {
return this.nameDisplay;
}
get url() {
return {
name: 'c-cluster-product-resource-namespace-id',
params: {
resource: this.type,
id: this.name,
namespace: this.namespace
}
};
}
get customValidationRules() {
return [
{
path: 'spec.logdna',
validators: ['logdna'],
}
];
}
}