Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "add "overwrite" option to attachPVC view" #2263

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
80 changes: 11 additions & 69 deletions app/scripts/controllers/attachPVC.js
Expand Up @@ -118,63 +118,6 @@ angular.module('openshiftConsole')
$scope.$watchGroup(['attach.resource', 'attach.allContainers'], updateMountPaths);
$scope.$watch('attach.containers', updateMountPaths, true);

var checkVolumeMountPath = function(newVolumeMount, container) {
var duplicateMount = _.find(container.volumeMounts, function(mount) {
return mount.mountPath === newVolumeMount && mount.name !== newVolumeMount.name;
});

// if a new volumeMount matches an existing mountPath,
// fail if their names differ. This can happen when the
// "overwrite" option is specified.
if (duplicateMount) {
displayError('The volume mount "' + duplicateMount.mountPath + '" with name "' + duplicateMount.name +'" already exists for container "' + container.name + '"');
return false;
}

return true;
};

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.
var index = _.findIndex(container.volumeMounts, { name: newVolumeMount.name });
if (index === -1) {
return false;
}

container.volumeMounts[index] = newVolumeMount;
return true;
};

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

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

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

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

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

return success;
};

// load resources required to show the page (list of pvcs and deployment or deployment config)
var load = function() {
DataService.get(resourceGroupVersion, $routeParams.name, context).then(
Expand Down Expand Up @@ -232,25 +175,24 @@ angular.module('openshiftConsole')
var readOnly = $scope.attach.readOnly;
if (mountPath) {
// for each container in the pod spec, add the new volume mount
if(!setVolumeMount(podTemplate, name, mountPath, subPath, readOnly)) {
$scope.disableInputs = false;
return;
}
angular.forEach(podTemplate.spec.containers, function(container) {
if (isContainerSelected(container)) {
var newVolumeMount =
StorageService.createVolumeMount(name, mountPath, subPath, readOnly);
if (!container.volumeMounts) {
container.volumeMounts = [];
}
container.volumeMounts.push(newVolumeMount);
}
});
}

// add the new volume to the pod template
var newVolume = StorageService.createVolume(name, persistentVolumeClaim);
if (!podTemplate.spec.volumes) {
podTemplate.spec.volumes = [];
}

// if the newly created volume already exists, only
// fail if the "overwrite" option was not set
var volumeExists = _.some(podTemplate.spec.volumes, { name: newVolume.name });

if (!volumeExists) {
podTemplate.spec.volumes.push(newVolume);
}
podTemplate.spec.volumes.push(newVolume);

DataService.update(resourceGroupVersion, resource.metadata.name, $scope.attach.resource, context).then(
function() {
Expand Down
14 changes: 0 additions & 14 deletions app/views/attach-pvc.html
Expand Up @@ -83,7 +83,6 @@ <h3>Volume</h3>
ng-model="attach.mountPath"
ng-pattern="/^\/.*$/"
osc-unique="existingMountPaths"
osc-unique-disabled="attach.overwrite"
placeholder="example: /data"
autocorrect="off"
autocapitalize="none"
Expand Down Expand Up @@ -144,7 +143,6 @@ <h3>Volume</h3>
name="volumeName"
ng-model="attach.volumeName"
osc-unique="existingVolumeNames"
osc-unique-disabled="attach.overwrite"
ng-pattern="/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/"
maxlength="63"
placeholder="(generated if empty)"
Expand Down Expand Up @@ -173,18 +171,6 @@ <h3>Volume</h3>
</div>
</div>

<div class="form-group">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="attach.overwrite" aria-describedby="overwrite-help">
Overwrite
</label>
<div id="overwrite-help" class="help-block">
Overwrite a volume mount if it already exists.
</div>
</div>
</div>

<div class="form-group">
<div class="checkbox">
<label>
Expand Down
30 changes: 7 additions & 23 deletions dist/scripts/scripts.js
Expand Up @@ -8492,25 +8492,6 @@ 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 = _.find(t.volumeMounts, function(t) {
return t.mountPath === e && t.name !== e.name;
});
return !n || (C('The volume mount "' + n.mountPath + '" with name "' + n.name + '" already exists for container "' + t.name + '"'), !1);
}, R = function(e, t) {
var n = _.findIndex(t.volumeMounts, {
name: e.name
});
return -1 !== n && (t.volumeMounts[n] = e, !0);
}, 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 @@ -8535,11 +8516,14 @@ 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;
if (i && !I(a, o, i, c, l)) return void (n.disableInputs = !1);
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);
}
});
var p = m.createVolume(o, r);
a.spec.volumes || (a.spec.volumes = []), _.some(a.spec.volumes, {
name: p.name
}) || a.spec.volumes.push(p), s.update(v, e.metadata.name, n.attach.resource, d).then(function() {
a.spec.volumes || (a.spec.volumes = []), 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
15 changes: 2 additions & 13 deletions dist/scripts/templates.js
Expand Up @@ -990,7 +990,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"</div>\n" +
"<div class=\"form-group mar-top-xl\">\n" +
"<label for=\"mount-path\">Mount Path</label>\n" +
"<input id=\"mount-path\" class=\"form-control\" type=\"text\" name=\"mountPath\" ng-model=\"attach.mountPath\" ng-pattern=\"/^\\/.*$/\" osc-unique=\"existingMountPaths\" osc-unique-disabled=\"attach.overwrite\" placeholder=\"example: /data\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" aria-describedby=\"mount-path-help\">\n" +
"<input id=\"mount-path\" class=\"form-control\" type=\"text\" name=\"mountPath\" ng-model=\"attach.mountPath\" ng-pattern=\"/^\\/.*$/\" osc-unique=\"existingMountPaths\" placeholder=\"example: /data\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" aria-describedby=\"mount-path-help\">\n" +
"<div>\n" +
"<span id=\"mount-path-help\" class=\"help-block\">Mount path for the volume inside the container. If not specified, the volume will not be mounted automatically.</span>\n" +
"</div>\n" +
Expand Down Expand Up @@ -1020,7 +1020,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"<div class=\"form-group\">\n" +
"<label for=\"volume-name\">Volume Name</label>\n" +
"\n" +
"<input id=\"volume-path\" class=\"form-control\" type=\"text\" name=\"volumeName\" ng-model=\"attach.volumeName\" osc-unique=\"existingVolumeNames\" osc-unique-disabled=\"attach.overwrite\" ng-pattern=\"/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/\" maxlength=\"63\" placeholder=\"(generated if empty)\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" aria-describedby=\"volume-name-help\">\n" +
"<input id=\"volume-path\" class=\"form-control\" type=\"text\" name=\"volumeName\" ng-model=\"attach.volumeName\" osc-unique=\"existingVolumeNames\" ng-pattern=\"/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/\" maxlength=\"63\" placeholder=\"(generated if empty)\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" aria-describedby=\"volume-name-help\">\n" +
"<div>\n" +
"<span id=\"volume-name-help\" class=\"help-block\">Unique name used to identify this volume. If not specified, a volume name is generated.</span>\n" +
"</div>\n" +
Expand All @@ -1043,17 +1043,6 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"<div class=\"form-group\">\n" +
"<div class=\"checkbox\">\n" +
"<label>\n" +
"<input type=\"checkbox\" ng-model=\"attach.overwrite\" aria-describedby=\"overwrite-help\">\n" +
"Overwrite\n" +
"</label>\n" +
"<div id=\"overwrite-help\" class=\"help-block\">\n" +
"Overwrite a volume mount if it already exists.\n" +
"</div>\n" +
"</div>\n" +
"</div>\n" +
"<div class=\"form-group\">\n" +
"<div class=\"checkbox\">\n" +
"<label>\n" +
"<input type=\"checkbox\" ng-model=\"attach.readOnly\" aria-describedby=\"read-only-help\">\n" +
"Read only\n" +
"</label>\n" +
Expand Down