Selectively send volume config properties depending on mountType

This commit is contained in:
Johannes Zellner
2025-05-03 10:30:49 +02:00
parent 5f85810345
commit f84076d80c
2 changed files with 49 additions and 17 deletions
+46 -4
View File
@@ -2,6 +2,47 @@
import { fetcher } from 'pankow';
import { API_ORIGIN } from '../constants.js';
const mountTypes = [
{ name: 'CIFS', value: 'cifs' },
{ name: 'EXT4', value: 'ext4' },
{ name: 'Filesystem', value: 'filesystem' },
{ name: 'Filesystem (Mountpoint)', value: 'mountpoint' },
{ name: 'NFS', value: 'nfs' },
{ name: 'SSHFS', value: 'sshfs' },
{ name: 'XFS', value: 'xfs' },
];
function filterConfigForMountType(mountType, config) {
let props = [];
switch (mountType) {
case 'filesystem':
props = ['hostPath'];
break;
case 'mountpoint':
props = ['hostPath'];
break;
case 'ext4':
props = ['diskPath'];
break;
case 'xfs':
props = ['diskPath'];
break;
case 'cifs':
props = ['host', 'seal', 'remoteDir', 'username', 'password'];
break;
case 'nfs':
props = ['host', 'remoteDir'];
break;
case 'sshfs':
props = ['host', 'port', 'remoteDir', 'user', 'privateKey'];
break;
}
const ret = {};
for (const p of props) ret[p] = config[p];
return ret;
}
function create() {
const accessToken = localStorage.token;
@@ -46,17 +87,17 @@ function create() {
async add(name, mountType, mountOptions) {
let error, result;
try {
result = await fetcher.post(`${API_ORIGIN}/api/v1/volumes`, { name, mountType, mountOptions }, { access_token: accessToken });
result = await fetcher.post(`${API_ORIGIN}/api/v1/volumes`, { name, mountType, mountOptions: filterConfigForMountType(mountType, mountOptions) }, { access_token: accessToken });
} catch (e) {
error = e;
}
if (error || result.status !== 201) throw error || result;
},
async update(id, mountOptions) {
async update(id, mountType, mountOptions) {
let error, result;
try {
result = await fetcher.post(`${API_ORIGIN}/api/v1/volumes/${id}`, { mountOptions }, { access_token: accessToken });
result = await fetcher.post(`${API_ORIGIN}/api/v1/volumes/${id}`, { mountOptions: filterConfigForMountType(mountType, mountOptions) }, { access_token: accessToken });
} catch (e) {
error = e;
}
@@ -92,5 +133,6 @@ function create() {
}
export default {
create
create,
mountTypes,
};