mirror of https://github.com/rancher/dashboard.git
fix volume re-name
This commit is contained in:
parent
2f0115a6b2
commit
cb4aeea734
|
|
@ -11,12 +11,6 @@ export default {
|
||||||
default: 'create'
|
default: 'create'
|
||||||
},
|
},
|
||||||
|
|
||||||
// container volume mounts
|
|
||||||
value: {
|
|
||||||
type: Array,
|
|
||||||
default: () => []
|
|
||||||
},
|
|
||||||
|
|
||||||
// volume name
|
// volume name
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|
@ -42,13 +36,7 @@ export default {
|
||||||
return { volumeMounts };
|
return { volumeMounts };
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: { ...mapGetters({ t: 'i18n/t' }) },
|
||||||
type() {
|
|
||||||
return Object.keys(this.value).filter(key => key !== 'name')[0];
|
|
||||||
},
|
|
||||||
|
|
||||||
...mapGetters({ t: 'i18n/t' })
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
volumeMounts(neu) {
|
volumeMounts(neu) {
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ export default {
|
||||||
<div>
|
<div>
|
||||||
<div class="row mb-10">
|
<div class="row mb-10">
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" @input="e=>updateMountNames(e)" />
|
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-10">
|
<div class="row mb-10">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<script>
|
<script>
|
||||||
import { PVC } from '@/config/types';
|
import { PVC } from '@/config/types';
|
||||||
import { removeObject, removeObjects, addObjects } from '@/utils/array.js';
|
import { removeObjects, addObjects } from '@/utils/array.js';
|
||||||
import ButtonDropdown from '@/components/ButtonDropdown';
|
import ButtonDropdown from '@/components/ButtonDropdown';
|
||||||
import Mount from '@/edit/workload/storage/Mount';
|
import Mount from '@/edit/workload/storage/Mount';
|
||||||
import { _VIEW } from '@/config/query-params';
|
import { _VIEW } from '@/config/query-params';
|
||||||
|
|
@ -61,7 +61,24 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return { pvcs: [] };
|
if (!this.container.volumeMounts) {
|
||||||
|
this.$set(this.container, 'volumeMounts', []);
|
||||||
|
}
|
||||||
|
if (!this.value.volumes) {
|
||||||
|
this.$set(this.value, 'volumes', []);
|
||||||
|
}
|
||||||
|
const { volumeMounts = [] } = this.container;
|
||||||
|
const names = volumeMounts.reduce((total, each) => {
|
||||||
|
total.push(each.name);
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const containerVolumes = this.value.volumes.filter((volume) => {
|
||||||
|
return names.includes(volume.name);
|
||||||
|
});
|
||||||
|
|
||||||
|
return { pvcs: [], containerVolumes };
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -104,33 +121,19 @@ export default {
|
||||||
pvcNames() {
|
pvcNames() {
|
||||||
return this.namespacedPVCs.map(pvc => pvc.metadata.name);
|
return this.namespacedPVCs.map(pvc => pvc.metadata.name);
|
||||||
},
|
},
|
||||||
// only show volumes mounted in current container
|
|
||||||
containerVolumes: {
|
|
||||||
get() {
|
|
||||||
const { volumeMounts = [] } = this.container;
|
|
||||||
const names = volumeMounts.reduce((total, each) => {
|
|
||||||
total.push(each.name);
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return this.value.volumes.filter((volume) => {
|
|
||||||
return names.includes(volume.name);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
set(neu, old = []) {
|
|
||||||
removeObjects(this.value.volumes, old);
|
|
||||||
addObjects(this.value.volumes, neu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
watch: {
|
||||||
if (!this.container.volumeMounts) {
|
containerVolumes(neu, old) {
|
||||||
this.$set(this.container, 'volumeMounts', []);
|
removeObjects(this.value.volumes, old);
|
||||||
}
|
addObjects(this.value.volumes, neu);
|
||||||
if (!this.value.volumes) {
|
const names = neu.reduce((all, each) => {
|
||||||
this.$set(this.value, 'volumes', []);
|
all.push(each.name);
|
||||||
|
|
||||||
|
return all;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
this.container.volumeMounts = this.container.volumeMounts.filter(mount => names.includes(mount.name));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -139,32 +142,26 @@ export default {
|
||||||
const name = `vol${ this.value.volumes.length }`;
|
const name = `vol${ this.value.volumes.length }`;
|
||||||
|
|
||||||
if (type === 'createPVC') {
|
if (type === 'createPVC') {
|
||||||
this.value.volumes.push({
|
this.containerVolumes.push({
|
||||||
_type: 'createPVC',
|
_type: 'createPVC',
|
||||||
persistentVolumeClaim: {},
|
persistentVolumeClaim: {},
|
||||||
name,
|
name,
|
||||||
});
|
});
|
||||||
} else if (type === 'csi') {
|
} else if (type === 'csi') {
|
||||||
this.value.volumes.push({
|
this.containerVolumes.push({
|
||||||
_type: type,
|
_type: type,
|
||||||
csi: { volumeAttributes: {} },
|
csi: { volumeAttributes: {} },
|
||||||
name,
|
name,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.value.volumes.push({
|
this.containerVolumes.push({
|
||||||
_type: type,
|
_type: type,
|
||||||
[type]: {},
|
[type]: {},
|
||||||
name,
|
name,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!this.container.volumeMounts) {
|
|
||||||
this.$set(this.container, 'volumeMounts', []);
|
|
||||||
}
|
|
||||||
this.container.volumeMounts.push({ name });
|
|
||||||
},
|
|
||||||
|
|
||||||
removeVolume(vol) {
|
this.container.volumeMounts.push({ name });
|
||||||
removeObject(this.value.volumes, vol);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
volumeType(vol) {
|
volumeType(vol) {
|
||||||
|
|
@ -260,7 +257,7 @@ export default {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Mount :container="container" :pod-spec="value" :name="props.row.value.name" :mode="mode" />
|
<Mount :key="props.row.value.name" :container="container" :pod-spec="value" :name="props.row.value.name" :mode="mode" />
|
||||||
</template>
|
</template>
|
||||||
<template #add>
|
<template #add>
|
||||||
<ButtonDropdown
|
<ButtonDropdown
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ export default {
|
||||||
<div>
|
<div>
|
||||||
<div class="row mb-10">
|
<div class="row mb-10">
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" @input="e=>updateMountNames(e)" />
|
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<Checkbox v-model="value.nfs.readOnly" :mode="mode" :label="t('workload.storage.readOnly')" />
|
<Checkbox v-model="value.nfs.readOnly" :mode="mode" :label="t('workload.storage.readOnly')" />
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ export default {
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-10">
|
<div class="row mb-10">
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" @input="e=>updateMountNames(e)" />
|
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<LabeledSelect v-if="!createNew" v-model="value.persistentVolumeClaim.claimName" :mode="mode" :label="t('workload.storage.subtypes.persistentVolumeClaim')" :options="pvcs" />
|
<LabeledSelect v-if="!createNew" v-model="value.persistentVolumeClaim.claimName" :mode="mode" :label="t('workload.storage.subtypes.persistentVolumeClaim')" :options="pvcs" />
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ export default {
|
||||||
<div>
|
<div>
|
||||||
<div class="row mb-10">
|
<div class="row mb-10">
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" @input="e=>updateMountNames(e)" />
|
<LabeledInput v-model="value.name" :required="true" :mode="mode" :label="t('workload.storage.volumeName')" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col span-6">
|
<div class="col span-6">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue