|
...
|
...
|
@@ -1254,11 +1254,11 @@ managing_secrets:"dev_guide/service_accounts.html#managing-allowed-secrets",
|
|
1254
|
1254
|
creating_secrets:"dev_guide/secrets.html#creating-and-using-secrets",
|
|
1255
|
1255
|
storage_classes:"install_config/persistent_storage/dynamically_provisioning_pvs.html",
|
|
1256
|
1256
|
selector_label:"install_config/persistent_storage/selector_label_binding.html",
|
|
1257
|
|
-rolling_strategy:"dev_guide/deployments.html#rolling-strategy",
|
|
1258
|
|
-recreate_strategy:"dev_guide/deployments.html#recreate-strategy",
|
|
1259
|
|
-custom_strategy:"dev_guide/deployments.html#custom-strategy",
|
|
1260
|
|
-lifecycle_hooks:"dev_guide/deployments.html#lifecycle-hooks",
|
|
1261
|
|
-new_pod_exec:"dev_guide/deployments.html#pod-based-lifecycle-hook",
|
|
|
1257
|
+rolling_strategy:"dev_guide/deployments/deployment_strategies.html#rolling-strategy",
|
|
|
1258
|
+recreate_strategy:"dev_guide/deployments/deployment_strategies.html#recreate-strategy",
|
|
|
1259
|
+custom_strategy:"dev_guide/deployments/deployment_strategies.html#custom-strategy",
|
|
|
1260
|
+lifecycle_hooks:"dev_guide/deployments/deployment_strategies.html#lifecycle-hooks",
|
|
|
1261
|
+new_pod_exec:"dev_guide/deployments/deployment_strategies.html#pod-based-lifecycle-hook",
|
|
1262
|
1262
|
authorization:"architecture/additional_concepts/authorization.html",
|
|
1263
|
1263
|
roles:"architecture/additional_concepts/authorization.html#roles",
|
|
1264
|
1264
|
service_accounts:"dev_guide/service_accounts.html",
|
|
...
|
...
|
@@ -7062,7 +7062,7 @@ a.hpaWarnings = b;
|
|
7062
|
7062
|
});
|
|
7063
|
7063
|
};
|
|
7064
|
7064
|
f.get("deploymentconfigs", c.deploymentconfig, e).then(function(d) {
|
|
7065
|
|
-a.loaded = !0, a.deploymentConfig = d, u(), s(d), a.saveEnvVars = function() {
|
|
|
7065
|
+a.loaded = !0, a.deploymentConfig = d, a.strategyParams = b("deploymentStrategyParams")(d), u(), s(d), a.saveEnvVars = function() {
|
|
7066
|
7066
|
_.each(a.updatedDeploymentConfig.spec.template.spec.containers, function(a) {
|
|
7067
|
7067
|
a.env = q.compactEntries(angular.copy(a.env));
|
|
7068
|
7068
|
}), f.update("deploymentconfigs", c.deploymentconfig, angular.copy(a.updatedDeploymentConfig), e).then(function() {
|
|
...
|
...
|
@@ -11784,7 +11784,7 @@ value:d
|
|
11784
|
11784
|
});
|
|
11785
|
11785
|
} ]
|
|
11786
|
11786
|
};
|
|
11787
|
|
-}), angular.module("openshiftConsole").directive("lifecycleHook", function() {
|
|
|
11787
|
+}), angular.module("openshiftConsole").directive("editLifecycleHook", function() {
|
|
11788
|
11788
|
return {
|
|
11789
|
11789
|
restrict:"E",
|
|
11790
|
11790
|
scope:{
|
|
...
|
...
|
@@ -11794,7 +11794,7 @@ availableVolumes:"=",
|
|
11794
|
11794
|
availableContainers:"=",
|
|
11795
|
11795
|
namespace:"="
|
|
11796
|
11796
|
},
|
|
11797
|
|
-templateUrl:"views/directives/lifecycle-hook.html",
|
|
|
11797
|
+templateUrl:"views/directives/edit-lifecycle-hook.html",
|
|
11798
|
11798
|
controller:[ "$scope", function(a) {
|
|
11799
|
11799
|
a.view = {
|
|
11800
|
11800
|
isDisabled:!1
|
|
...
|
...
|
@@ -11842,7 +11842,21 @@ _.has(a.istagHook, [ "tagObject", "tag" ]) && (_.set(a.hookParams, "tagImages[0]
|
|
11842
|
11842
|
});
|
|
11843
|
11843
|
} ]
|
|
11844
|
11844
|
};
|
|
11845
|
|
-}), angular.module("openshiftConsole").directive("actionChip", function() {
|
|
|
11845
|
+}).directive("lifecycleHook", [ "$filter", function(a) {
|
|
|
11846
|
+return {
|
|
|
11847
|
+restrict:"E",
|
|
|
11848
|
+scope:{
|
|
|
11849
|
+deploymentConfig:"=",
|
|
|
11850
|
+type:"@"
|
|
|
11851
|
+},
|
|
|
11852
|
+templateUrl:"views/directives/lifecycle-hook.html",
|
|
|
11853
|
+link:function(b) {
|
|
|
11854
|
+b.$watch("deploymentConfig", function(c) {
|
|
|
11855
|
+b.strategyParams = a("deploymentStrategyParams")(c);
|
|
|
11856
|
+});
|
|
|
11857
|
+}
|
|
|
11858
|
+};
|
|
|
11859
|
+} ]), angular.module("openshiftConsole").directive("actionChip", function() {
|
|
11846
|
11860
|
return {
|
|
11847
|
11861
|
restrict:"E",
|
|
11848
|
11862
|
scope:{
|
|
...
|
...
|
@@ -14896,6 +14910,23 @@ return !!a && _.indexOf([ "ABORTED", "FAILED", "SUCCESS" ], a.status) !== -1;
|
|
14896
|
14896
|
return function(a) {
|
|
14897
|
14897
|
return !!a && "PAUSED_PENDING_INPUT" === a.status;
|
|
14898
|
14898
|
};
|
|
|
14899
|
+}).filter("deploymentStrategyParams", function() {
|
|
|
14900
|
+return function(a) {
|
|
|
14901
|
+var b = _.get(a, "spec.strategy.type");
|
|
|
14902
|
+switch (b) {
|
|
|
14903
|
+case "Recreate":
|
|
|
14904
|
+return _.get(a, "spec.strategy.recreateParams", {});
|
|
|
14905
|
+
|
|
|
14906
|
+case "Rolling":
|
|
|
14907
|
+return _.get(a, "spec.strategy.rollingParams", {});
|
|
|
14908
|
+
|
|
|
14909
|
+case "Custom":
|
|
|
14910
|
+return _.get(a, "spec.strategy.customParams", {});
|
|
|
14911
|
+
|
|
|
14912
|
+default:
|
|
|
14913
|
+return null;
|
|
|
14914
|
+}
|
|
|
14915
|
+};
|
|
14899
|
14916
|
}).filter("humanizeKind", [ "startCaseFilter", function(a) {
|
|
14900
|
14917
|
return function(a, b) {
|
|
14901
|
14918
|
if (!a) return a;
|
|
...
|
...
|
@@ -18217,21 +18248,19 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
|
|
18217
|
18217
|
"<replicas spec=\"deploymentConfig.spec.replicas\" disable-scaling=\"autoscalers.length || deploymentInProgress\" scale-fn=\"scale(replicas)\" deployment=\"deploymentConfig\"></replicas>\n" +
|
|
18218
|
18218
|
"<span ng-if=\"autoscalers.length\">(autoscaled)</span>\n" +
|
|
18219
|
18219
|
"</dd>\n" +
|
|
18220
|
|
- "<div ng-if=\"deploymentConfig.spec.strategy.type\">\n" +
|
|
18221
|
|
- "<dt>Strategy:</dt>\n" +
|
|
18222
|
|
- "<dd>{{deploymentConfig.spec.strategy.type}}</dd>\n" +
|
|
18223
|
|
- "</div>\n" +
|
|
18224
|
|
- "<div ng-if=\"deploymentConfig.spec.strategy.rollingParams\">\n" +
|
|
18225
|
|
- "<dt>Update Period:</dt>\n" +
|
|
18226
|
|
- "<dd>{{deploymentConfig.spec.strategy.rollingParams.updatePeriodSeconds}} sec</dd>\n" +
|
|
18227
|
|
- "<dt>Interval:</dt>\n" +
|
|
18228
|
|
- "<dd>{{deploymentConfig.spec.strategy.rollingParams.intervalSeconds}} sec</dd>\n" +
|
|
|
18220
|
+ "<dt ng-if-start=\"deploymentConfig.spec.strategy.type\">Strategy:</dt>\n" +
|
|
|
18221
|
+ "<dd ng-if-end>{{deploymentConfig.spec.strategy.type}}</dd>\n" +
|
|
|
18222
|
+ "<div ng-if=\"deploymentConfig.spec.strategy.rollingParams || deploymentConfig.spec.strategy.recreateParams\">\n" +
|
|
18229
|
18223
|
"<dt>Timeout:</dt>\n" +
|
|
18230
|
|
- "<dd>{{deploymentConfig.spec.strategy.rollingParams.timeoutSeconds}} sec</dd>\n" +
|
|
|
18224
|
+ "<dd>{{strategyParams.timeoutSeconds}} sec</dd>\n" +
|
|
|
18225
|
+ "<dt ng-if-start=\"deploymentConfig.spec.strategy.rollingParams\">Update Period:</dt>\n" +
|
|
|
18226
|
+ "<dd>{{strategyParams.updatePeriodSeconds}} sec</dd>\n" +
|
|
|
18227
|
+ "<dt>Interval:</dt>\n" +
|
|
|
18228
|
+ "<dd>{{strategyParams.intervalSeconds}} sec</dd>\n" +
|
|
18231
|
18229
|
"<dt>Max Unavailable:</dt>\n" +
|
|
18232
|
|
- "<dd>{{deploymentConfig.spec.strategy.rollingParams.maxUnavailable}}</dd>\n" +
|
|
|
18230
|
+ "<dd>{{strategyParams.maxUnavailable}}</dd>\n" +
|
|
18233
|
18231
|
"<dt>Max Surge:</dt>\n" +
|
|
18234
|
|
- "<dd>{{deploymentConfig.spec.strategy.rollingParams.maxSurge}}</dd>\n" +
|
|
|
18232
|
+ "<dd ng-if-end>{{strategyParams.maxSurge}}</dd>\n" +
|
|
18235
|
18233
|
"</div>\n" +
|
|
18236
|
18234
|
"\n" +
|
|
18237
|
18235
|
"</dl>\n" +
|
|
...
|
...
|
@@ -18272,6 +18301,26 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
|
|
18272
|
18272
|
"<hpa hpa=\"hpa\" project=\"project\" show-scale-target=\"false\" alerts=\"alerts\"></hpa>\n" +
|
|
18273
|
18273
|
"</div>\n" +
|
|
18274
|
18274
|
"</div>\n" +
|
|
|
18275
|
+ "<div class=\"col-lg-6\" ng-if=\"deploymentConfig.spec.strategy.type !== 'Custom'\">\n" +
|
|
|
18276
|
+ "<h3>\n" +
|
|
|
18277
|
+ "Hooks\n" +
|
|
|
18278
|
+ "<span class=\"learn-more-inline\">\n" +
|
|
|
18279
|
+ "<a ng-href=\"{{'lifecycle_hooks' | helpLink}}\" target=\"_blank\">Learn More <i class=\"fa fa-external-link\" aria-hidden=\"true\"></i></a>\n" +
|
|
|
18280
|
+ "</span>\n" +
|
|
|
18281
|
+ "</h3>\n" +
|
|
|
18282
|
+ "<div ng-if=\"strategyParams.pre\">\n" +
|
|
|
18283
|
+ "<lifecycle-hook deployment-config=\"deploymentConfig\" type=\"pre\"></lifecycle-hook>\n" +
|
|
|
18284
|
+ "</div>\n" +
|
|
|
18285
|
+ "<div ng-if=\"strategyParams.mid\">\n" +
|
|
|
18286
|
+ "<lifecycle-hook deployment-config=\"deploymentConfig\" type=\"mid\"></lifecycle-hook>\n" +
|
|
|
18287
|
+ "</div>\n" +
|
|
|
18288
|
+ "<div ng-if=\"strategyParams.post\">\n" +
|
|
|
18289
|
+ "<lifecycle-hook deployment-config=\"deploymentConfig\" type=\"post\"></lifecycle-hook>\n" +
|
|
|
18290
|
+ "</div>\n" +
|
|
|
18291
|
+ "<div ng-if=\"!strategyParams.pre && !strategyParams.mid && !strategyParams.post\">\n" +
|
|
|
18292
|
+ "none\n" +
|
|
|
18293
|
+ "</div>\n" +
|
|
|
18294
|
+ "</div>\n" +
|
|
18275
|
18295
|
"<div class=\"col-lg-6\">\n" +
|
|
18276
|
18296
|
"<h3>Triggers</h3>\n" +
|
|
18277
|
18297
|
"<dl class=\"dl-horizontal left\">\n" +
|
|
...
|
...
|
@@ -21308,7 +21357,7 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
|
|
21308
|
21308
|
"GET {{probe.httpGet.path || '/'}} on port {{probe.httpGet.port || 'unknown'}}\n" +
|
|
21309
|
21309
|
"</span>\n" +
|
|
21310
|
21310
|
"<span ng-if=\"probe.exec.command\">\n" +
|
|
21311
|
|
- "<code class=\"probe-command\">\n" +
|
|
|
21311
|
+ "<code class=\"command\">\n" +
|
|
21312
|
21312
|
"<span ng-repeat=\"arg in probe.exec.command\">\n" +
|
|
21313
|
21313
|
"<truncate-long-text content=\"arg\" limit=\"80\" newline-limit=\"1\" expandable=\"false\" use-word-boundary=\"false\">\n" +
|
|
21314
|
21314
|
"</truncate-long-text>\n" +
|
|
...
|
...
|
@@ -22019,6 +22068,120 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
|
|
22019
|
22019
|
);
|
|
22020
|
22020
|
|
|
22021
|
22021
|
|
|
|
22022
|
+ $templateCache.put('views/directives/edit-lifecycle-hook.html',
|
|
|
22023
|
+ "<ng-form name=\"editForm\">\n" +
|
|
|
22024
|
+ "<div ng-switch=\"type\">\n" +
|
|
|
22025
|
+ "<div class=\"help-block\" ng-switch-when=\"pre\">Pre hooks execute before the deployment begins.</div>\n" +
|
|
|
22026
|
+ "<div class=\"help-block\" ng-switch-when=\"mid\">Mid hooks execute after the previous deployment is scaled down to zero and before the first pod of the new deployment is created.</div>\n" +
|
|
|
22027
|
+ "<div class=\"help-block\" ng-switch-when=\"post\">Post hooks execute after the deployment strategy completes.</div>\n" +
|
|
|
22028
|
+ "</div>\n" +
|
|
|
22029
|
+ "<div class=\"gutter-top\" ng-if=\"hookParams\">\n" +
|
|
|
22030
|
+ "<fieldset ng-disabled=\"view.isDisabled\">\n" +
|
|
|
22031
|
+ "<div class=\"form-group\">\n" +
|
|
|
22032
|
+ "<label for=\"actionType\" class=\"required\">Lifecycle Action</label><br/>\n" +
|
|
|
22033
|
+ "<div class=\"radio\">\n" +
|
|
|
22034
|
+ "<label class=\"radio-inline\">\n" +
|
|
|
22035
|
+ "<input type=\"radio\" name=\"{{type}}-action-newpod\" ng-model=\"action.type\" value=\"execNewPod\" aria-describedby=\"action-help\">\n" +
|
|
|
22036
|
+ "Run a specific command in a new pod\n" +
|
|
|
22037
|
+ "</label>\n" +
|
|
|
22038
|
+ "<label class=\"radio-inline\">\n" +
|
|
|
22039
|
+ "<input type=\"radio\" name=\"{{type}}-action-images\" ng-model=\"action.type\" value=\"tagImages\" aria-describedby=\"action-help\">\n" +
|
|
|
22040
|
+ "Tag image if the deployment succeeds\n" +
|
|
|
22041
|
+ "</label>\n" +
|
|
|
22042
|
+ "</div>\n" +
|
|
|
22043
|
+ "<div id=\"action-help\" class=\"help-block\">\n" +
|
|
|
22044
|
+ "<span ng-if=\"action.type === 'execNewPod'\">Runs a command in a new pod using the container from the deployment template. You can add additional environment variables and volumes.</span>\n" +
|
|
|
22045
|
+ "<span ng-if=\"action.type === 'tagImages'\">Tags the current image as an image stream tag if the deployment succeeds.</span>\n" +
|
|
|
22046
|
+ "<a href=\"{{'new_pod_exec' | helpLink}}\" aria-hidden=\"true\" target=\"_blank\"><span class=\"learn-more-inline\">Learn More <i class=\"fa fa-external-link\"></i></span></a>\n" +
|
|
|
22047
|
+ "</div>\n" +
|
|
|
22048
|
+ "</div>\n" +
|
|
|
22049
|
+ "<div ng-if=\"action.type === 'execNewPod'\">\n" +
|
|
|
22050
|
+ "<div class=\"form-group\">\n" +
|
|
|
22051
|
+ "<label class=\"required\">Container Name</label>\n" +
|
|
|
22052
|
+ "<ui-select ng-model=\"hookParams.execNewPod.containerName\" required>\n" +
|
|
|
22053
|
+ "<ui-select-match>{{$select.selected}}</ui-select-match>\n" +
|
|
|
22054
|
+ "<ui-select-choices repeat=\"container in (availableContainers | filter : $select.search)\" ng-disabled=\"view.isDisabled\">\n" +
|
|
|
22055
|
+ "<div ng-bind-html=\"container | highlight : $select.search\"></div>\n" +
|
|
|
22056
|
+ "</ui-select-choices>\n" +
|
|
|
22057
|
+ "</ui-select>\n" +
|
|
|
22058
|
+ "</div>\n" +
|
|
|
22059
|
+ "<div class=\"form-group\">\n" +
|
|
|
22060
|
+ "<label class=\"required\">Command</label>\n" +
|
|
|
22061
|
+ "<edit-command args=\"hookParams.execNewPod.command\" is-required=\"true\"></edit-command>\n" +
|
|
|
22062
|
+ "</div>\n" +
|
|
|
22063
|
+ "<div class=\"form-group\">\n" +
|
|
|
22064
|
+ "<label>Environment Variables</label>\n" +
|
|
|
22065
|
+ "<key-value-editor entries=\"hookParams.execNewPod.env\" key-validator=\"[a-zA-Z_][a-zA-Z0-9_]*\" key-validator-error-tooltip=\"A valid environment variable name is an alphanumeric (a-z and 0-9) string beginning with a letter that may contain underscores.\" add-row-link=\"Add environment variable\"></key-value-editor>\n" +
|
|
|
22066
|
+ "<div class=\"help-block\">\n" +
|
|
|
22067
|
+ "Environment variables to supply to the hook pod's container.\n" +
|
|
|
22068
|
+ "</div>\n" +
|
|
|
22069
|
+ "</div>\n" +
|
|
|
22070
|
+ "<div class=\"form-group\">\n" +
|
|
|
22071
|
+ "<label>Volumes</label>\n" +
|
|
|
22072
|
+ "<ui-select multiple=\"multiple\" placeholder=\"Select volume\" ng-model=\"hookParams.execNewPod.volumes\" ng-disabled=\"view.isDisabled\">\n" +
|
|
|
22073
|
+ "<ui-select-match>{{$item}}</ui-select-match>\n" +
|
|
|
22074
|
+ "<ui-select-choices repeat=\"volume in availableVolumes | filter : $select.search\">\n" +
|
|
|
22075
|
+ "<div ng-bind-html=\"volume | highlight : $select.search\"></div>\n" +
|
|
|
22076
|
+ "</ui-select-choices>\n" +
|
|
|
22077
|
+ "</ui-select>\n" +
|
|
|
22078
|
+ "<div class=\"help-block\">\n" +
|
|
|
22079
|
+ "List of named volumes to copy to the hook pod.\n" +
|
|
|
22080
|
+ "</div>\n" +
|
|
|
22081
|
+ "</div>\n" +
|
|
|
22082
|
+ "</div>\n" +
|
|
|
22083
|
+ "<div ng-if=\"action.type === 'tagImages'\">\n" +
|
|
|
22084
|
+ "<div ng-repeat=\"tagImage in hookParams.tagImages\">\n" +
|
|
|
22085
|
+ "<div ng-if=\"hookParams.tagImages.length === 1\">\n" +
|
|
|
22086
|
+ "<div class=\"form-group\">\n" +
|
|
|
22087
|
+ "<label class=\"required\">Container Name</label>\n" +
|
|
|
22088
|
+ "<ui-select ng-model=\"tagImage.containerName\" ng-disabled=\"view.isDisabled\" required>\n" +
|
|
|
22089
|
+ "<ui-select-match>{{$select.selected}}</ui-select-match>\n" +
|
|
|
22090
|
+ "<ui-select-choices repeat=\"container in (availableContainers | filter : $select.search)\">\n" +
|
|
|
22091
|
+ "<div ng-bind-html=\"container | highlight : $select.search\"></div>\n" +
|
|
|
22092
|
+ "</ui-select-choices>\n" +
|
|
|
22093
|
+ "</ui-select>\n" +
|
|
|
22094
|
+ "<div class=\"help-block\">\n" +
|
|
|
22095
|
+ "Use the image for this container as the source of the tag.\n" +
|
|
|
22096
|
+ "</div>\n" +
|
|
|
22097
|
+ "</div>\n" +
|
|
|
22098
|
+ "<div class=\"form-group\">\n" +
|
|
|
22099
|
+ "<label class=\"required\">Tag As</label>\n" +
|
|
|
22100
|
+ "<istag-select model=\"istagHook\" allow-custom-tag=\"true\" select-disabled=\"view.isDisabled\"></istag-select>\n" +
|
|
|
22101
|
+ "</div>\n" +
|
|
|
22102
|
+ "</div>\n" +
|
|
|
22103
|
+ "<div class=\"read-only-tag-image\" ng-if=\"hookParams.tagImages.length > 1\">\n" +
|
|
|
22104
|
+ "<p class=\"read-only-info\" ng-if=\"$first\">\n" +
|
|
|
22105
|
+ "<span class=\"pficon pficon-info\" aria-hidden=\"true\"></span>\n" +
|
|
|
22106
|
+ "More than one image tag is defined. To change image tags, use the YAML editor.\n" +
|
|
|
22107
|
+ "</p>\n" +
|
|
|
22108
|
+ "{{tagImage.containerName}} → {{tagImage.to.namespace || namespace}}/{{tagImage.to.name}}\n" +
|
|
|
22109
|
+ "</div>\n" +
|
|
|
22110
|
+ "</div>\n" +
|
|
|
22111
|
+ "</div>\n" +
|
|
|
22112
|
+ "<div class=\"form-group failure-policy\">\n" +
|
|
|
22113
|
+ "<label class=\"required picker-label\">Failure Policy</label>\n" +
|
|
|
22114
|
+ "<ui-select ng-model=\"hookParams.failurePolicy\" search-enabled=\"false\" ng-disabled=\"view.isDisabled\">\n" +
|
|
|
22115
|
+ "<ui-select-match>{{$select.selected}}</ui-select-match>\n" +
|
|
|
22116
|
+ "<ui-select-choices repeat=\"failurePolicyTypes in lifecycleHookFailurePolicyTypes\">\n" +
|
|
|
22117
|
+ "{{failurePolicyTypes}}\n" +
|
|
|
22118
|
+ "</ui-select-choices>\n" +
|
|
|
22119
|
+ "</ui-select>\n" +
|
|
|
22120
|
+ "<div ng-switch=\"hookParams.failurePolicy\">\n" +
|
|
|
22121
|
+ "<div class=\"help-block\" ng-switch-when=\"Retry\">Retry the hook until it succeeds.</div>\n" +
|
|
|
22122
|
+ "<div class=\"help-block\" ng-switch-when=\"Abort\">Fail the deployment if the hook fails.</div>\n" +
|
|
|
22123
|
+ "<div class=\"help-block\" ng-switch-when=\"Ignore\">Ignore hook failures and continue the deployment.</div>\n" +
|
|
|
22124
|
+ "</div>\n" +
|
|
|
22125
|
+ "</div>\n" +
|
|
|
22126
|
+ "</fieldset>\n" +
|
|
|
22127
|
+ "</div>\n" +
|
|
|
22128
|
+ "<span>\n" +
|
|
|
22129
|
+ "<a href=\"\" role=\"button\" ng-if=\"!hookParams\" ng-click=\"addHook()\">Add {{type}} lifecycle hook</a>\n" +
|
|
|
22130
|
+ "<a href=\"\" role=\"button\" ng-if=\"hookParams\" ng-click=\"removeHook()\">Remove {{type}} lifecycle hook</a>\n" +
|
|
|
22131
|
+ "</span>\n" +
|
|
|
22132
|
+ "</ng-form>"
|
|
|
22133
|
+ );
|
|
|
22134
|
+
|
|
|
22135
|
+
|
|
22022
|
22136
|
$templateCache.put('views/directives/edit-webhook-triggers.html',
|
|
22023
|
22137
|
"<h5>{{type}} webhooks\n" +
|
|
22024
|
22138
|
"<span class=\"help action-inline\">\n" +
|
|
...
|
...
|
@@ -22512,116 +22675,62 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
|
|
22512
|
22512
|
|
|
22513
|
22513
|
|
|
22514
|
22514
|
$templateCache.put('views/directives/lifecycle-hook.html',
|
|
22515
|
|
- "<ng-form name=\"editForm\">\n" +
|
|
22516
|
|
- "<div ng-switch=\"type\">\n" +
|
|
22517
|
|
- "<div class=\"help-block\" ng-switch-when=\"pre\">Pre hooks execute before the deployment begins.</div>\n" +
|
|
22518
|
|
- "<div class=\"help-block\" ng-switch-when=\"mid\">Mid hooks execute after the previous deployment is scaled down to zero and before the first pod of the new deployment is created.</div>\n" +
|
|
22519
|
|
- "<div class=\"help-block\" ng-switch-when=\"post\">Post hooks execute after the deployment strategy completes.</div>\n" +
|
|
22520
|
|
- "</div>\n" +
|
|
22521
|
|
- "<div class=\"gutter-top\" ng-if=\"hookParams\">\n" +
|
|
22522
|
|
- "<fieldset ng-disabled=\"view.isDisabled\">\n" +
|
|
22523
|
|
- "<div class=\"form-group\">\n" +
|
|
22524
|
|
- "<label for=\"actionType\" class=\"required\">Lifecycle Action</label><br/>\n" +
|
|
22525
|
|
- "<div class=\"radio\">\n" +
|
|
22526
|
|
- "<label class=\"radio-inline\">\n" +
|
|
22527
|
|
- "<input type=\"radio\" name=\"{{type}}-action-newpod\" ng-model=\"action.type\" value=\"execNewPod\" aria-describedby=\"action-help\">\n" +
|
|
22528
|
|
- "Run a specific command in a new pod\n" +
|
|
22529
|
|
- "</label>\n" +
|
|
22530
|
|
- "<label class=\"radio-inline\">\n" +
|
|
22531
|
|
- "<input type=\"radio\" name=\"{{type}}-action-images\" ng-model=\"action.type\" value=\"tagImages\" aria-describedby=\"action-help\">\n" +
|
|
22532
|
|
- "Tag image if the deployment succeeds\n" +
|
|
22533
|
|
- "</label>\n" +
|
|
22534
|
|
- "</div>\n" +
|
|
22535
|
|
- "<div id=\"action-help\" class=\"help-block\">\n" +
|
|
22536
|
|
- "<span ng-if=\"action.type === 'execNewPod'\">Runs a command in a new pod using the container from the deployment template. You can add additional environment variables and volumes.</span>\n" +
|
|
22537
|
|
- "<span ng-if=\"action.type === 'tagImages'\">Tags the current image as an image stream tag if the deployment succeeds.</span>\n" +
|
|
22538
|
|
- "<a href=\"{{'new_pod_exec' | helpLink}}\" aria-hidden=\"true\" target=\"_blank\"><span class=\"learn-more-inline\">Learn More <i class=\"fa fa-external-link\" aria-hidden=\"true\"></i></span></a>\n" +
|
|
22539
|
|
- "</div>\n" +
|
|
22540
|
|
- "</div>\n" +
|
|
22541
|
|
- "<div ng-if=\"action.type === 'execNewPod'\">\n" +
|
|
22542
|
|
- "<div class=\"form-group\">\n" +
|
|
22543
|
|
- "<label class=\"required\">Container Name</label>\n" +
|
|
22544
|
|
- "<ui-select ng-model=\"hookParams.execNewPod.containerName\" required>\n" +
|
|
22545
|
|
- "<ui-select-match>{{$select.selected}}</ui-select-match>\n" +
|
|
22546
|
|
- "<ui-select-choices repeat=\"container in (availableContainers | filter : $select.search)\" ng-disabled=\"view.isDisabled\">\n" +
|
|
22547
|
|
- "<div ng-bind-html=\"container | highlight : $select.search\"></div>\n" +
|
|
22548
|
|
- "</ui-select-choices>\n" +
|
|
22549
|
|
- "</ui-select>\n" +
|
|
22550
|
|
- "</div>\n" +
|
|
22551
|
|
- "<div class=\"form-group\">\n" +
|
|
22552
|
|
- "<label class=\"required\">Command</label>\n" +
|
|
22553
|
|
- "<edit-command args=\"hookParams.execNewPod.command\" is-required=\"true\"></edit-command>\n" +
|
|
22554
|
|
- "</div>\n" +
|
|
22555
|
|
- "<div class=\"form-group\">\n" +
|
|
22556
|
|
- "<label>Environment Variables</label>\n" +
|
|
22557
|
|
- "<key-value-editor entries=\"hookParams.execNewPod.env\" key-validator=\"[a-zA-Z_][a-zA-Z0-9_]*\" key-validator-error-tooltip=\"A valid environment variable name is an alphanumeric (a-z and 0-9) string beginning with a letter that may contain underscores.\" add-row-link=\"Add Environment Variable\"></key-value-editor>\n" +
|
|
22558
|
|
- "<div class=\"help-block\">\n" +
|
|
22559
|
|
- "Environment variables to supply to the hook pod's container.\n" +
|
|
22560
|
|
- "</div>\n" +
|
|
22561
|
|
- "</div>\n" +
|
|
22562
|
|
- "<div class=\"form-group\">\n" +
|
|
22563
|
|
- "<label>Volumes</label>\n" +
|
|
22564
|
|
- "<ui-select multiple=\"multiple\" placeholder=\"Select volume\" ng-model=\"hookParams.execNewPod.volumes\" ng-disabled=\"view.isDisabled\">\n" +
|
|
22565
|
|
- "<ui-select-match>{{$item}}</ui-select-match>\n" +
|
|
22566
|
|
- "<ui-select-choices repeat=\"volume in availableVolumes | filter : $select.search\">\n" +
|
|
22567
|
|
- "<div ng-bind-html=\"volume | highlight : $select.search\"></div>\n" +
|
|
22568
|
|
- "</ui-select-choices>\n" +
|
|
22569
|
|
- "</ui-select>\n" +
|
|
22570
|
|
- "<div class=\"help-block\">\n" +
|
|
22571
|
|
- "List of named volumes to copy to the hook pod.\n" +
|
|
22572
|
|
- "</div>\n" +
|
|
22573
|
|
- "</div>\n" +
|
|
22574
|
|
- "</div>\n" +
|
|
22575
|
|
- "<div ng-if=\"action.type === 'tagImages'\">\n" +
|
|
22576
|
|
- "<div ng-repeat=\"tagImage in hookParams.tagImages\">\n" +
|
|
22577
|
|
- "<div ng-if=\"hookParams.tagImages.length === 1\">\n" +
|
|
22578
|
|
- "<div class=\"form-group\">\n" +
|
|
22579
|
|
- "<label class=\"required\">Container Name</label>\n" +
|
|
22580
|
|
- "<ui-select ng-model=\"tagImage.containerName\" ng-disabled=\"view.isDisabled\" required>\n" +
|
|
22581
|
|
- "<ui-select-match>{{$select.selected}}</ui-select-match>\n" +
|
|
22582
|
|
- "<ui-select-choices repeat=\"container in (availableContainers | filter : $select.search)\">\n" +
|
|
22583
|
|
- "<div ng-bind-html=\"container | highlight : $select.search\"></div>\n" +
|
|
22584
|
|
- "</ui-select-choices>\n" +
|
|
22585
|
|
- "</ui-select>\n" +
|
|
22586
|
|
- "<div class=\"help-block\">\n" +
|
|
22587
|
|
- "Use the image for this container as the source of the tag.\n" +
|
|
22588
|
|
- "</div>\n" +
|
|
22589
|
|
- "</div>\n" +
|
|
22590
|
|
- "<div class=\"form-group\">\n" +
|
|
22591
|
|
- "<label class=\"required\">Tag As</label>\n" +
|
|
22592
|
|
- "<istag-select model=\"istagHook\" allow-custom-tag=\"true\" select-disabled=\"view.isDisabled\"></istag-select>\n" +
|
|
22593
|
|
- "</div>\n" +
|
|
22594
|
|
- "</div>\n" +
|
|
22595
|
|
- "<div class=\"read-only-tag-image\" ng-if=\"hookParams.tagImages.length > 1\">\n" +
|
|
22596
|
|
- "<p class=\"read-only-info\" ng-if=\"$first\">\n" +
|
|
22597
|
|
- "<span class=\"pficon pficon-info\" aria-hidden=\"true\"></span>\n" +
|
|
22598
|
|
- "More than one image tag is defined. To change image tags, use the YAML editor.\n" +
|
|
22599
|
|
- "</p>\n" +
|
|
22600
|
|
- "{{tagImage.containerName}} → {{tagImage.to.namespace || namespace}}/{{tagImage.to.name}}\n" +
|
|
22601
|
|
- "</div>\n" +
|
|
|
22515
|
+ "<h4>\n" +
|
|
|
22516
|
+ "{{type | upperFirst}} Hook\n" +
|
|
|
22517
|
+ "<span ng-switch=\"type\">\n" +
|
|
|
22518
|
+ "<small ng-switch-when=\"pre\">– runs before the deployment begins</small>\n" +
|
|
|
22519
|
+ "<small ng-switch-when=\"mid\">– runs after the previous deployment is scaled down to zero and before the first pod of the new deployment is created</small>\n" +
|
|
|
22520
|
+ "<small ng-switch-when=\"post\">– runs after the deployment strategy completes</small>\n" +
|
|
|
22521
|
+ "</span>\n" +
|
|
|
22522
|
+ "</h4>\n" +
|
|
|
22523
|
+ "<dl class=\"dl-horizontal left\">\n" +
|
|
|
22524
|
+ "<dt>Action:</dt>\n" +
|
|
|
22525
|
+ "<dd>{{strategyParams[type].execNewPod ? \"Run a command\" : \"Tag the image\"}}</dd>\n" +
|
|
|
22526
|
+ "<dt>Failure Policy:</dt>\n" +
|
|
|
22527
|
+ "<dd>{{strategyParams[type].failurePolicy}}\n" +
|
|
|
22528
|
+ "<span class=\"help action-inline\">\n" +
|
|
|
22529
|
+ "<a href ng-switch=\"strategyParams[type].failurePolicy\">\n" +
|
|
|
22530
|
+ "<i ng-switch-when=\"Ignore\" class=\"pficon pficon-help\" data-toggle=\"tooltip\" aria-hidden=\"true\" data-original-title=\"Continue with deployment on failure\"></i>\n" +
|
|
|
22531
|
+ "<i ng-switch-when=\"Abort\" class=\"pficon pficon-help\" data-toggle=\"tooltip\" aria-hidden=\"true\" data-original-title=\"Abort deployment on failure\"></i>\n" +
|
|
|
22532
|
+ "<i ng-switch-when=\"Retry\" class=\"pficon pficon-help\" data-toggle=\"tooltip\" aria-hidden=\"true\" data-original-title=\"Retry the hook until it succeeds\"></i>\n" +
|
|
|
22533
|
+ "</a>\n" +
|
|
|
22534
|
+ "</span>\n" +
|
|
|
22535
|
+ "</dd>\n" +
|
|
|
22536
|
+ "<div ng-if=\"strategyParams[type].execNewPod\">\n" +
|
|
|
22537
|
+ "<h5 class=\"container-name\">Container {{strategyParams[type].execNewPod.containerName}}</h5>\n" +
|
|
|
22538
|
+ "<dl class=\"dl-horizontal left\">\n" +
|
|
|
22539
|
+ "<dt>Command:</dt>\n" +
|
|
|
22540
|
+ "<dd>\n" +
|
|
|
22541
|
+ "<code class=\"command\">\n" +
|
|
|
22542
|
+ "<span ng-repeat=\"arg in strategyParams[type].execNewPod.command\">\n" +
|
|
|
22543
|
+ "<truncate-long-text content=\"arg\" limit=\"80\" newline-limit=\"1\" expandable=\"false\" use-word-boundary=\"false\"></truncate-long-text>\n" +
|
|
|
22544
|
+ "</span>\n" +
|
|
|
22545
|
+ "</code>\n" +
|
|
|
22546
|
+ "</dd>\n" +
|
|
|
22547
|
+ "<dt ng-if-start=\"strategyParams[type].execNewPod.env\">Environment Variables:</dt>\n" +
|
|
|
22548
|
+ "<dd ng-if-end>\n" +
|
|
|
22549
|
+ "<div ng-repeat=\"env in strategyParams[type].execNewPod.env\">\n" +
|
|
|
22550
|
+ "<div class=\"truncate\" ng-attr-title=\"{{env.value}}\">{{env.name}}={{env.value}}</div>\n" +
|
|
22602
|
22551
|
"</div>\n" +
|
|
|
22552
|
+ "</dd>\n" +
|
|
|
22553
|
+ "<dt ng-if-start=\"strategyParams[type].execNewPod.volumes\">Volumes:</dt>\n" +
|
|
|
22554
|
+ "<dd ng-if-end>\n" +
|
|
|
22555
|
+ "<div ng-repeat=\"volume in strategyParams[type].execNewPod.volumes\">\n" +
|
|
|
22556
|
+ "{{volume}}\n" +
|
|
22603
|
22557
|
"</div>\n" +
|
|
22604
|
|
- "<div class=\"form-group failure-policy\">\n" +
|
|
22605
|
|
- "<label class=\"required picker-label\">Failure Policy</label>\n" +
|
|
22606
|
|
- "<ui-select ng-model=\"hookParams.failurePolicy\" search-enabled=\"false\" ng-disabled=\"view.isDisabled\">\n" +
|
|
22607
|
|
- "<ui-select-match>{{$select.selected}}</ui-select-match>\n" +
|
|
22608
|
|
- "<ui-select-choices repeat=\"failurePolicyTypes in lifecycleHookFailurePolicyTypes\">\n" +
|
|
22609
|
|
- "{{failurePolicyTypes}}\n" +
|
|
22610
|
|
- "</ui-select-choices>\n" +
|
|
22611
|
|
- "</ui-select>\n" +
|
|
22612
|
|
- "<div ng-switch=\"hookParams.failurePolicy\">\n" +
|
|
22613
|
|
- "<div class=\"help-block\" ng-switch-when=\"Retry\">Retry the hook until it succeeds.</div>\n" +
|
|
22614
|
|
- "<div class=\"help-block\" ng-switch-when=\"Abort\">Fail the deployment if the hook fails.</div>\n" +
|
|
22615
|
|
- "<div class=\"help-block\" ng-switch-when=\"Ignore\">Ignore hook failures and continue the deployment.</div>\n" +
|
|
|
22558
|
+ "</dd>\n" +
|
|
|
22559
|
+ "</dl>\n" +
|
|
22616
|
22560
|
"</div>\n" +
|
|
|
22561
|
+ "<div ng-if=\"strategyParams[type].tagImages\">\n" +
|
|
|
22562
|
+ "<div ng-repeat=\"tagImage in strategyParams[type].tagImages\">\n" +
|
|
|
22563
|
+ "<h5 class=\"container-name\">Container {{tagImage.containerName}}</h5>\n" +
|
|
|
22564
|
+ "<dl class=\"dl-horizontal left\">\n" +
|
|
|
22565
|
+ "<div>Tag image as <a ng-if=\"!tagImage.to.namespace || tagImage.to.namespace === deploymentConfig.metadata.namespace\" ng-href=\"{{tagImage.to.name | navigateResourceURL : 'ImageStreamTag' : deploymentConfig.metadata.namespace}}\">{{tagImage.to | imageObjectRef : deploymentConfig.metadata.namespace}}</a>\n" +
|
|
|
22566
|
+ "<span ng-if=\"tagImage.to.namespace && tagImage.to.namespace !== deploymentConfig.metadata.namespace\">{{tagImage.to | imageObjectRef : deploymentConfig.metadata.namespace}}</span></div>\n" +
|
|
|
22567
|
+ "</dl>\n" +
|
|
22617
|
22568
|
"</div>\n" +
|
|
22618
|
|
- "</fieldset>\n" +
|
|
22619
|
22569
|
"</div>\n" +
|
|
22620
|
|
- "<span>\n" +
|
|
22621
|
|
- "<a href=\"\" role=\"button\" ng-if=\"!hookParams\" ng-click=\"addHook()\">Add {{type}} lifecycle hook</a>\n" +
|
|
22622
|
|
- "<a href=\"\" role=\"button\" ng-if=\"hookParams\" ng-click=\"removeHook()\">Remove {{type}} lifecycle hook</a>\n" +
|
|
22623
|
|
- "</span>\n" +
|
|
22624
|
|
- "</ng-form>"
|
|
|
22570
|
+ "</dl>"
|
|
22625
|
22571
|
);
|
|
22626
|
22572
|
|
|
22627
|
22573
|
|
|
...
|
...
|
@@ -24439,18 +24548,18 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', []
|
|
24439
|
24439
|
"<div class=\"lifecycle-hooks\">\n" +
|
|
24440
|
24440
|
"<div class=\"lifecycle-hook\" id=\"pre-lifecycle-hook\">\n" +
|
|
24441
|
24441
|
"<h3>Pre Lifecycle Hook</h3>\n" +
|
|
24442
|
|
- "<lifecycle-hook model=\"strategyData[strategyParamsPropertyName].pre\" type=\"pre\" available-volumes=\"volumeNames\" available-containers=\"containerNames\" namespace=\"projectName\">\n" +
|
|
24443
|
|
- "</lifecycle-hook>\n" +
|
|
|
24442
|
+ "<edit-lifecycle-hook model=\"strategyData[strategyParamsPropertyName].pre\" type=\"pre\" available-volumes=\"volumeNames\" available-containers=\"containerNames\" namespace=\"projectName\">\n" +
|
|
|
24443
|
+ "</edit-lifecycle-hook>\n" +
|
|
24444
|
24444
|
"</div>\n" +
|
|
24445
|
24445
|
"<div ng-if=\"strategyData.type !== 'Rolling'\" class=\"lifecycle-hook\" id=\"mid-lifecycle-hook\">\n" +
|
|
24446
|
24446
|
"<h3>Mid Lifecycle Hook</h3>\n" +
|
|
24447
|
|
- "<lifecycle-hook model=\"strategyData[strategyParamsPropertyName].mid\" type=\"mid\" available-volumes=\"volumeNames\" available-containers=\"containerNames\" namespace=\"projectName\">\n" +
|
|
24448
|
|
- "</lifecycle-hook>\n" +
|
|
|
24447
|
+ "<edit-lifecycle-hook model=\"strategyData[strategyParamsPropertyName].mid\" type=\"mid\" available-volumes=\"volumeNames\" available-containers=\"containerNames\" namespace=\"projectName\">\n" +
|
|
|
24448
|
+ "</edit-lifecycle-hook>\n" +
|
|
24449
|
24449
|
"</div>\n" +
|
|
24450
|
24450
|
"<div class=\"lifecycle-hook\" id=\"post-lifecycle-hook\">\n" +
|
|
24451
|
24451
|
"<h3>Post Lifecycle Hook</h3>\n" +
|
|
24452
|
|
- "<lifecycle-hook model=\"strategyData[strategyParamsPropertyName].post\" type=\"post\" available-volumes=\"volumeNames\" available-containers=\"containerNames\" namespace=\"projectName\">\n" +
|
|
24453
|
|
- "</lifecycle-hook>\n" +
|
|
|
24452
|
+ "<edit-lifecycle-hook model=\"strategyData[strategyParamsPropertyName].post\" type=\"post\" available-volumes=\"volumeNames\" available-containers=\"containerNames\" namespace=\"projectName\">\n" +
|
|
|
24453
|
+ "</edit-lifecycle-hook>\n" +
|
|
24454
|
24454
|
"</div>\n" +
|
|
24455
|
24455
|
"</div>\n" +
|
|
24456
|
24456
|
"</div>\n" +
|
|
...
|
...
|
@@ -112261,7 +112370,7 @@ to{opacity:0}
|
|
112261
|
112261
|
.pod-template-block .pod-template .pod-template-build{word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;min-width:0}
|
|
112262
|
112262
|
.pod-template-block .pod-template .pod-template-key{font-weight:700}
|
|
112263
|
112263
|
.breadcrumb strong,.components .pod-template-block .pod-template .pod-template-key,.overview .pod-template-block .pod-template .pod-template-key{font-weight:600}
|
|
112264
|
|
-code.probe-command{display:inline-block;line-height:1.3;margin-right:2px}
|
|
|
112264
|
+code.command{display:inline-block;line-height:1.3;margin-right:2px}
|
|
112265
|
112265
|
.hash{font-size:12px}
|
|
112266
|
112266
|
.pod-template-column{min-width:0}
|
|
112267
|
112267
|
.pod-template-container{margin:0 0 20px}
|