Skip to content

Commit

Permalink
break setVolumeMount into smaller fns
Browse files Browse the repository at this point in the history
  • Loading branch information
juanvallejo committed Oct 9, 2017
1 parent c3f815b commit bb9a408
Show file tree
Hide file tree
Showing 4 changed files with 281 additions and 296 deletions.
69 changes: 40 additions & 29 deletions app/scripts/controllers/attachPVC.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,56 +118,67 @@ angular.module('openshiftConsole')
$scope.$watchGroup(['attach.resource', 'attach.allContainers'], updateMountPaths);
$scope.$watch('attach.containers', updateMountPaths, true);

var checkVolumeMountPath = function(newVolumeMount, container) {
// if a new volumeMount matches an existing mountPath,
// fail if their names differ. This can happen when the
// "overwrite" option is specified.
// Returns a boolean true if no errors occurred.
var success = true;
_.each(container.volumeMounts, function(mount) {
if (mount.mountPath === newVolumeMount.mountPath && mount.name !== newVolumeMount.name) {
displayError('The volume mount "' + mount.mountPath + '" with name "' + mount.name +'" already exists for container "' + container.name + '"');
success = false;
return success;
}
});

return success;
};

var replaceExistingVolumeMount = function(newVolumeMount, container) {
// if the volume mount we are trying to add already exists,
// replace the existing mount with the newly created one.
// This can happen when the "overwrite" option is specified.
// Returns a boolean true if an existing mount was found and
// replaced with a newly-created volume mount.
var didReplace = false;
_.each(container.volumeMounts, function(mount, idx) {
if (mount.name === newVolumeMount.name) {
container.volumeMounts[idx] = newVolumeMount;
didReplace = true;
return false;
}
});

return didReplace;
};

var setVolumeMount = function(podTemplate, name, mountPath, subPath, readOnly) {
var noError = true;
var success = true;
_.each(podTemplate.spec.containers, function(container) {
if (!isContainerSelected(container)) {
return;
}

var stopIteration = false;
var newVolumeMount =
StorageService.createVolumeMount(name, mountPath, subPath, readOnly);
if (!container.volumeMounts) {
container.volumeMounts = [];
}

_.each(container.volumeMounts, function(mount) {
// if a new volumeMount matches an existing mountPath,
// fail if their names differ. This can happen when the
// "overwrite" option is specified.
if (mount.mountPath === newVolumeMount.mountPath && mount.name !== newVolumeMount.name) {
displayError('The volume mount "' + mount.mountPath + '" with name "' + mount.name +'" already exists for container "' + container.name + '"');
noError = false;
stopIteration = true;
return false;
}
});

if (stopIteration) {
if (!checkVolumeMountPath(newVolumeMount, container)) {
success = false;
return false;
}

_.each(container.volumeMounts, function(mount, idx) {
// if the volume mount we are trying to add already exists,
// replace the existing mount with the newly created one.
// This can happen when the "overwrite" option is specified.
if (mount.name === newVolumeMount.name) {
container.volumeMounts[idx] = newVolumeMount;
noError = true;
stopIteration = true;
return false;
}
});

if (stopIteration) {
if (replaceExistingVolumeMount(newVolumeMount, container)) {
return false;
}

container.volumeMounts.push(newVolumeMount);
});

return noError;
return success;
};

// load resources required to show the page (list of pvcs and deployment or deployment config)
Expand Down
32 changes: 25 additions & 7 deletions dist/scripts/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -8490,6 +8490,25 @@ var e = _.get(n, "attach.resource.spec.template");
n.existingMountPaths = m.getMountPaths(e, k);
};
n.$watchGroup([ "attach.resource", "attach.allContainers" ], j), n.$watch("attach.containers", j, !0);
var P = function(e, t) {
var n = !0;
return _.each(t.volumeMounts, function(a) {
if (a.mountPath === e.mountPath && a.name !== e.name) return C('The volume mount "' + a.mountPath + '" with name "' + a.name + '" already exists for container "' + t.name + '"'), n = !1;
}), n;
}, R = function(e, t) {
var n = !1;
return _.each(t.volumeMounts, function(a, r) {
if (a.name === e.name) return t.volumeMounts[r] = e, n = !0, !1;
}), n;
}, I = function(e, t, n, a, r) {
var o = !0;
return _.each(e.spec.containers, function(e) {
if (k(e)) {
var i = m.createVolumeMount(t, n, a, r);
return e.volumeMounts || (e.volumeMounts = []), P(i, e) ? !R(i, e) && void e.volumeMounts.push(i) : (o = !1, !1);
}
}), o;
};
s.get(v, t.name, d).then(function(e) {
n.attach.resource = e, n.breadcrumbs = i.getBreadcrumbs({
object: e,
Expand All @@ -8514,14 +8533,13 @@ n.clusterQuotas = e.by("metadata.name"), n.outOfClaims = c.isAnyStorageQuotaExce
if (n.disableInputs = !0, S(), n.attachPVCForm.$valid) {
n.attach.volumeName || (n.attach.volumeName = b("volume-"));
var e = n.attach.resource, a = _.get(e, "spec.template"), r = n.attach.persistentVolumeClaim, o = n.attach.volumeName, i = n.attach.mountPath, c = n.attach.subPath, l = n.attach.readOnly;
i && angular.forEach(a.spec.containers, function(e) {
if (k(e)) {
var t = m.createVolumeMount(o, i, c, l);
e.volumeMounts || (e.volumeMounts = []), e.volumeMounts.push(t);
}
});
if (i && !I(a, o, i, c, l)) return void (n.disableInputs = !1);
var p = m.createVolume(o, r);
a.spec.volumes || (a.spec.volumes = []), a.spec.volumes.push(p), s.update(v, e.metadata.name, n.attach.resource, d).then(function() {
a.spec.volumes || (a.spec.volumes = []);
var h = _.some(a.spec.volumes, {
name: p.name
});
(!n.attach.overwrite || n.attach.overwrite && !h) && a.spec.volumes.push(p), s.update(v, e.metadata.name, n.attach.resource, d).then(function() {
var e;
i || (e = "No mount path was provided. The volume reference was added to the configuration, but it will not be mounted into running pods."), u.addNotification({
type: "success",
Expand Down
Loading

0 comments on commit bb9a408

Please sign in to comment.