Skip to content

Commit ce46f5a

Browse files
author
OpenShift Bot
authored
Merge pull request #1129 from spadgett/pause-rollouts-checkbox
Merged by openshift-bot
2 parents 5371b15 + 2c89c33 commit ce46f5a

16 files changed

+191
-41
lines changed

app/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ <h1>JavaScript Required</h1>
355355
<script src="scripts/directives/selector.js"></script>
356356
<script src="scripts/directives/selectContainers.js"></script>
357357
<script src="scripts/directives/buildHooks.js"></script>
358+
<script src="scripts/directives/pauseRolloutsCheckbox.js"></script>
358359
<script src="scripts/filters/date.js"></script>
359360
<script src="scripts/filters/resources.js"></script>
360361
<script src="scripts/filters/canI.js"></script>

app/scripts/controllers/edit/healthChecks.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,16 @@ angular.module('openshiftConsole')
8181

8282
DataService.get(resourceGroupVersion, $scope.name, context).then(
8383
function(result) {
84-
// Modify a copy of the resource.
85-
var resource = angular.copy(result);
84+
// Modify a copy of the object.
85+
var object = $scope.object = angular.copy(result);
8686
$scope.breadcrumbs = BreadcrumbsService.getBreadcrumbs({
87-
object: resource,
87+
object: object,
8888
project: project,
8989
subpage: 'Edit Health Checks',
9090
includeProject: true
9191
});
9292

93-
$scope.containers = _.get(resource, 'spec.template.spec.containers');
93+
$scope.containers = _.get(object, 'spec.template.spec.containers');
9494

9595
$scope.addProbe = function(container, probe) {
9696
// Restore the previous values if set.
@@ -109,7 +109,7 @@ angular.module('openshiftConsole')
109109
$scope.disableInputs = true;
110110
DataService.update(APIService.kindToResource($routeParams.kind),
111111
$scope.name,
112-
resource,
112+
object,
113113
context).then(
114114
function() {
115115
AlertMessageService.addAlert({

app/scripts/controllers/setLimits.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,18 @@ angular.module('openshiftConsole')
8989

9090
DataService.get(resourceGroupVersion, $scope.name, context).then(
9191
function(result) {
92-
var resource = angular.copy(result);
92+
var object = $scope.object = angular.copy(result);
9393
$scope.breadcrumbs = BreadcrumbsService.getBreadcrumbs({
94-
object: resource,
94+
object: object,
9595
project: project,
9696
subpage: 'Edit Resource Limits',
9797
includeProject: true
9898
});
99-
$scope.resourceURL = Navigate.resourceURL(resource);
100-
$scope.containers = _.get(resource, 'spec.template.spec.containers');
99+
$scope.resourceURL = Navigate.resourceURL(object);
100+
$scope.containers = _.get(object, 'spec.template.spec.containers');
101101
$scope.save = function() {
102102
$scope.disableInputs = true;
103-
DataService.update(resourceGroupVersion, $scope.name, resource, context).then(
103+
DataService.update(resourceGroupVersion, $scope.name, object, context).then(
104104
function() {
105105
AlertMessageService.addAlert({
106106
name: $scope.name,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"use strict";
2+
3+
angular.module('openshiftConsole')
4+
.directive('pauseRolloutsCheckbox', function(APIService) {
5+
return {
6+
restrict: 'E',
7+
scope: {
8+
// Deployment config or k8s deployment API object.
9+
deployment: '=',
10+
disabled: '=ngDisabled',
11+
// Show the checkbox even if the deployment config doesn't have a
12+
// config change trigger.
13+
alwaysVisible: '='
14+
},
15+
templateUrl: 'views/directives/pause-rollouts-checkbox.html',
16+
link: function($scope) {
17+
var isDeploymentConfig = function() {
18+
if (!$scope.deployment) {
19+
return false;
20+
}
21+
var rgv = APIService.objectToResourceGroupVersion($scope.deployment);
22+
return rgv.resource === 'deploymentconfigs' && !rgv.group;
23+
};
24+
25+
$scope.$watch('deployment.spec.triggers', function(triggers) {
26+
// Hide the checkbox if there's no config change trigger.
27+
$scope.missingConfigChangeTrigger =
28+
isDeploymentConfig() && !_.some(triggers, { type: 'ConfigChange' });
29+
}, true);
30+
}
31+
};
32+
});

app/scripts/filters/resources.js

+19
Original file line numberDiff line numberDiff line change
@@ -1460,4 +1460,23 @@ angular.module('openshiftConsole')
14601460

14611461
return mount.readOnly ? 'read-only' : 'read-write';
14621462
};
1463+
})
1464+
.filter('managesRollouts', function(APIService) {
1465+
// Return true for API objects that manage rollouts (deployment configs and deployments).
1466+
return function(object) {
1467+
if (!object) {
1468+
return false;
1469+
}
1470+
1471+
var rgv = APIService.objectToResourceGroupVersion(object);
1472+
if (rgv.resource === 'deploymentconfigs' && !rgv.group) {
1473+
return true;
1474+
}
1475+
1476+
if (rgv.resource === 'deployments' && rgv.group === 'extensions') {
1477+
return true;
1478+
}
1479+
1480+
return false;
1481+
};
14631482
});

app/styles/_forms.less

+7
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,10 @@
7979
// Use the same spacing as `help-block` so the textarea is evenly spaced under the help text.
8080
margin: 5px 0;
8181
}
82+
83+
.health-checks-form .pause-rollouts-checkbox,
84+
.set-limits-form .pause-rollouts-checkbox {
85+
// Add extra margin on some forms so it's clear the checkbox is not part of
86+
// the sections just above.
87+
margin-top: @line-height-computed;
88+
}

app/views/attach-pvc.html

+5
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,11 @@ <h3>Volume</h3>
211211
</div>
212212
</div>
213213

214+
<pause-rollouts-checkbox
215+
ng-if="attach.resource | managesRollouts"
216+
deployment="attach.resource">
217+
</pause-rollouts-checkbox>
218+
214219
<div class="button-group gutter-top gutter-bottom">
215220
<button type="submit"
216221
class="btn btn-primary btn-lg"

app/views/browse/deployment-config.html

+5-6
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ <h1 class="contains-actions">
4141
</li>
4242
<li class="divider" ng-if="'deploymentconfigs' | canI : 'update'"></li>
4343
<li ng-if="!deploymentConfig.spec.paused && !updatingPausedState && ('deploymentconfigs' | canI : 'update')">
44-
<a href="" ng-click="setPaused(true)" role="button">Pause Deployment</a>
44+
<a href="" ng-click="setPaused(true)" role="button">Pause Rollouts</a>
4545
</li>
4646
<li ng-if="deploymentConfig.spec.paused && !updatingPausedState && ('deploymentconfigs' | canI : 'update')">
47-
<a href="" ng-click="setPaused(false)" role="button">Resume Deployment</a>
47+
<a href="" ng-click="setPaused(false)" role="button">Resume Rollouts</a>
4848
</li>
4949
<li ng-if="'deploymentconfigs' | canI : 'update'">
5050
<a ng-href="project/{{project.metadata.name}}/attach-pvc?kind=DeploymentConfig&name={{deploymentConfig.metadata.name}}"
@@ -98,10 +98,9 @@ <h1 class="contains-actions">
9898
<div ng-if="deploymentConfig.spec.paused" class="alert alert-info animate-if">
9999
<span class="pficon pficon-info" aria-hidden="true"></span>
100100
<strong>{{deploymentConfig.metadata.name}} is paused.</strong>
101-
This will stop any new deployments and deployment triggers from running
102-
until resumed.
103-
<span ng-if="!updatingPausedState && ('deploymentconfigs' | canI : 'update')">
104-
<a href="" ng-click="setPaused(false)" role="button">Resume deployment</a>
101+
This will stop any new rollouts or triggers from running until resumed.
102+
<span ng-if="!updatingPausedState && ('deploymentconfigs' | canI : 'update')" class="nowrap">
103+
<a href="" ng-click="setPaused(false)" role="button">Resume Rollouts</a>
105104
</span>
106105
</div>
107106
<uib-tabset>

app/views/browse/deployment.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ <h1 class="contains-actions">
2020
data-toggle="dropdown"><i class="fa fa-ellipsis-v"></i><span class="sr-only">Actions</span></a>
2121
<ul class="dropdown-menu actions action-button">
2222
<li ng-if="!deployment.spec.paused && !updatingPausedState && ({ group: 'extensions', resource: 'deployments' } | canI : 'update')">
23-
<a href="" ng-click="setPaused(true)" role="button">Pause Deployment</a>
23+
<a href="" ng-click="setPaused(true)" role="button">Pause Rollouts</a>
2424
</li>
2525
<li ng-if="deployment.spec.paused && !updatingPausedState && ({ group: 'extensions', resource: 'deployments' } | canI : 'update')">
26-
<a href="" ng-click="setPaused(false)" role="button">Resume Deployment</a>
26+
<a href="" ng-click="setPaused(false)" role="button">Resume Rollouts</a>
2727
</li>
2828
<li class="divider" ng-if="!updatingPausedState && ({ group: 'extensions', resource: 'deployments' } | canI : 'update')"></li>
2929
<li ng-if="{ group: 'extensions', resource: 'deployments' } | canI : 'update'">
@@ -78,10 +78,10 @@ <h1 class="contains-actions">
7878
<div ng-if="deployment.spec.paused" class="alert alert-info animate-if">
7979
<span class="pficon pficon-info" aria-hidden="true"></span>
8080
<strong>{{deployment.metadata.name}} is paused.</strong>
81-
This will pause any in-progress rollouts and stop new
81+
This pauses any in-progress rollouts and stops new
8282
rollouts from running until the deployment is resumed.
83-
<span ng-if="!updatingPausedState && ({ group: 'extensions', resource: 'deployments' } | canI : 'update')">
84-
<a href="" ng-click="setPaused(false)" role="button">Resume deployment</a>
83+
<span ng-if="!updatingPausedState && ({ group: 'extensions', resource: 'deployments' } | canI : 'update')" class="nowrap">
84+
<a href="" ng-click="setPaused(false)" role="button">Resume Rollouts</a>
8585
</span>
8686
</div>
8787
<uib-tabset>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<div ng-if="alwaysVisible || !missingConfigChangeTrigger" class="form-group pause-rollouts-checkbox">
2+
<div class="checkbox">
3+
<label>
4+
<input
5+
type="checkbox"
6+
ng-disabled="disabled"
7+
ng-model="deployment.spec.paused"
8+
aria-describedby="pause-help">
9+
Pause rollouts for this {{deployment.kind | humanizeKind}}
10+
</label>
11+
<div id="pause-help" class="help-block">
12+
Pausing lets you make changes without triggering a rollout. You can resume rollouts at any
13+
time.
14+
<span ng-if="!alwaysVisible">If unchecked, a new rollout will start on save.</span>
15+
</div>
16+
</div>
17+
</div>

app/views/edit/deployment-config.html

+5
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,11 @@ <h4>Container {{containerName}}</h4>
356356
</div>
357357
</div>
358358

359+
<pause-rollouts-checkbox
360+
deployment="updatedDeploymentConfig"
361+
always-visible="true">
362+
</pause-rollouts-checkbox>
363+
359364
<div class="buttons gutter-top-bottom">
360365
<button type="submit" class="btn btn-primary btn-lg" ng-disabled="form.$invalid || form.$pristine || disableInputs">
361366
Save

app/views/edit/health-checks.html

+7-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<div class="col-md-12">
1515
<alerts alerts="alerts"></alerts>
1616
<div ng-show="!containers.length" class="mar-top-md">Loading...</div>
17-
<form ng-show="containers.length" name="form">
17+
<form ng-show="containers.length" name="form" class="health-checks-form">
1818
<h1>Health Checks: {{name}}</h1>
1919
<div class="help-block">
2020
Container health is periodically checked using readiness and liveness probes.
@@ -62,6 +62,12 @@ <h3>Liveness Probe</h3>
6262
</p>
6363
</div>
6464
</div>
65+
66+
<pause-rollouts-checkbox
67+
ng-if="object | managesRollouts"
68+
deployment="object">
69+
</pause-rollouts-checkbox>
70+
6571
<div class="button-group gutter-top gutter-bottom">
6672
<button type="submit"
6773
class="btn btn-primary btn-lg"

app/views/set-limits.html

+8-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<div class="col-md-12">
1515
<alerts alerts="alerts"></alerts>
1616
<div ng-show="!containers.length">Loading...</div>
17-
<form ng-if="containers.length" name="form">
17+
<form ng-if="containers.length" name="form" class="set-limits-form">
1818
<h1>Resource Limits: {{name}}</h1>
1919
<div class="help-block">
2020
Resource limits control how much <span ng-if="!hideCPU">CPU and</span> memory a container will consume on a node.
@@ -49,11 +49,17 @@ <h2 ng-if="containers.length > 1">Container {{container.name}}</h2>
4949
<div ng-repeat="problem in memoryProblems" class="has-error">
5050
<span class="help-block">{{problem}}</span>
5151
</div>
52+
53+
<pause-rollouts-checkbox
54+
ng-if="object | managesRollouts"
55+
deployment="object">
56+
</pause-rollouts-checkbox>
57+
5258
<div class="button-group gutter-top gutter-bottom">
5359
<button type="submit"
5460
class="btn btn-primary btn-lg"
5561
ng-click="save()"
56-
ng-disabled="form.$invalid || disableInputs || cpuProblems.length || memoryProblems.length"
62+
ng-disabled="form.$pristine || form.$invalid || disableInputs || cpuProblems.length || memoryProblems.length"
5763
value="">Save</button>
5864
<a class="btn btn-default btn-lg" ng-href="{{resourceURL}}">Cancel</a>
5965
</div>

dist/scripts/scripts.js

+32-4
Original file line numberDiff line numberDiff line change
@@ -6997,7 +6997,7 @@ group:d.group
69976997
};
69986998
if (!h.canI(n, "update", d.project)) return void l.toErrorPage("You do not have authority to update " + o(d.kind) + " " + d.name + ".", "access_denied");
69996999
j.get(n, e.name, m).then(function(a) {
7000-
var d = angular.copy(a);
7000+
var d = e.object = angular.copy(a);
70017001
e.breadcrumbs = i.getBreadcrumbs({
70027002
object:d,
70037003
project:c,
@@ -7720,7 +7720,7 @@ resource:h.kindToResource(c.kind),
77207720
group:c.group
77217721
};
77227722
return f.canI(p, "update", c.project) ? void i.get(p, d.name, l).then(function(a) {
7723-
var f = angular.copy(a);
7723+
var f = d.object = angular.copy(a);
77247724
d.breadcrumbs = g.getBreadcrumbs({
77257725
object:f,
77267726
project:k,
@@ -13540,7 +13540,29 @@ scope:{
1354013540
build:"="
1354113541
}
1354213542
};
13543-
}), angular.module("openshiftConsole").filter("duration", function() {
13543+
}), angular.module("openshiftConsole").directive("pauseRolloutsCheckbox", [ "APIService", function(a) {
13544+
return {
13545+
restrict:"E",
13546+
scope:{
13547+
deployment:"=",
13548+
disabled:"=ngDisabled",
13549+
alwaysVisible:"="
13550+
},
13551+
templateUrl:"views/directives/pause-rollouts-checkbox.html",
13552+
link:function(b) {
13553+
var c = function() {
13554+
if (!b.deployment) return !1;
13555+
var c = a.objectToResourceGroupVersion(b.deployment);
13556+
return "deploymentconfigs" === c.resource && !c.group;
13557+
};
13558+
b.$watch("deployment.spec.triggers", function(a) {
13559+
b.missingConfigChangeTrigger = c() && !_.some(a, {
13560+
type:"ConfigChange"
13561+
});
13562+
}, !0);
13563+
}
13564+
};
13565+
} ]), angular.module("openshiftConsole").filter("duration", function() {
1354413566
return function(a, b, c, d) {
1354513567
function e(a, b, d) {
1354613568
if (0 !== a) return 1 === a ? void (c ? h.push(b) :h.push("1 " + b)) :void h.push(a + " " + d);
@@ -14385,7 +14407,13 @@ name:b.name
1438514407
});
1438614408
return a(d) ? "read-only" :_.get(d, "persistentVolumeClaim.readOnly") ? "read-only" :b.readOnly ? "read-only" :"read-write";
1438714409
};
14388-
}), angular.module("openshiftConsole").filter("canI", [ "AuthorizationService", function(a) {
14410+
}).filter("managesRollouts", [ "APIService", function(a) {
14411+
return function(b) {
14412+
if (!b) return !1;
14413+
var c = a.objectToResourceGroupVersion(b);
14414+
return "deploymentconfigs" === c.resource && !c.group || "deployments" === c.resource && "extensions" === c.group;
14415+
};
14416+
} ]), angular.module("openshiftConsole").filter("canI", [ "AuthorizationService", function(a) {
1438914417
return function(b, c, d) {
1439014418
return a.canI(b, c, d);
1439114419
};

0 commit comments

Comments
 (0)