ui/lib/shared/addon/components/managed-import-cluster-info/component.js

95 lines
2.3 KiB
JavaScript

import Component from '@ember/component';
import layout from './template';
import { inject as service } from '@ember/service';
import { computed, get, set } from '@ember/object';
import Semver from 'semver';
import { sortVersions } from 'shared/utils/sort';
export default Component.extend({
releaseVersions: service(),
intl: service(),
layout,
editing: false,
configField: 'k3sConfig',
config: computed('cluster.{k3sConfig,rke2Config}', 'configField', function() {
return get(this, `cluster.${ this.configField }`);
}),
upgradeStrategy: computed('config.{k3supgradeStrategy,rke2upgradeStrategy}', 'configField', function() {
const { configField } = this;
const upgradeStrategyPath = configField === 'k3sConfig' ? 'k3supgradeStrategy' : 'rke2upgradeStrategy';
return get(this.config, upgradeStrategyPath);
}),
serverConcurrency: computed('upgradeStrategy.serverConcurrency', {
get() {
return get(this, 'upgradeStrategy.serverConcurrency');
},
set(key, value) {
set(this, 'upgradeStrategy.serverConcurrency', this.coerceToInt(value));
return value;
}
}),
workerConcurrency: computed('upgradeStrategy.workerConcurrency', {
get() {
return get(this, 'upgradeStrategy.workerConcurrency');
},
set(key, value) {
set(this, 'upgradeStrategy.workerConcurrency', this.coerceToInt(value));
return value;
}
}),
allVersions: computed('releaseVersions.allVersions.[]', function() {
const currentVersion = get(this, `config.kubernetesVersion`);
const versionsMapped = [];
let allVersions = this.releaseVersions.allVersions || [];
if (!allVersions.includes(currentVersion)) {
allVersions.unshift(currentVersion);
}
allVersions = [...sortVersions(allVersions).reverse()];
allVersions.forEach((v) => {
if (Semver.gte(v, currentVersion)) {
versionsMapped.pushObject({
value: v,
label: v,
});
}
});
return versionsMapped;
}),
coerceToInt(value) {
let errors;
let coerced = value;
errors = set(this, 'errors', []);
coerced = parseInt(value, 10);
if (isNaN(coerced)) {
errors.push(this.intl.t('managedImportClusterInfo.error.int'));
set(this, 'errors', errors);
return value;
}
return coerced;
},
});