diff --git a/app/scripts/controllers/deploymentConfig.js b/app/scripts/controllers/deploymentConfig.js index bce98dee11..75b72f7bff 100644 --- a/app/scripts/controllers/deploymentConfig.js +++ b/app/scripts/controllers/deploymentConfig.js @@ -11,6 +11,7 @@ angular.module('openshiftConsole') function ($scope, $filter, $routeParams, + APIService, BreadcrumbsService, DataService, DeploymentsService, @@ -42,9 +43,20 @@ angular.module('openshiftConsole') namespace: $routeParams.project }); $scope.emptyMessage = "Loading..."; + $scope.deploymentConfigsInstantiateVersion = APIService.getPreferredVersion('deploymentconfigs/instantiate'); + $scope.deploymentConfigsVersion = APIService.getPreferredVersion('deploymentconfigs'); + $scope.eventsVersion = APIService.getPreferredVersion('events'); + $scope.horizontalPodAutoscalersVersion = APIService.getPreferredVersion('horizontalpodautoscalers'); + + var buildsVersion = APIService.getPreferredVersion('builds'); + var imageStreamsVersion = APIService.getPreferredVersion('imagestreams'); + var limitRangesVersion = APIService.getPreferredVersion('limitranges'); + var replicationControllersVersion = APIService.getPreferredVersion('replicationcontrollers'); + $scope.healthCheckURL = Navigate.healthCheckURL($routeParams.project, "DeploymentConfig", - $routeParams.deploymentconfig); + $routeParams.deploymentconfig, + $scope.deploymentConfigsVersion.group); var mostRecent = $filter('mostRecent'); var orderByDate = $filter('orderObjectsByDate'); @@ -66,7 +78,7 @@ angular.module('openshiftConsole') }); }; - DataService.get("deploymentconfigs", $routeParams.deploymentconfig, context, { errorNotification: false }).then( + DataService.get($scope.deploymentConfigsVersion, $routeParams.deploymentconfig, context, { errorNotification: false }).then( // success function(deploymentConfig) { $scope.loaded = true; @@ -74,7 +86,7 @@ angular.module('openshiftConsole') $scope.strategyParams = $filter('deploymentStrategyParams')(deploymentConfig); updateHPAWarnings(); // If we found the item successfully, watch for changes on it - watches.push(DataService.watchObject("deploymentconfigs", $routeParams.deploymentconfig, context, function(deploymentConfig, action) { + watches.push(DataService.watchObject($scope.deploymentConfigsVersion, $routeParams.deploymentconfig, context, function(deploymentConfig, action) { if (action === "DELETED") { $scope.alerts["deleted"] = { type: "warning", @@ -98,7 +110,7 @@ angular.module('openshiftConsole') } ); - watches.push(DataService.watch("replicationcontrollers", context, function(deployments, action, deployment) { + watches.push(DataService.watch(replicationControllersVersion, context, function(deployments, action, deployment) { var deploymentConfigName = $routeParams.deploymentconfig; $scope.emptyMessage = "No deployments to show"; if (!action) { @@ -155,12 +167,12 @@ angular.module('openshiftConsole') // List limit ranges in this project to determine if there is a default // CPU request for autoscaling. - DataService.list("limitranges", context).then(function(resp) { + DataService.list(limitRangesVersion, context).then(function(resp) { limitRanges = resp.by("metadata.name"); updateHPAWarnings(); }); - watches.push(DataService.watch("imagestreams", context, function(imageStreamData) { + watches.push(DataService.watch(imageStreamsVersion, context, function(imageStreamData) { var imageStreams = imageStreamData.by("metadata.name"); ImageStreamResolver.buildDockerRefMapForImageStreams(imageStreams, imageStreamImageRefByDockerReference); // If the dep config has been loaded already @@ -170,16 +182,12 @@ angular.module('openshiftConsole') Logger.log("imagestreams (subscribe)", $scope.imageStreams); })); - watches.push(DataService.watch("builds", context, function(builds) { + watches.push(DataService.watch(buildsVersion, context, function(builds) { $scope.builds = builds.by("metadata.name"); Logger.log("builds (subscribe)", $scope.builds); })); - watches.push(DataService.watch({ - group: "autoscaling", - resource: "horizontalpodautoscalers", - version: "v1" - }, context, function(hpa) { + watches.push(DataService.watch($scope.horizontalPodAutoscalersVersion, context, function(hpa) { $scope.autoscalers = HPAService.filterHPA(hpa.by("metadata.name"), 'DeploymentConfig', $routeParams.deploymentconfig); updateHPAWarnings(); diff --git a/app/scripts/filters/canI.js b/app/scripts/filters/canI.js index 6f765551ff..be06e02406 100644 --- a/app/scripts/filters/canI.js +++ b/app/scripts/filters/canI.js @@ -24,8 +24,8 @@ angular _.assign({}, APIService.getPreferredVersion('deployments'), {verbs: ['update', 'delete']}) ], 'deploymentConfigs': [ - {group: 'autoscaling', resource: 'horizontalpodautoscalers', verbs: ['create', 'update']}, - {group: '', resource: 'deploymentconfigs', verbs: ['create', 'update']} + _.assign({}, APIService.getPreferredVersion('horizontalpodautoscalers'), {verbs: ['create', 'update']}), + _.assign({}, APIService.getPreferredVersion('deploymentconfigs'), {verbs: ['create', 'update']}) ], 'horizontalPodAutoscalers': [ {group: 'autoscaling', resource: 'horizontalpodautoscalers', verbs: ['update', 'delete']} diff --git a/app/views/browse/deployment-config.html b/app/views/browse/deployment-config.html index 018099e0fc..734c4bb715 100644 --- a/app/views/browse/deployment-config.html +++ b/app/views/browse/deployment-config.html @@ -8,7 +8,7 @@

@@ -230,19 +230,19 @@

Template

images-by-docker-reference="imagesByDockerReference" builds="builds" detailed="true" - add-health-check-url="{{('deploymentconfigs' | canI : 'update') ? healthCheckURL : ''}}"> + add-health-check-url="{{(deploymentConfigsVersion | canI : 'update') ? healthCheckURL : ''}}">

Volumes

-

+

none

-

+

Add Storage Add Config Files @@ -261,16 +261,16 @@

Autoscaling

Edit Resource Requests and Limits
- Add Autoscaler - Autoscaling is not enabled. There are no autoscalers for this deployment config. + Autoscaling is not enabled. There are no autoscalers for this deployment config.
@@ -347,7 +347,7 @@

Triggers

Environment - + Events diff --git a/dist/scripts/scripts.js b/dist/scripts/scripts.js index 7f3a07f296..646410e3cc 100644 --- a/dist/scripts/scripts.js +++ b/dist/scripts/scripts.js @@ -5718,35 +5718,37 @@ f.removeVolume(e.deployment, t, d); r.unwatchAll(C); }); })); -} ]), angular.module("openshiftConsole").controller("DeploymentConfigController", [ "$scope", "$filter", "$routeParams", "BreadcrumbsService", "DataService", "DeploymentsService", "HPAService", "ImageStreamResolver", "ModalsService", "Navigate", "NotificationsService", "Logger", "ProjectsService", "StorageService", "LabelFilter", "labelNameFilter", function(e, t, n, a, r, o, i, s, c, l, u, d, m, p, f, g) { -var h = {}; -e.projectName = n.project, e.deploymentConfigName = n.deploymentconfig, e.deploymentConfig = null, e.deployments = {}, e.unfilteredDeployments = {}, e.imagesByDockerReference = {}, e.builds = {}, e.labelSuggestions = {}, e.forms = {}, e.alerts = {}, e.breadcrumbs = a.getBreadcrumbs({ +} ]), angular.module("openshiftConsole").controller("DeploymentConfigController", [ "$scope", "$filter", "$routeParams", "APIService", "BreadcrumbsService", "DataService", "DeploymentsService", "HPAService", "ImageStreamResolver", "ModalsService", "Navigate", "NotificationsService", "Logger", "ProjectsService", "StorageService", "LabelFilter", "labelNameFilter", function(e, t, n, a, r, o, i, s, c, l, u, d, m, p, f, g, h) { +var v = {}; +e.projectName = n.project, e.deploymentConfigName = n.deploymentconfig, e.deploymentConfig = null, e.deployments = {}, e.unfilteredDeployments = {}, e.imagesByDockerReference = {}, e.builds = {}, e.labelSuggestions = {}, e.forms = {}, e.alerts = {}, e.breadcrumbs = r.getBreadcrumbs({ name: n.deploymentconfig, kind: "DeploymentConfig", namespace: n.project -}), e.emptyMessage = "Loading...", e.healthCheckURL = l.healthCheckURL(n.project, "DeploymentConfig", n.deploymentconfig); -var v = t("mostRecent"), y = t("orderObjectsByDate"), b = []; -m.get(n.project).then(_.spread(function(a, l) { +}), e.emptyMessage = "Loading...", e.deploymentConfigsInstantiateVersion = a.getPreferredVersion("deploymentconfigs/instantiate"), e.deploymentConfigsVersion = a.getPreferredVersion("deploymentconfigs"), e.eventsVersion = a.getPreferredVersion("events"), e.horizontalPodAutoscalersVersion = a.getPreferredVersion("horizontalpodautoscalers"); +var y = a.getPreferredVersion("builds"), b = a.getPreferredVersion("imagestreams"), C = a.getPreferredVersion("limitranges"), S = a.getPreferredVersion("replicationcontrollers"); +e.healthCheckURL = u.healthCheckURL(n.project, "DeploymentConfig", n.deploymentconfig, e.deploymentConfigsVersion.group); +var w = t("mostRecent"), k = t("orderObjectsByDate"), j = []; +p.get(n.project).then(_.spread(function(a, r) { function u() { -f.getLabelSelector().isEmpty() || !$.isEmptyObject(e.deployments) || $.isEmptyObject(e.unfilteredDeployments) ? delete e.alerts.deployments : e.alerts.deployments = { +g.getLabelSelector().isEmpty() || !$.isEmptyObject(e.deployments) || $.isEmptyObject(e.unfilteredDeployments) ? delete e.alerts.deployments : e.alerts.deployments = { type: "warning", details: "The active filters are hiding all deployments." }; } -e.project = a, e.projectContext = l; -var m = {}, C = function() { -i.getHPAWarnings(e.deploymentConfig, e.autoscalers, m, a).then(function(t) { +e.project = a, e.projectContext = r; +var d = {}, p = function() { +s.getHPAWarnings(e.deploymentConfig, e.autoscalers, d, a).then(function(t) { e.hpaWarnings = t; }); }; -r.get("deploymentconfigs", n.deploymentconfig, l, { +o.get(e.deploymentConfigsVersion, n.deploymentconfig, r, { errorNotification: !1 }).then(function(a) { -e.loaded = !0, e.deploymentConfig = a, e.strategyParams = t("deploymentStrategyParams")(a), C(), b.push(r.watchObject("deploymentconfigs", n.deploymentconfig, l, function(t, n) { +e.loaded = !0, e.deploymentConfig = a, e.strategyParams = t("deploymentStrategyParams")(a), p(), j.push(o.watchObject(e.deploymentConfigsVersion, n.deploymentconfig, r, function(t, n) { "DELETED" === n && (e.alerts.deleted = { type: "warning", message: "This deployment configuration has been deleted." -}), e.deploymentConfig = t, e.updatingPausedState = !1, C(), s.fetchReferencedImageStreamImages([ t.spec.template ], e.imagesByDockerReference, h, l); +}), e.deploymentConfig = t, e.updatingPausedState = !1, p(), c.fetchReferencedImageStreamImages([ t.spec.template ], e.imagesByDockerReference, v, r); })); }, function(n) { e.loaded = !0, e.alerts.load = { @@ -5754,15 +5756,15 @@ type: "error", message: 404 === n.status ? "This deployment configuration can not be found, it may have been deleted." : "The deployment configuration details could not be loaded.", details: 404 === n.status ? "Any remaining deployment history for this deployment will be shown." : t("getErrorDetails")(n) }; -}), b.push(r.watch("replicationcontrollers", l, function(a, r, i) { +}), j.push(o.watch(S, r, function(a, r, o) { var s = n.deploymentconfig; if (e.emptyMessage = "No deployments to show", r) { -if (o.deploymentBelongsToConfig(i, n.deploymentconfig)) { -var c = i.metadata.name; +if (i.deploymentBelongsToConfig(o, n.deploymentconfig)) { +var c = o.metadata.name; switch (r) { case "ADDED": case "MODIFIED": -e.unfilteredDeployments[c] = i, t("deploymentIsInProgress")(i) ? (e.deploymentConfigDeploymentsInProgress[s] = e.deploymentConfigDeploymentsInProgress[s] || {}, e.deploymentConfigDeploymentsInProgress[s][c] = i) : e.deploymentConfigDeploymentsInProgress[s] && delete e.deploymentConfigDeploymentsInProgress[s][c], i.causes = t("deploymentCauses")(i); +e.unfilteredDeployments[c] = o, t("deploymentIsInProgress")(o) ? (e.deploymentConfigDeploymentsInProgress[s] = e.deploymentConfigDeploymentsInProgress[s] || {}, e.deploymentConfigDeploymentsInProgress[s][c] = o) : e.deploymentConfigDeploymentsInProgress[s] && delete e.deploymentConfigDeploymentsInProgress[s][c], o.causes = t("deploymentCauses")(o); break; case "DELETED": @@ -5770,41 +5772,37 @@ delete e.unfilteredDeployments[c], e.deploymentConfigDeploymentsInProgress[s] && } } } else { -var l = o.associateDeploymentsToDeploymentConfig(a.by("metadata.name")); +var l = i.associateDeploymentsToDeploymentConfig(a.by("metadata.name")); e.unfilteredDeployments = l[n.deploymentconfig] || {}, angular.forEach(e.unfilteredDeployments, function(e) { e.causes = t("deploymentCauses")(e); -}), e.deploymentConfigDeploymentsInProgress = o.associateRunningDeploymentToDeploymentConfig(l); +}), e.deploymentConfigDeploymentsInProgress = i.associateRunningDeploymentToDeploymentConfig(l); } -e.deployments = f.getLabelSelector().select(e.unfilteredDeployments), e.orderedDeployments = y(e.deployments, !0), e.deploymentInProgress = !!_.size(e.deploymentConfigDeploymentsInProgress[s]), e.mostRecent = v(e.unfilteredDeployments), u(), f.addLabelSuggestionsFromResources(e.unfilteredDeployments, e.labelSuggestions), f.setLabelSuggestions(e.labelSuggestions); +e.deployments = g.getLabelSelector().select(e.unfilteredDeployments), e.orderedDeployments = k(e.deployments, !0), e.deploymentInProgress = !!_.size(e.deploymentConfigDeploymentsInProgress[s]), e.mostRecent = w(e.unfilteredDeployments), u(), g.addLabelSuggestionsFromResources(e.unfilteredDeployments, e.labelSuggestions), g.setLabelSuggestions(e.labelSuggestions); }, { http: { params: { -labelSelector: g("deploymentConfig") + "=" + e.deploymentConfigName +labelSelector: h("deploymentConfig") + "=" + e.deploymentConfigName } } -})), r.list("limitranges", l).then(function(e) { -m = e.by("metadata.name"), C(); -}), b.push(r.watch("imagestreams", l, function(t) { +})), o.list(C, r).then(function(e) { +d = e.by("metadata.name"), p(); +}), j.push(o.watch(b, r, function(t) { var n = t.by("metadata.name"); -s.buildDockerRefMapForImageStreams(n, h), e.deploymentConfig && s.fetchReferencedImageStreamImages([ e.deploymentConfig.spec.template ], e.imagesByDockerReference, h, l), d.log("imagestreams (subscribe)", e.imageStreams); -})), b.push(r.watch("builds", l, function(t) { -e.builds = t.by("metadata.name"), d.log("builds (subscribe)", e.builds); -})), b.push(r.watch({ -group: "autoscaling", -resource: "horizontalpodautoscalers", -version: "v1" -}, l, function(t) { -e.autoscalers = i.filterHPA(t.by("metadata.name"), "DeploymentConfig", n.deploymentconfig), C(); -})), f.onActiveFiltersChanged(function(t) { +c.buildDockerRefMapForImageStreams(n, v), e.deploymentConfig && c.fetchReferencedImageStreamImages([ e.deploymentConfig.spec.template ], e.imagesByDockerReference, v, r), m.log("imagestreams (subscribe)", e.imageStreams); +})), j.push(o.watch(y, r, function(t) { +e.builds = t.by("metadata.name"), m.log("builds (subscribe)", e.builds); +})), j.push(o.watch(e.horizontalPodAutoscalersVersion, r, function(t) { +e.autoscalers = s.filterHPA(t.by("metadata.name"), "DeploymentConfig", n.deploymentconfig), p(); +})), g.onActiveFiltersChanged(function(t) { e.$apply(function() { -e.deployments = t.select(e.unfilteredDeployments), e.orderedDeployments = y(e.deployments, !0), u(); +e.deployments = t.select(e.unfilteredDeployments), e.orderedDeployments = k(e.deployments, !0), u(); }); }), e.canDeploy = function() { return !!e.deploymentConfig && (!e.deploymentConfig.metadata.deletionTimestamp && (!e.deploymentInProgress && !e.deploymentConfig.spec.paused)); }, e.startLatestDeployment = function() { -e.canDeploy() && o.startLatestDeployment(e.deploymentConfig, l); +e.canDeploy() && i.startLatestDeployment(e.deploymentConfig, r); }, e.scale = function(n) { -o.scale(e.deploymentConfig, n).then(_.noop, function(n) { +i.scale(e.deploymentConfig, n).then(_.noop, function(n) { e.alerts["scale-error"] = { type: "error", message: "An error occurred scaling the deployment config.", @@ -5812,7 +5810,7 @@ details: t("getErrorDetails")(n) }; }); }, e.setPaused = function(n) { -e.updatingPausedState = !0, o.setPaused(e.deploymentConfig, n, l).then(_.noop, function(a) { +e.updatingPausedState = !0, i.setPaused(e.deploymentConfig, n, r).then(_.noop, function(a) { e.updatingPausedState = !1, e.alerts["pause-error"] = { type: "error", message: "An error occurred " + (n ? "pausing" : "resuming") + " the deployment config.", @@ -5820,7 +5818,7 @@ details: t("getErrorDetails")(a) }; }); }; -var S = function() { +var P = function() { if (_.get(e, "deploymentConfig.spec.paused")) return !1; var t = _.get(e, "deploymentConfig.spec.triggers", []); return _.some(t, { @@ -5829,18 +5827,18 @@ type: "ConfigChange" }; e.removeVolume = function(t) { var n; -n = S() ? "This will remove the volume from the deployment config and trigger a new deployment." : "This will remove the volume from the deployment config.", t.persistentVolumeClaim ? n += " It will not delete the persistent volume claim." : t.secret ? n += " It will not delete the secret." : t.configMap && (n += " It will not delete the config map."); -c.confirm({ +n = P() ? "This will remove the volume from the deployment config and trigger a new deployment." : "This will remove the volume from the deployment config.", t.persistentVolumeClaim ? n += " It will not delete the persistent volume claim." : t.secret ? n += " It will not delete the secret." : t.configMap && (n += " It will not delete the config map."); +l.confirm({ message: "Remove volume " + t.name + "?", details: n, okButtonText: "Remove", okButtonClass: "btn-danger", cancelButtonText: "Cancel" }).then(function() { -p.removeVolume(e.deploymentConfig, t, l); +f.removeVolume(e.deploymentConfig, t, r); }); }, e.$on("$destroy", function() { -r.unwatchAll(b); +o.unwatchAll(j); }); })); } ]), angular.module("openshiftConsole").controller("ReplicaSetController", [ "$scope", "$filter", "$routeParams", "AuthorizationService", "BreadcrumbsService", "DataService", "DeploymentsService", "HPAService", "ImageStreamResolver", "Logger", "MetricsService", "ModalsService", "Navigate", "OwnerReferencesService", "PodsService", "ProjectsService", "StorageService", "keyValueEditorUtils", "kind", function(e, t, n, a, r, o, i, s, c, l, u, d, m, p, f, g, h, v, y) { @@ -15330,15 +15328,11 @@ verbs: [ "create", "update" ] }), _.assign({}, e.getPreferredVersion("deployments"), { verbs: [ "update", "delete" ] }) ], -deploymentConfigs: [ { -group: "autoscaling", -resource: "horizontalpodautoscalers", +deploymentConfigs: [ _.assign({}, e.getPreferredVersion("horizontalpodautoscalers"), { verbs: [ "create", "update" ] -}, { -group: "", -resource: "deploymentconfigs", +}), _.assign({}, e.getPreferredVersion("deploymentconfigs"), { verbs: [ "create", "update" ] -} ], +}) ], horizontalPodAutoscalers: [ { group: "autoscaling", resource: "horizontalpodautoscalers", diff --git a/dist/scripts/templates.js b/dist/scripts/templates.js index c0bff83b7a..4e7554f0e8 100644 --- a/dist/scripts/templates.js +++ b/dist/scripts/templates.js @@ -2310,7 +2310,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "

\n" + "
\n" + "\n" + - "\n" + "\n" + @@ -2320,41 +2320,41 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "\n" + "Actions\n" + "
    \n" + - "
  • \n" + + "
  • \n" + "Deploy\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "Edit\n" + "
  • \n" + - "
  • \n" + - "
  • \n" + + "
  • \n" + + "
  • \n" + "Pause Rollouts\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "Resume Rollouts\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "Add Storage\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "\n" + "Add Autoscaler\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "\n" + "Edit Autoscaler\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "Edit Resource Limits\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "Edit Health Checks\n" + "
  • \n" + - "
  • \n" + + "
  • \n" + "Edit YAML\n" + "
  • \n" + - "
  • \n" + - "
  • \n" + + "
  • \n" + + "
  • \n" + "\n" + "\n" + "
  • \n" + @@ -2377,7 +2377,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "\n" + "{{deploymentConfig.metadata.name}} is paused.\n" + "This will stop any new rollouts or triggers from running until resumed.\n" + - "\n" + + "\n" + "Resume Rollouts\n" + "\n" + "
\n" + @@ -2497,15 +2497,15 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "\n" + "\n" + "

Template

\n" + - "\n" + + "\n" + "\n" + "

Volumes

\n" + - "

\n" + + "

\n" + "none\n" + "

\n" + - "\n" + + "\n" + "\n" + - "

\n" + + "

\n" + "Add Storage\n" + "|\n" + "Add Config Files\n" + @@ -2520,13 +2520,13 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "Warning:\n" + "{{warning.message}}\n" + "\n" + - "Edit Resource\n" + + "Edit Resource\n" + "Requests and Limits\n" + "\n" + "\n" + "

\n" + - "Add Autoscaler\n" + - "Autoscaling is not enabled. There are no autoscalers for this deployment config.\n" + + "Add Autoscaler\n" + + "Autoscaling is not enabled. There are no autoscalers for this deployment config.\n" + "
\n" + "\n" + "
\n" + @@ -2595,7 +2595,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "Environment\n" + "\n" + "\n" + - "\n" + + "\n" + "Events\n" + "\n" + "\n" +