mirror of https://github.com/rancher/ui.git
253 lines
7.3 KiB
JavaScript
253 lines
7.3 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import { computed, set } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import C from 'shared/utils/constants';
|
|
|
|
const HEADERS = [
|
|
{
|
|
translationKey: 'clusterTemplateQuestions.table.question',
|
|
name: 'question',
|
|
sort: ['question'],
|
|
searchField: 'variable',
|
|
},
|
|
{
|
|
translationKey: 'clusterTemplateQuestions.table.type',
|
|
name: 'type',
|
|
sort: ['type'],
|
|
width: '150px',
|
|
},
|
|
{
|
|
translationKey: 'clusterTemplateQuestions.table.answer',
|
|
name: 'answer',
|
|
sort: ['answer'],
|
|
searchField: 'default',
|
|
width: '250px',
|
|
},
|
|
{
|
|
translationKey: 'clusterTemplateQuestions.table.required',
|
|
name: 'required',
|
|
width: '70px',
|
|
},
|
|
];
|
|
|
|
const clusterTemplateTranslationMap = [
|
|
{
|
|
key: 'defaultClusterRoleForProjectMembers',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.defaultClusterRoleForProjectMembers'
|
|
},
|
|
{
|
|
key: 'defaultPodSecurityPolicyTemplateId',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.defaultPodSecurityPolicyTemplateId'
|
|
},
|
|
{
|
|
key: 'desiredAgentImage',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.desiredAgentImage'
|
|
},
|
|
{
|
|
key: 'desiredAuthImage',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.desiredAuthImage'
|
|
},
|
|
{
|
|
key: 'dockerRootDir',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.dockerRootDir'
|
|
},
|
|
{
|
|
key: 'enableClusterAlerting',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.enableClusterAlerting'
|
|
},
|
|
{
|
|
key: 'enableClusterMonitoring',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.enableClusterMonitoring'
|
|
},
|
|
{
|
|
key: 'enableNetworkPolicy',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.enableNetworkPolicy'
|
|
},
|
|
{
|
|
key: 'localClusterAuthEndpoint',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.localClusterAuthEndpoint'
|
|
},
|
|
{
|
|
key: 'caCerts',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.caCerts'
|
|
},
|
|
{
|
|
key: 'fqdn',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.fqdn'
|
|
},
|
|
{
|
|
key: 'addonJobTimeout',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.addonJobTimeout'
|
|
},
|
|
{
|
|
key: 'addons',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.addons'
|
|
},
|
|
{
|
|
key: 'addonsInclude',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.addonsInclude'
|
|
},
|
|
{
|
|
key: 'authentication',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.authentication'
|
|
},
|
|
{
|
|
key: 'authorization',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.authorization'
|
|
},
|
|
{
|
|
key: 'bastionHost',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.bastionHost'
|
|
},
|
|
{
|
|
key: 'cloudProvider',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.cloudProvider'
|
|
},
|
|
{
|
|
key: 'clusterName',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.clusterName'
|
|
},
|
|
{
|
|
key: 'dns',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.dns'
|
|
},
|
|
{
|
|
key: 'ignoreDockerVersion',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.ignoreDockerVersion'
|
|
},
|
|
{
|
|
key: 'ingress',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.ingress'
|
|
},
|
|
{
|
|
key: 'kubernetesVersion',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.kubernetesVersion'
|
|
},
|
|
{
|
|
key: 'monitoring',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.monitoring'
|
|
},
|
|
{
|
|
key: 'network',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.network'
|
|
},
|
|
{
|
|
key: 'prefixPath',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.prefixPath'
|
|
},
|
|
{
|
|
key: 'privateRegistries',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.privateRegistries'
|
|
},
|
|
{
|
|
key: 'restore',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.restore'
|
|
},
|
|
{
|
|
key: 'rotateCertificates',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.rotateCertificates'
|
|
},
|
|
{
|
|
key: 'services',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.services'
|
|
},
|
|
{
|
|
key: 'sshAgentAuth',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.sshAgentAuth'
|
|
},
|
|
{
|
|
key: 'sshCertPath',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.sshCertPath'
|
|
},
|
|
{
|
|
key: 'sshKeyPath',
|
|
translationKey: 'clusterTemplateQuestions.schemaLabels.sshKeyPath'
|
|
}
|
|
];
|
|
|
|
const IGNORED_FIELDS = C.CLUSTER_TEMPLATE_IGNORED_OVERRIDES;
|
|
|
|
export default Component.extend({
|
|
globalStore: service(),
|
|
intl: service(),
|
|
layout,
|
|
|
|
questionsHeaders: HEADERS,
|
|
ignoreFields: IGNORED_FIELDS,
|
|
translationMap: clusterTemplateTranslationMap,
|
|
sortBy: 'name',
|
|
searchText: '',
|
|
applyClusterTemplate: false,
|
|
allQuestions: null,
|
|
schemaQuestions: null,
|
|
descending: false,
|
|
bulkActions: false,
|
|
|
|
actions: {
|
|
addQuestion() {
|
|
this.addQuestion();
|
|
},
|
|
},
|
|
|
|
filteredQuestions: computed('allQuestions.[]', function() {
|
|
let {
|
|
allQuestions = [],
|
|
ignoreFields,
|
|
} = this;
|
|
|
|
allQuestions = ( allQuestions || []).slice();
|
|
|
|
allQuestions.forEach((q) => {
|
|
if (ignoreFields.includes(q.variable)) {
|
|
set(q, 'isBuiltIn', true);
|
|
}
|
|
});
|
|
|
|
return (allQuestions || []);
|
|
}),
|
|
|
|
rows: computed('filteredQuestions.[]', function() {
|
|
const {
|
|
filteredQuestions: allQuestions,
|
|
applyClusterTemplate,
|
|
clusterTemplateCreate,
|
|
ignoreFields,
|
|
} = this;
|
|
|
|
return (allQuestions || []).filter((question) => {
|
|
if (applyClusterTemplate) {
|
|
// on apply we want to ignore all fields that have a UI componet and any UI only ovverrides like backupTarget that only have a UI componet and no property target on the cluster.
|
|
return !ignoreFields.includes(question.variable) && !question.variable.includes('azureCloudProvider') && !question.variable.startsWith('uiOverride');
|
|
} else {
|
|
// hide question will only persist on the first time we create a RKE Template revision because the field is not on the question schema so we cant rely on this only
|
|
if (question.hasOwnProperty('hideQuestion') && question.hideQuestion === false) {
|
|
return true;
|
|
} else if (!question.hasOwnProperty('hideQuestion')) {
|
|
if (question.variable) {
|
|
if (clusterTemplateCreate && question.variable.startsWith('uiOverride')) {
|
|
return false;
|
|
} else {
|
|
return true
|
|
}
|
|
} else {
|
|
// this is an empty override added from add override button
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
});
|
|
}),
|
|
|
|
addQuestion() {
|
|
throw new Error('add question override is required');
|
|
},
|
|
|
|
removeQuestion() {
|
|
throw new Error('remove question override is required');
|
|
},
|
|
|
|
});
|