mirror of https://github.com/rancher/ui.git
66 lines
1.2 KiB
JavaScript
66 lines
1.2 KiB
JavaScript
import VolumeSpec from 'ui/models/volumespec';
|
|
|
|
// name:/incontainer:opt,opt2
|
|
// name:/incontainer
|
|
// /onhost:/incontainer:opt
|
|
// /onhost:/incontainer
|
|
// /incontainer
|
|
// @TODO support the windows clown-show (https://github.com/moby/moby/blob/master/volume/volume_windows.go)
|
|
export function parseVolumeSpec(str) {
|
|
str = str.trim();
|
|
|
|
let source='', dest='', opts='';
|
|
|
|
let parts = str.split(':');
|
|
switch ( parts.length ) {
|
|
case 1:
|
|
dest = parts[0];
|
|
break;
|
|
case 2:
|
|
source = parts[0];
|
|
dest = parts[1];
|
|
break;
|
|
case 3:
|
|
source = parts[0];
|
|
dest = parts[1];
|
|
opts = parts[2];
|
|
break;
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
if ( !opts ) {
|
|
opts = 'rw';
|
|
}
|
|
|
|
return VolumeSpec.create({
|
|
source,
|
|
dest,
|
|
opts
|
|
});
|
|
}
|
|
|
|
export function stringifyVolumeSpec(spec) {
|
|
let source = (spec.source||'').trim();
|
|
let dest = (spec.dest||'').trim();
|
|
let opts = (spec.opts||'').trim();
|
|
|
|
// RW is the default
|
|
if ( opts === 'rw' ) {
|
|
opts = '';
|
|
}
|
|
|
|
if ( opts ) {
|
|
return source +':'+ dest +':'+ opts;
|
|
} else if ( source ) {
|
|
return source +':'+ dest;
|
|
} else {
|
|
return dest;
|
|
}
|
|
}
|
|
|
|
export default {
|
|
parseVolumeSpec,
|
|
stringifyVolumeSpec,
|
|
};
|