mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 21:21:44 +00:00
show one secret dropdown in storageClass create page
This commit is contained in:
parent
f60d22ab9b
commit
958e97f769
@ -55,10 +55,13 @@ export default {
|
|||||||
|
|
||||||
async fetch() {
|
async fetch() {
|
||||||
const inStore = this.$store.getters['currentProduct'].inStore;
|
const inStore = this.$store.getters['currentProduct'].inStore;
|
||||||
const allNamespaces = await this.$store.dispatch(`${ inStore }/findAll`, { type: NAMESPACE });
|
|
||||||
|
|
||||||
this.secrets = await this.$store.dispatch(`${ inStore }/findAll`, { type: SECRET });
|
await this.$store.dispatch(`${ inStore }/findAll`, { type: NAMESPACE });
|
||||||
this.namespaces = allNamespaces.filter(ns => ns.isSystem === false).map(ns => ns.id); // only show non-system namespaces to user to select
|
|
||||||
|
const allSecrets = await this.$store.dispatch(`${ inStore }/findAll`, { type: SECRET });
|
||||||
|
|
||||||
|
// only show non-system secret to user to select
|
||||||
|
this.secrets = allSecrets.filter(secret => secret.isSystem === false);
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
if (this.realMode === _CREATE) {
|
if (this.realMode === _CREATE) {
|
||||||
@ -72,20 +75,7 @@ export default {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return { secrets: [] };
|
||||||
secrets: [],
|
|
||||||
namespaces: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
secretNamespace() {
|
|
||||||
this.$set(this.value, 'parameters', {
|
|
||||||
...this.value.parameters,
|
|
||||||
[CSI_PROVISIONER_SECRET_NAME]: '',
|
|
||||||
[CSI_NODE_PUBLISH_SECRET_NAME]: '',
|
|
||||||
[CSI_NODE_STAGE_SECRET_NAME]: ''
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
longhornNodes() {
|
longhornNodes() {
|
||||||
@ -131,13 +121,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
secretOptions() {
|
secretOptions() {
|
||||||
const selectedNS = this.secretNamespace;
|
return this.secrets.map(secret => secret.id);
|
||||||
|
|
||||||
return this.secrets.filter(secret => secret.namespace === selectedNS).map(secret => secret.name);
|
|
||||||
},
|
|
||||||
|
|
||||||
secretNameOptions() {
|
|
||||||
return this.namespaces;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
volumeEncryptionOptions() {
|
volumeEncryptionOptions() {
|
||||||
@ -183,32 +167,29 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
secretName: {
|
secret: {
|
||||||
get() {
|
get() {
|
||||||
return this.value.parameters[CSI_PROVISIONER_SECRET_NAME];
|
const selectedNs = this.value.parameters[CSI_PROVISIONER_SECRET_NAMESPACE];
|
||||||
|
const selectedName = this.value.parameters[CSI_PROVISIONER_SECRET_NAME];
|
||||||
|
|
||||||
|
if (selectedNs && selectedName) {
|
||||||
|
return `${ selectedNs }/${ selectedName }`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
},
|
},
|
||||||
|
|
||||||
set(neu) {
|
set(selectedSecret) {
|
||||||
|
const [namespace, name] = selectedSecret.split('/');
|
||||||
|
|
||||||
this.$set(this.value, 'parameters', {
|
this.$set(this.value, 'parameters', {
|
||||||
...this.value.parameters,
|
...this.value.parameters,
|
||||||
[CSI_PROVISIONER_SECRET_NAME]: neu,
|
[CSI_PROVISIONER_SECRET_NAME]: name,
|
||||||
[CSI_NODE_PUBLISH_SECRET_NAME]: neu,
|
[CSI_NODE_PUBLISH_SECRET_NAME]: name,
|
||||||
[CSI_NODE_STAGE_SECRET_NAME]: neu
|
[CSI_NODE_STAGE_SECRET_NAME]: name,
|
||||||
});
|
[CSI_PROVISIONER_SECRET_NAMESPACE]: namespace,
|
||||||
}
|
[CSI_NODE_PUBLISH_SECRET_NAMESPACE]: namespace,
|
||||||
},
|
[CSI_NODE_STAGE_SECRET_NAMESPACE]: namespace
|
||||||
|
|
||||||
secretNamespace: {
|
|
||||||
get() {
|
|
||||||
return this.value.parameters[CSI_PROVISIONER_SECRET_NAMESPACE];
|
|
||||||
},
|
|
||||||
|
|
||||||
set(neu) {
|
|
||||||
this.$set(this.value, 'parameters', {
|
|
||||||
...this.value.parameters,
|
|
||||||
[CSI_PROVISIONER_SECRET_NAMESPACE]: neu,
|
|
||||||
[CSI_NODE_PUBLISH_SECRET_NAMESPACE]: neu,
|
|
||||||
[CSI_NODE_STAGE_SECRET_NAMESPACE]: neu
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -342,16 +323,8 @@ export default {
|
|||||||
<div v-if="value.parameters.encrypted === 'true'" class="row mt-20">
|
<div v-if="value.parameters.encrypted === 'true'" class="row mt-20">
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<LabeledSelect
|
<LabeledSelect
|
||||||
v-model:value="secretNamespace"
|
v-model:value="secret"
|
||||||
:label="t('harvester.storage.secretNamespace')"
|
:label="t('harvester.storage.secret')"
|
||||||
:options="secretNameOptions"
|
|
||||||
:mode="mode"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="col span-6">
|
|
||||||
<LabeledSelect
|
|
||||||
v-model:value="secretName"
|
|
||||||
:label="t('harvester.storage.secretName')"
|
|
||||||
:options="secretOptions"
|
:options="secretOptions"
|
||||||
:mode="mode"
|
:mode="mode"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -1113,8 +1113,7 @@ harvester:
|
|||||||
label: Storage
|
label: Storage
|
||||||
useDefault: Use the default storage
|
useDefault: Use the default storage
|
||||||
volumeEncryption: Volume Encryption
|
volumeEncryption: Volume Encryption
|
||||||
secretName: Secret Name
|
secret: Secret
|
||||||
secretNamespace: Secret Namespace
|
|
||||||
migratable:
|
migratable:
|
||||||
label: Migratable
|
label: Migratable
|
||||||
numberOfReplicas:
|
numberOfReplicas:
|
||||||
|
|||||||
@ -2,6 +2,8 @@ import { clone } from '@shell/utils/object';
|
|||||||
import Secret from '@shell/models/secret';
|
import Secret from '@shell/models/secret';
|
||||||
import { HCI } from '../../types';
|
import { HCI } from '../../types';
|
||||||
import { PRODUCT_NAME as HARVESTER_PRODUCT } from '../../config/harvester';
|
import { PRODUCT_NAME as HARVESTER_PRODUCT } from '../../config/harvester';
|
||||||
|
import Secret from '@shell/models/secret';
|
||||||
|
import { NAMESPACE } from '@shell/config/types';
|
||||||
|
|
||||||
export default class HciSecret extends Secret {
|
export default class HciSecret extends Secret {
|
||||||
get _detailLocation() {
|
get _detailLocation() {
|
||||||
@ -52,6 +54,14 @@ export default class HciSecret extends Secret {
|
|||||||
return this.doneOverride;
|
return this.doneOverride;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get isSystem() {
|
||||||
|
const inStore = this.$rootGetters['currentProduct'].inStore;
|
||||||
|
|
||||||
|
const systemNs = this.$rootGetters[`${ inStore }/all`](NAMESPACE).filter(ns => ns.isSystem === true).map(ns => ns.metadata.name);
|
||||||
|
|
||||||
|
return systemNs.includes(this.metadata.namespace);
|
||||||
|
}
|
||||||
|
|
||||||
get details() {
|
get details() {
|
||||||
const out = [
|
const out = [
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user