mirror of https://github.com/rancher/dashboard.git
118 lines
4.5 KiB
JavaScript
118 lines
4.5 KiB
JavaScript
// Settings
|
|
import { MANAGEMENT } from './types';
|
|
|
|
// Adapted from: https://github.com/rancher/ui/blob/08c379a9529f740666a704b52522a468986c3520/lib/shared/addon/utils/constants.js#L564
|
|
|
|
// Setting IDs
|
|
export const SETTING = {
|
|
VERSION_RANCHER: 'server-version',
|
|
VERSION_CLI: 'cli-version',
|
|
VERSION_MACHINE: 'machine-version',
|
|
VERSION_HELM: 'helm-version',
|
|
|
|
CLI_URL: {
|
|
DARWIN: 'cli-url-darwin',
|
|
WINDOWS: 'cli-url-windows',
|
|
LINUX: 'cli-url-linux',
|
|
},
|
|
|
|
CA_CERTS: 'cacerts',
|
|
|
|
AUTH_TOKEN_MAX_TTL_MINUTES: 'auth-token-max-ttl-minutes',
|
|
KUBECONFIG_GENERATE_TOKEN: 'kubeconfig-generate-token',
|
|
KUBECONFIG_TOKEN_TTL_MINUTES: 'kubeconfig-token-ttl-minutes',
|
|
ENGINE_URL: 'engine-install-url',
|
|
ENGINE_ISO_URL: 'engine-iso-url',
|
|
FIRST_LOGIN: 'first-login',
|
|
INGRESS_IP_DOMAIN: 'ingress-ip-domain',
|
|
SERVER_URL: 'server-url',
|
|
RKE_METADATA_CONFIG: 'rke-metadata-config',
|
|
TELEMETRY: 'telemetry-opt',
|
|
EULA_AGREED: 'eula-agreed',
|
|
AUTH_USER_INFO_MAX_AGE_SECONDS: 'auth-user-info-max-age-seconds',
|
|
AUTH_USER_SESSION_TTL_MINUTES: 'auth-user-session-ttl-minutes',
|
|
AUTH_USER_INFO_RESYNC_CRON: 'auth-user-info-resync-cron',
|
|
AUTH_LOCAL_VALIDATE_DESC: 'auth-password-requirements-description',
|
|
CLUSTER_TEMPLATE_ENFORCEMENT: 'cluster-template-enforcement',
|
|
UI_INDEX: 'ui-index',
|
|
UI_DASHBOARD_INDEX: 'ui-dashboard-index',
|
|
UI_OFFLINE_PREFERRED: 'ui-offline-preferred',
|
|
SYSTEM_DEFAULT_REGISTRY: 'system-default-registry',
|
|
UI_ISSUES: 'ui-issues',
|
|
PL: 'ui-pl',
|
|
PL_RANCHER_VALUE: 'rancher',
|
|
SUPPORTED: 'has-support',
|
|
BANNERS: 'ui-banners',
|
|
ISSUES: 'ui-issues',
|
|
BRAND: 'ui-brand',
|
|
LOGO_LIGHT: 'ui-logo-light',
|
|
LOGO_DARK: 'ui-logo-dark',
|
|
PRIMARY_COLOR: 'ui-primary-color',
|
|
COMMUNITY_LINKS: 'ui-community-links'
|
|
};
|
|
|
|
// These are the settings that are allowed to be edited via the UI
|
|
export const ALLOWED_SETTINGS = {
|
|
[SETTING.CA_CERTS]: { kind: 'multiline', readOnly: true },
|
|
// [SETTING.CLUSTER_DEFAULTS]: { kind: 'json' },
|
|
[SETTING.ENGINE_URL]: {},
|
|
[SETTING.ENGINE_ISO_URL]: {},
|
|
// [SETTING.PL]: {},
|
|
// [SETTING.ISSUES]: {},
|
|
[SETTING.INGRESS_IP_DOMAIN]: {},
|
|
[SETTING.AUTH_USER_INFO_MAX_AGE_SECONDS]: {},
|
|
[SETTING.AUTH_USER_SESSION_TTL_MINUTES]: {},
|
|
[SETTING.AUTH_TOKEN_MAX_TTL_MINUTES]: {},
|
|
[SETTING.KUBECONFIG_GENERATE_TOKEN]: { kind: 'boolean' },
|
|
[SETTING.KUBECONFIG_TOKEN_TTL_MINUTES]: {},
|
|
[SETTING.AUTH_USER_INFO_RESYNC_CRON]: {},
|
|
[SETTING.SERVER_URL]: { kind: 'url' },
|
|
[SETTING.RKE_METADATA_CONFIG]: { kind: 'json' },
|
|
// [SETTING.BANNERS]: { kind: 'json' },
|
|
[SETTING.SYSTEM_DEFAULT_REGISTRY]: {},
|
|
[SETTING.UI_INDEX]: {},
|
|
[SETTING.UI_DASHBOARD_INDEX]: {},
|
|
[SETTING.UI_OFFLINE_PREFERRED]: {
|
|
kind: 'enum',
|
|
options: ['dynamic', 'true', 'false']
|
|
},
|
|
[SETTING.BRAND]: {},
|
|
[SETTING.CLUSTER_TEMPLATE_ENFORCEMENT]: { kind: 'boolean' },
|
|
|
|
[SETTING.TELEMETRY]: {
|
|
kind: 'enum',
|
|
options: ['prompt', 'in', 'out']
|
|
},
|
|
};
|
|
|
|
export const fetchOrCreateSetting = async(store, id, val, save = true) => {
|
|
let setting;
|
|
|
|
try {
|
|
setting = await store.dispatch('management/find', { type: MANAGEMENT.SETTING, id });
|
|
} catch {
|
|
const schema = store.getters['management/schemaFor'](MANAGEMENT.SETTING);
|
|
const url = schema.linkFor('collection');
|
|
|
|
setting = await store.dispatch('management/create', {
|
|
type: MANAGEMENT.SETTING, metadata: { name: id }, value: val, default: val || ''
|
|
});
|
|
|
|
if ( save ) {
|
|
await setting.save({ url });
|
|
}
|
|
}
|
|
|
|
return setting;
|
|
};
|
|
|
|
export const setSetting = async(store, id, val) => {
|
|
const setting = await fetchOrCreateSetting(store, id, val, false);
|
|
|
|
setting.value = val;
|
|
|
|
await setting.save();
|
|
|
|
return setting;
|
|
};
|