Skip to content

Commit 3c9de65

Browse files
committed
Bug 1462205 - Delete binding shouldn't show up when all bindings are pending deletion
1 parent 4216093 commit 3c9de65

File tree

6 files changed

+24
-12
lines changed

6 files changed

+24
-12
lines changed

app/scripts/controllers/overview.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,7 @@ function OverviewController($scope,
11011101
// - API objects by binding name
11021102
state.bindingsByApplicationUID = {};
11031103
state.applicationsByBinding = {};
1104+
state.validBindingsByApplicationUID = {};
11041105

11051106
// If there are no bindings, nothing to do.
11061107
if (_.isEmpty(state.bindings)) {
@@ -1139,6 +1140,7 @@ function OverviewController($scope,
11391140
// pod preset covers the selector.
11401141
var applicationSelector = new LabelSelector(_.get(apiObject, 'spec.selector'));
11411142
state.bindingsByApplicationUID[applicationUID] = [];
1143+
state.validBindingsByApplicationUID[applicationUID] = [];
11421144

11431145
// Look at each pod preset selector to see if it covers this API object selector.
11441146
_.each(podPresetSelectors, function(podPresetSelector, bindingName) {
@@ -1147,6 +1149,9 @@ function OverviewController($scope,
11471149
// the target. We want to show bindings both in the "application"
11481150
// object rows and the service instance rows.
11491151
state.bindingsByApplicationUID[applicationUID].push(state.bindings[bindingName]);
1152+
if (!_.get(state.bindings[bindingName], 'metadata.deletionTimestamp')) {
1153+
state.validBindingsByApplicationUID[applicationUID].push(state.bindings[bindingName]);
1154+
}
11501155
state.applicationsByBinding[bindingName] = state.applicationsByBinding[bindingName] || [];
11511156
state.applicationsByBinding[bindingName].push(apiObject);
11521157
}

app/scripts/directives/overview/serviceInstanceRow.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
row.notifications = ListRowUtils.getNotifications(row.apiObject, row.state);
4242
row.displayName = serviceInstanceDisplayName(row.apiObject, row.serviceClasses);
4343
row.description = getDescription();
44+
row.validBindings = _.reject(row.bindings, 'metadata.deletionTimestamp');
4445
};
4546

4647
row.getSecretForBinding = function(binding) {

app/views/overview/_list-row-actions.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
</li>
2626
<!-- FIXME: Can't enable canI checks on svc cat resources until we have aggregation
2727
<li ng-if="(row.state.serviceInstances | hashSize) > 0 && {resource: 'bindings', group: 'servicecatalog.k8s.io'} | canI : 'create'" role="menuitem"> -->
28-
<li ng-if-start="('pod_presets' | enableTechPreviewFeature) && row.state.bindableServiceInstances.length" role="menuitem">
28+
<li ng-if="('pod_presets' | enableTechPreviewFeature) && row.state.bindableServiceInstances.length" role="menuitem">
2929
<a href="" ng-click="row.showOverlayPanel('bindService', {target: row.apiObject})">Create Binding</a>
3030
</li>
31-
<li ng-if-end role="menuitem">
31+
<li ng-if="('pod_presets' | enableTechPreviewFeature) && row.state.validBindingsByApplicationUID[row.apiObject.metadata.uid].length" role="menuitem">
3232
<a href="" ng-click="row.showOverlayPanel('unbindService', {target: row.apiObject})">Delete Binding</a>
3333
</li>
3434
<li ng-if="row.current && ('deploymentconfigs/log' | canI : 'get')" role="menuitem">

app/views/overview/_service-instance-row.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ <h3>
5555
<li role="menuitem" ng-if="('pod_presets' | enableTechPreviewFeature) && row.isBindable">
5656
<a href="" ng-click="row.showOverlayPanel('bindService', {target: row.apiObject})">Create Binding</a>
5757
</li>
58-
<li role="menuitem" ng-if="('pod_presets' | enableTechPreviewFeature) && row.bindings.length">
58+
<li role="menuitem" ng-if="('pod_presets' | enableTechPreviewFeature) && row.validBindings.length">
5959
<a href="" ng-click="row.showOverlayPanel('unbindService', {target: row.apiObject})">Delete Binding</a>
6060
</li>
6161
<li role="menuitem">
@@ -127,7 +127,10 @@ <h3>
127127
</div>
128128
</div>
129129
<div class="col-sm-7 col-md-6 overview-bindings">
130-
<span ng-if="!(binding | isBindingReady)">
130+
<span ng-if="binding.metadata.deletionTimestamp">
131+
<status-icon status="'Pending'"></status-icon> Deleting
132+
</span>
133+
<span ng-if="!(binding | isBindingReady) && !binding.metadata.deletionTimestamp">
131134
<status-icon status="'Pending'"></status-icon> Pending
132135
</span>
133136
<a

dist/scripts/scripts.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ errorNotification:!1
368368
Q.secrets = a.by("metadata.name");
369369
});
370370
}, 300), $a = function() {
371-
if (Q.bindingsByApplicationUID = {}, Q.applicationsByBinding = {}, !_.isEmpty(Q.bindings)) {
371+
if (Q.bindingsByApplicationUID = {}, Q.applicationsByBinding = {}, Q.validBindingsByApplicationUID = {}, !_.isEmpty(Q.bindings)) {
372372
var a = [ z.deploymentConfigs, z.vanillaReplicationControllers, z.deployments, z.vanillaReplicaSets, z.statefulSets ];
373373
if (!_.some(a, function(a) {
374374
return !a;
@@ -380,8 +380,8 @@ c && (b[a.metadata.name] = new LabelSelector(c));
380380
}), _.each(a, function(a) {
381381
_.each(a, function(a) {
382382
var c = T(a), d = new LabelSelector(_.get(a, "spec.selector"));
383-
Q.bindingsByApplicationUID[c] = [], _.each(b, function(b, e) {
384-
b.covers(d) && (Q.bindingsByApplicationUID[c].push(Q.bindings[e]), Q.applicationsByBinding[e] = Q.applicationsByBinding[e] || [], Q.applicationsByBinding[e].push(a));
383+
Q.bindingsByApplicationUID[c] = [], Q.validBindingsByApplicationUID[c] = [], _.each(b, function(b, e) {
384+
b.covers(d) && (Q.bindingsByApplicationUID[c].push(Q.bindings[e]), _.get(Q.bindings[e], "metadata.deletionTimestamp") || Q.validBindingsByApplicationUID[c].push(Q.bindings[e]), Q.applicationsByBinding[e] = Q.applicationsByBinding[e] || [], Q.applicationsByBinding[e].push(a));
385385
});
386386
});
387387
});
@@ -13078,7 +13078,7 @@ var a = g.apiObject.spec.serviceClassName;
1307813078
return _.get(g, [ "state", "serviceClasses", a, "description" ]);
1307913079
};
1308013080
g.$doCheck = function() {
13081-
g.notifications = e.getNotifications(g.apiObject, g.state), g.displayName = i(g.apiObject, g.serviceClasses), g.description = j();
13081+
g.notifications = e.getNotifications(g.apiObject, g.state), g.displayName = i(g.apiObject, g.serviceClasses), g.description = j(), g.validBindings = _.reject(g.bindings, "metadata.deletionTimestamp");
1308213082
}, g.getSecretForBinding = function(a) {
1308313083
return a && _.get(g, [ "state", "secrets", a.spec.secretName ]);
1308413084
}, g.isBindable = d.isServiceBindable(g.apiObject, g.state.serviceClasses), g.closeOverlayPanel = function() {

dist/scripts/templates.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11640,10 +11640,10 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
1164011640
"<a ng-href=\"{{row.apiObject | editResourceURL}}\">Edit</a>\n" +
1164111641
"</li>\n" +
1164211642
"\n" +
11643-
"<li ng-if-start=\"('pod_presets' | enableTechPreviewFeature) && row.state.bindableServiceInstances.length\" role=\"menuitem\">\n" +
11643+
"<li ng-if=\"('pod_presets' | enableTechPreviewFeature) && row.state.bindableServiceInstances.length\" role=\"menuitem\">\n" +
1164411644
"<a href=\"\" ng-click=\"row.showOverlayPanel('bindService', {target: row.apiObject})\">Create Binding</a>\n" +
1164511645
"</li>\n" +
11646-
"<li ng-if-end role=\"menuitem\">\n" +
11646+
"<li ng-if=\"('pod_presets' | enableTechPreviewFeature) && row.state.validBindingsByApplicationUID[row.apiObject.metadata.uid].length\" role=\"menuitem\">\n" +
1164711647
"<a href=\"\" ng-click=\"row.showOverlayPanel('unbindService', {target: row.apiObject})\">Delete Binding</a>\n" +
1164811648
"</li>\n" +
1164911649
"<li ng-if=\"row.current && ('deploymentconfigs/log' | canI : 'get')\" role=\"menuitem\">\n" +
@@ -12238,7 +12238,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
1223812238
"<li role=\"menuitem\" ng-if=\"('pod_presets' | enableTechPreviewFeature) && row.isBindable\">\n" +
1223912239
"<a href=\"\" ng-click=\"row.showOverlayPanel('bindService', {target: row.apiObject})\">Create Binding</a>\n" +
1224012240
"</li>\n" +
12241-
"<li role=\"menuitem\" ng-if=\"('pod_presets' | enableTechPreviewFeature) && row.bindings.length\">\n" +
12241+
"<li role=\"menuitem\" ng-if=\"('pod_presets' | enableTechPreviewFeature) && row.validBindings.length\">\n" +
1224212242
"<a href=\"\" ng-click=\"row.showOverlayPanel('unbindService', {target: row.apiObject})\">Delete Binding</a>\n" +
1224312243
"</li>\n" +
1224412244
"<li role=\"menuitem\">\n" +
@@ -12288,7 +12288,10 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
1228812288
"</div>\n" +
1228912289
"</div>\n" +
1229012290
"<div class=\"col-sm-7 col-md-6 overview-bindings\">\n" +
12291-
"<span ng-if=\"!(binding | isBindingReady)\">\n" +
12291+
"<span ng-if=\"binding.metadata.deletionTimestamp\">\n" +
12292+
"<status-icon status=\"'Pending'\"></status-icon> Deleting\n" +
12293+
"</span>\n" +
12294+
"<span ng-if=\"!(binding | isBindingReady) && !binding.metadata.deletionTimestamp\">\n" +
1229212295
"<status-icon status=\"'Pending'\"></status-icon> Pending\n" +
1229312296
"</span>\n" +
1229412297
"<a ng-if=\"(binding | isBindingReady) && ('secrets' | canI : 'get')\" ng-href=\"{{row.getSecretForBinding(binding) | navigateResourceURL}}\">\n" +

0 commit comments

Comments
 (0)