harvester-ui-extension/pkg/harvester/models/harvesterhci.io.virtualmachinetemplate.js
Francesco Torchia c983ed8384
Lint - 1
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2024-10-23 17:00:47 +02:00

71 lines
1.8 KiB
JavaScript

import { MODE, _CREATE } from '@shell/config/query-params';
import { HCI } from '../types';
import { PRODUCT_NAME as HARVESTER_PRODUCT } from '../config/harvester';
import HarvesterResource from './harvester';
export default class HciVmTemplate extends HarvesterResource {
get availableActions() {
const toFilter = ['goToEdit', 'cloneYaml', 'goToClone', 'goToEditYaml', 'download'];
const out = super._availableActions.filter((action) => {
if (action.altAction === 'remove') {
action.bulkable = false;
}
if (!toFilter.includes(action.action)) {
return action;
}
});
const schema = this.$getters['schemaFor'](HCI.VM);
let canCreateVM = true;
if ( schema && !schema?.collectionMethods.find(x => ['post'].includes(x.toLowerCase())) ) {
canCreateVM = false;
}
return [
{
action: 'createFromTemplate',
enabled: canCreateVM,
icon: 'icon icon-spinner',
label: this.t('harvester.action.createVM'),
},
{
action: 'addVersion',
enabled: this.canCreate,
icon: 'icon icon-fw icon-circle-plus',
label: this.t('harvester.action.addTemplateVersion'),
},
...out
];
}
createFromTemplate() {
const router = this.currentRouter();
router.push({
name: `${ HARVESTER_PRODUCT }-c-cluster-resource-create`,
params: { resource: HCI.VM },
query: { templateId: this.id, versionId: this.spec.defaultVersionId }
});
}
addVersion(moreQuery = {}) {
const router = this.currentRouter();
router.push({
name: `${ HARVESTER_PRODUCT }-c-cluster-resource-create`,
params: { resource: HCI.VM_VERSION },
query: {
[MODE]: _CREATE,
templateId: this.id
}
});
}
get defaultVersion() {
return this.status?.defaultVersion;
}
}