Marcelo Fukumoto 9a20ad5edd
feat: forklift poc first commit
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
2026-07-07 13:36:43 +02:00

48 lines
1.3 KiB
JavaScript

import { FORKLIFT_API_VERSION } from '../config/harvester-map';
/**
* Shared mixin for Forklift edit pages that need to select
* source and destination providers from available Provider CRs.
*
* Components using this mixin must load providers in their own fetch():
* this.allProviders = await this.$store.dispatch(`${ inStore }/findAll`, { type: HCI.FORKLIFT_PROVIDER });
*/
export default {
data() {
return { allProviders: [] };
},
computed: {
providerOptions() {
return this.allProviders.map((p) => ({
label: `${ p.metadata.name } (${ p.spec?.type || 'unknown' })`,
value: p.metadata.name,
}));
},
},
methods: {
/**
* Build a Forklift object reference for a Provider.
*/
buildProviderRef(name) {
const provider = this.allProviders.find((p) => p.metadata.name === name);
return {
apiVersion: FORKLIFT_API_VERSION,
kind: 'Provider',
name,
namespace: provider?.metadata?.namespace || this.value.metadata.namespace || 'default',
};
},
updateSourceProvider(val) {
this.value.spec.provider.source = this.buildProviderRef(val);
},
updateDestProvider(val) {
this.value.spec.provider.destination = this.buildProviderRef(val);
},
},
};