From b4eb3b9b964a7f39e117f44bf19149c7fef23329 Mon Sep 17 00:00:00 2001 From: OpenShift Bot Date: Wed, 19 Jul 2017 23:04:02 -0400 Subject: [PATCH] bump(github.com/openshift/origin-web-console): c9b410c06e473500434616cf283e68806edd99cb --- pkg/assets/bindata.go | 778 +++++++++++++++++------------------------- 1 file changed, 319 insertions(+), 459 deletions(-) diff --git a/pkg/assets/bindata.go b/pkg/assets/bindata.go index 28cafbef6bf8..050df8e19b8a 100644 --- a/pkg/assets/bindata.go +++ b/pkg/assets/bindata.go @@ -4984,9 +4984,10 @@ getLogsCommand:c }; } ]), angular.module("openshiftConsole").factory("EnvironmentService", [ "$filter", "keyValueEditorUtils", function(a, b) { var c = function(a) { -return _.get(a, "spec.template.spec.containers", []); +return "Pod" === a.kind ? _.get(a, "spec.containers", []) :_.get(a, "spec.template.spec.containers", []); }; return { +getContainers:c, normalize:function(a) { var b = c(a); _.each(b, function(a) { @@ -5508,7 +5509,7 @@ b.pods = a.select(b.unfilteredPods), e(); c.unwatchAll(h); }); })); -} ]), angular.module("openshiftConsole").controller("PodController", [ "$scope", "$filter", "$routeParams", "$timeout", "$uibModal", "Logger", "DataService", "EnvironmentService", "FullscreenService", "ImageStreamResolver", "MetricsService", "OwnerReferencesService", "PodsService", "ProjectsService", function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { +} ]), angular.module("openshiftConsole").controller("PodController", [ "$scope", "$filter", "$routeParams", "$timeout", "$uibModal", "Logger", "DataService", "FullscreenService", "ImageStreamResolver", "MetricsService", "OwnerReferencesService", "PodsService", "ProjectsService", function(a, b, c, d, e, f, g, h, i, j, k, l, m) { a.projectName = c.project, a.pod = null, a.imageStreams = {}, a.imagesByDockerReference = {}, a.imageStreamImageRefByDockerReference = {}, a.builds = {}, a.alerts = {}, a.terminalDisconnectAlert = {}, a.renderOptions = a.renderOptions || {}, a.renderOptions.hideFilterWidget = !0, a.logOptions = {}, a.terminalTabWasSelected = !1, a.breadcrumbs = [ { title:"Pods", link:"project/" + c.project + "/browse/pods" @@ -5518,11 +5519,11 @@ title:c.pod type:"warning", message:"This terminal has been disconnected. If you reconnect, your terminal history will be lost." }, a.noContainersYet = !0, a.selectedTab = {}; -var o = [], p = null; -k.isAvailable().then(function(b) { +var n = [], o = null; +j.isAvailable().then(function(b) { a.metricsAvailable = b; }); -var q = function() { +var p = function() { if (a.pod) { var b = _.find(a.pod.status.containerStatuses, { name:a.logOptions.container @@ -5539,7 +5540,7 @@ containerStartTime:_.get(c, [ d, "startedAt" ]), containerEndTime:_.get(c, [ d, "finishedAt" ]) }); } -}, r = function() { +}, q = function() { var a = $("").css({ position:"absolute", top:"-100px" @@ -5548,36 +5549,36 @@ width:a.width() / 10, height:a.height() }; return a.remove(), b; -}, s = r(), t = $(window), u = function(b) { -b || (b = 0), s.height && s.width && a.selectedTab.terminal && !(b > 10) && a.$apply(function() { +}, r = q(), s = $(window), t = function(b) { +b || (b = 0), r.height && r.width && a.selectedTab.terminal && !(b > 10) && a.$apply(function() { var c = $(".container-terminal-wrapper").get(0); if (!c) return void d(function() { -u(b + 1); +t(b + 1); }, 50); var e = c.getBoundingClientRect(); if (0 === e.left && 0 === e.top && 0 === e.width && 0 === e.height) return void d(function() { -u(b + 1); +t(b + 1); }, 50); -var f = t.width(), g = t.height(), h = f - e.left - 40, i = g - e.top - 50; -a.terminalCols = Math.max(_.floor(h / s.width), 80), a.terminalRows = Math.max(_.floor(i / s.height), 24); +var f = s.width(), g = s.height(), h = f - e.left - 40, i = g - e.top - 50; +a.terminalCols = Math.max(_.floor(h / r.width), 80), a.terminalRows = Math.max(_.floor(i / r.height), 24); }); }; a.$watch("selectedTab.terminal", function(a) { -a ? (s.height && s.width ? $(window).on("resize.terminalsize", _.debounce(u, 100)) :f.warn("Unable to calculate the bounding box for a character. Terminal will not be able to resize."), d(u, 0)) :$(window).off("resize.terminalsize"); +a ? (r.height && r.width ? $(window).on("resize.terminalsize", _.debounce(t, 100)) :f.warn("Unable to calculate the bounding box for a character. Terminal will not be able to resize."), d(t, 0)) :$(window).off("resize.terminalsize"); }), a.onTerminalSelectChange = function(b) { _.each(a.containerTerminals, function(a) { a.isVisible = !1; }), b.isVisible = !0, b.isUsed = !0, a.selectedTerminalContainer = b; }; -var v = function(a) { +var u = function(a) { var b = _.get(a, "state", {}); return _.head(_.keys(b)); -}, w = function() { +}, v = function() { var b = []; _.each(a.pod.spec.containers, function(c) { var d = _.find(a.pod.status.containerStatuses, { name:c.name -}), e = v(d); +}), e = u(d); b.push({ containerName:c.name, isVisible:!1, @@ -5587,23 +5588,18 @@ containerState:e }); var c = _.head(b); return c.isVisible = !0, c.isUsed = !0, a.selectedTerminalContainer = c, b; -}, x = function(b) { +}, w = function(b) { a.noContainersYet && (a.noContainersYet = 0 === a.containersRunning(b.status.containerStatuses)); -}, y = function(b) { +}, x = function(b) { _.each(b, function(b) { var c = _.find(a.pod.status.containerStatuses, { name:b.containerName -}), d = v(c); +}), d = u(c); b.containerState = d; }); -}, z = function() { -var b = angular.copy(_.get(a, "pod.spec.containers", [])); -_.each(b, function(a) { -a.env = a.env || []; -}), a.containersEnv = b; -}, A = b("annotation"), B = function(b, c) { -if (a.loaded = !0, a.pod = b, a.dcName = A(b, "deploymentConfig"), a.rcName = A(b, "deployment"), a.deploymentVersion = A(b, "deploymentVersion"), a.logCanRun = !_.includes([ "New", "Pending", "Unknown" ], b.status.phase), q(), z(), delete a.controllerRef, !a.dcName) { -var d = l.getControllerReferences(b); +}, y = b("annotation"), z = function(b, c) { +if (a.loaded = !0, a.pod = b, a.dcName = y(b, "deploymentConfig"), a.rcName = y(b, "deployment"), a.deploymentVersion = y(b, "deploymentVersion"), a.logCanRun = !_.includes([ "New", "Pending", "Unknown" ], b.status.phase), p(), delete a.controllerRef, !a.dcName) { +var d = k.getControllerReferences(b); a.controllerRef = _.find(d, function(a) { return "ReplicationController" === a.kind || "ReplicaSet" === a.kind || "Build" === a.kind; }); @@ -5613,14 +5609,14 @@ type:"warning", message:"This pod has been deleted." }); }; -n.get(c.project).then(_.spread(function(d, h) { -p = h, a.project = d, a.projectContext = h, g.get("pods", c.pod, h, { +m.get(c.project).then(_.spread(function(d, j) { +o = j, a.project = d, a.projectContext = j, g.get("pods", c.pod, j, { errorNotification:!1 }).then(function(b) { -B(b); +z(b); var d = {}; -d[b.metadata.name] = b, a.logOptions.container = c.container || b.spec.containers[0].name, a.containerTerminals = w(), x(b), j.fetchReferencedImageStreamImages(d, a.imagesByDockerReference, a.imageStreamImageRefByDockerReference, p), o.push(g.watchObject("pods", c.pod, h, function(b, c) { -B(b, c), y(a.containerTerminals), x(b); +d[b.metadata.name] = b, a.logOptions.container = c.container || b.spec.containers[0].name, a.containerTerminals = v(), w(b), i.fetchReferencedImageStreamImages(d, a.imagesByDockerReference, a.imageStreamImageRefByDockerReference, o), n.push(g.watchObject("pods", c.pod, j, function(b, c) { +z(b, c), x(a.containerTerminals), w(b); })); }, function(c) { a.loaded = !0, a.alerts.load = { @@ -5628,14 +5624,14 @@ type:"error", message:"The pod details could not be loaded.", details:b("getErrorDetails")(c) }; -}), a.$watch("logOptions.container", q), o.push(g.watch("imagestreams", h, function(b) { -a.imageStreams = b.by("metadata.name"), j.buildDockerRefMapForImageStreams(a.imageStreams, a.imageStreamImageRefByDockerReference), j.fetchReferencedImageStreamImages(a.pods, a.imagesByDockerReference, a.imageStreamImageRefByDockerReference, h), f.log("imagestreams (subscribe)", a.imageStreams); -})), o.push(g.watch("builds", h, function(b) { +}), a.$watch("logOptions.container", p), n.push(g.watch("imagestreams", j, function(b) { +a.imageStreams = b.by("metadata.name"), i.buildDockerRefMapForImageStreams(a.imageStreams, a.imageStreamImageRefByDockerReference), i.fetchReferencedImageStreamImages(a.pods, a.imagesByDockerReference, a.imageStreamImageRefByDockerReference, j), f.log("imagestreams (subscribe)", a.imageStreams); +})), n.push(g.watch("builds", j, function(b) { a.builds = b.by("metadata.name"), f.log("builds (subscribe)", a.builds); })); -var k, l = function() { +var k, m = function() { var c = a.debugPod; -k && (g.unwatch(k), k = null), $(window).off("beforeunload.debugPod"), c && (g["delete"]("pods", c.metadata.name, h, { +k && (g.unwatch(k), k = null), $(window).off("beforeunload.debugPod"), c && (g["delete"]("pods", c.metadata.name, j, { gracePeriodSeconds:0 }).then(_.noop, function(d) { a.alerts["debug-container-error"] = { @@ -5644,25 +5640,25 @@ message:"Could not delete pod " + c.metadata.name, details:b("getErrorDetails")(d) }; }), a.debugPod = null); -}, n = function() { +}, q = function() { $(".terminal:visible").focus(); }; -a.hasFullscreen = i.hasFullscreen(!0), a.fullscreenTerminal = function() { -i.requestFullscreen("#container-terminal-wrapper"), setTimeout(n); +a.hasFullscreen = h.hasFullscreen(!0), a.fullscreenTerminal = function() { +h.requestFullscreen("#container-terminal-wrapper"), setTimeout(q); }, a.exitFullscreen = function() { -i.exitFullscreen(); +h.exitFullscreen(); }, a.debugTerminal = function(c) { -var d = m.generateDebugPod(a.pod, c); -return d ? void g.create("pods", null, d, h).then(function(b) { +var d = l.generateDebugPod(a.pod, c); +return d ? void g.create("pods", null, d, j).then(function(b) { var f = _.find(a.pod.spec.containers, { name:c }); a.debugPod = b, $(window).on("beforeunload.debugPod", function() { return "Are you sure you want to leave with the debug terminal open? The debug pod will not be deleted unless you close the dialog."; -}), k = g.watchObject("pods", d.metadata.name, h, function(b) { +}), k = g.watchObject("pods", d.metadata.name, j, function(b) { a.debugPod = b; }); -var i = e.open({ +var h = e.open({ animation:!0, templateUrl:"views/modals/debug-terminal.html", controller:"DebugTerminalModalController", @@ -5677,7 +5673,7 @@ return _.get(a, [ "imagesByDockerReference", f.image ]); }, backdrop:"static" }); -i.result.then(l); +h.result.then(m); }, function(d) { a.alerts["debug-container-error"] = { type:"error", @@ -5694,7 +5690,7 @@ return a && a.forEach(function(a) { a.state && a.state.running && b++; }), b; }, a.$on("$destroy", function() { -g.unwatchAll(o), l(), $(window).off("resize.terminalsize"); +g.unwatchAll(n), m(), $(window).off("resize.terminalsize"); }); })); } ]), angular.module("openshiftConsole").controller("OverviewController", [ "$scope", "$filter", "$routeParams", "AlertMessageService", "APIService", "AppsService", "BuildsService", "Constants", "DataService", "DeploymentsService", "HPAService", "HTMLService", "ImageStreamResolver", "KeywordService", "LabelFilter", "Logger", "MetricsService", "Navigate", "NotificationsService", "OwnerReferencesService", "PodsService", "ProjectsService", "BindingService", "ResourceAlertsService", "RoutesService", OverviewController ]), angular.module("openshiftConsole").controller("QuotaController", [ "$filter", "$routeParams", "$scope", "DataService", "ProjectsService", "Logger", function(a, b, c, d, e, f) { @@ -6596,87 +6592,42 @@ a.deploymentConfigs = b.select(a.unfilteredDeploymentConfigs), a.replicationCont d.unwatchAll(n); }); })); -} ]), angular.module("openshiftConsole").controller("DeploymentController", [ "$scope", "$filter", "$routeParams", "DataService", "DeploymentsService", "EnvironmentService", "HPAService", "ImageStreamResolver", "ModalsService", "Navigate", "OwnerReferencesService", "Logger", "ProjectsService", "StorageService", function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { -var o = {}; +} ]), angular.module("openshiftConsole").controller("DeploymentController", [ "$scope", "$filter", "$routeParams", "DataService", "DeploymentsService", "HPAService", "ImageStreamResolver", "ModalsService", "Navigate", "OwnerReferencesService", "Logger", "ProjectsService", "StorageService", function(a, b, c, d, e, f, g, h, i, j, k, l, m) { +var n = {}; a.projectName = c.project, a.name = c.deployment, a.forms = {}, a.alerts = {}, a.imagesByDockerReference = {}, a.breadcrumbs = [ { title:"Deployments", link:"project/" + c.project + "/browse/deployments" }, { title:c.deployment -} ], a.healthCheckURL = j.healthCheckURL(c.project, "Deployment", c.deployment, "apps"); -var p = !1, q = function(b, c) { -if (!p) { -if (!a.forms.deploymentEnvVars || a.forms.deploymentEnvVars.$pristine) return void (a.updatedDeployment = f.copyAndNormalize(b)); -if (f.isEnvironmentEqual(b, c)) return void (a.updatedDeployment = f.mergeEdits(a.updatedDeployment, b)); -p = !0, a.alerts["env-conflict"] = { -type:"warning", -message:"The environment variables for the deployment have been updated in the background. Saving your changes may create a conflict or cause loss of data.", -links:[ { -label:"Reload Environment Variables", -onClick:function() { -return a.clearEnvVarUpdates(), !0; -} -} ] -}; -} -}, r = b("orderByDisplayName"), s = b("getErrorDetails"), t = function(b, c) { -a.alerts["from-value-objects"] = { -type:"error", -message:b, -details:c -}; -}, u = []; -m.get(c.project).then(_.spread(function(j, m) { -a.project = j, a.projectContext = m; -var v, w = {}, x = function() { -g.getHPAWarnings(a.deployment, a.autoscalers, w, j).then(function(b) { +} ], a.healthCheckURL = i.healthCheckURL(c.project, "Deployment", c.deployment, "apps"); +var o = []; +l.get(c.project).then(_.spread(function(i, l) { +a.project = i, a.projectContext = l; +var p = {}, q = function() { +f.getHPAWarnings(a.deployment, a.autoscalers, p, i).then(function(b) { a.hpaWarnings = b; }); }; d.get({ group:"apps", resource:"deployments" -}, c.deployment, m, { +}, c.deployment, l, { errorNotification:!1 -}).then(function(g) { -a.loaded = !0, a.deployment = g, x(), a.saveEnvVars = function() { -f.compact(a.updatedDeployment), v = d.update({ -group:"apps", -resource:"deployments" -}, c.deployment, a.updatedDeployment, m), v.then(function() { -a.alerts.saveEnvSuccess = { -type:"success", -message:c.deployment + " was updated." -}, a.forms.deploymentEnvVars.$setPristine(); -}, function(d) { -a.alerts.saveEnvError = { -type:"error", -message:c.deployment + " was not updated.", -details:b("getErrorDetails")(d) -}; -})["finally"](function() { -v = null; -}); -}, a.clearEnvVarUpdates = function() { -a.updatedDeployment = f.copyAndNormalize(a.deployment), a.forms.deploymentEnvVars.$setPristine(), p = !1; -}, u.push(d.watchObject({ +}).then(function(b) { +a.loaded = !0, a.deployment = b, q(), o.push(d.watchObject({ group:"apps", resource:"deployments" -}, c.deployment, m, function(b, c) { +}, c.deployment, l, function(b, c) { "DELETED" === c && (a.alerts.deleted = { type:"warning", message:"This deployment has been deleted." -}); -var d = a.deployment; -a.deployment = b, a.updatingPausedState = !1, x(), q(b, d), v ? v["finally"](function() { -q(b, d); -}) :q(b, d), h.fetchReferencedImageStreamImages([ b.spec.template ], a.imagesByDockerReference, o, m); -})), u.push(d.watch({ +}), a.deployment = b, a.updatingPausedState = !1, q(), g.fetchReferencedImageStreamImages([ b.spec.template ], a.imagesByDockerReference, n, l); +})), o.push(d.watch({ group:"extensions", resource:"replicasets" -}, m, function(b) { -var c = b.by("metadata.name"); -c = k.filterForController(c, g), a.inProgressDeployment = _.chain(c).filter("status.replicas").size() > 1, a.replicaSetsForDeployment = e.sortByRevision(c); +}, l, function(c) { +var d = c.by("metadata.name"); +d = j.filterForController(d, b), a.inProgressDeployment = _.chain(d).filter("status.replicas").size() > 1, a.replicaSetsForDeployment = e.sortByRevision(d); })); }, function(c) { a.loaded = !0, a.alerts.load = { @@ -6684,33 +6635,19 @@ type:"error", message:404 === c.status ? "This deployment can not be found, it may have been deleted." :"The deployment details could not be loaded.", details:b("getErrorDetails")(c) }; -}), d.list("limitranges", m).then(function(a) { -w = a.by("metadata.name"), x(); -}); -var y = [], z = []; -a.valueFromObjects = [], d.list("configmaps", m, null, { -errorNotification:!1 -}).then(function(b) { -y = r(b.by("metadata.name")), a.valueFromObjects = y.concat(z); -}, function(a) { -403 !== a.code && t("Could not load config maps", s(a)); -}), d.list("secrets", m, null, { -errorNotification:!1 -}).then(function(b) { -z = r(b.by("metadata.name")), a.valueFromObjects = z.concat(y); -}, function(a) { -403 !== a.code && t("Could not load secrets", s(a)); -}), u.push(d.watch("imagestreams", m, function(b) { +}), d.list("limitranges", l).then(function(a) { +p = a.by("metadata.name"), q(); +}), o.push(d.watch("imagestreams", l, function(b) { var c = b.by("metadata.name"); -h.buildDockerRefMapForImageStreams(c, o), a.deployment && h.fetchReferencedImageStreamImages([ a.deployment.spec.template ], a.imagesByDockerReference, o, m), l.log("imagestreams (subscribe)", a.imageStreams); -})), u.push(d.watch({ +g.buildDockerRefMapForImageStreams(c, n), a.deployment && g.fetchReferencedImageStreamImages([ a.deployment.spec.template ], a.imagesByDockerReference, n, l), k.log("imagestreams (subscribe)", a.imageStreams); +})), o.push(d.watch({ group:"autoscaling", resource:"horizontalpodautoscalers", version:"v1" -}, m, function(b) { -a.autoscalers = g.filterHPA(b.by("metadata.name"), "Deployment", c.deployment), x(); -})), u.push(d.watch("builds", m, function(b) { -a.builds = b.by("metadata.name"), l.log("builds (subscribe)", a.builds); +}, l, function(b) { +a.autoscalers = f.filterHPA(b.by("metadata.name"), "Deployment", c.deployment), q(); +})), o.push(d.watch("builds", l, function(b) { +a.builds = b.by("metadata.name"), k.log("builds (subscribe)", a.builds); })), a.scale = function(c) { var d = function(c) { a.alerts = a.alerts || {}, a.alerts.scale = { @@ -6721,7 +6658,7 @@ details:b("getErrorDetails")(c) }; e.scale(a.deployment, c).then(_.noop, d); }, a.setPaused = function(c) { -a.updatingPausedState = !0, e.setPaused(a.deployment, c, m).then(_.noop, function(d) { +a.updatingPausedState = !0, e.setPaused(a.deployment, c, l).then(_.noop, function(d) { a.updatingPausedState = !1, a.alerts = a.alerts || {}, a.alerts.scale = { type:"error", message:"An error occurred " + (c ? "pausing" :"resuming") + " the deployment.", @@ -6731,92 +6668,49 @@ details:b("getErrorDetails")(d) }, a.removeVolume = function(b) { var c; c = _.get(a, "deployment.spec.paused") ? "This will remove the volume from the deployment." :"This will remove the volume from the deployment and start a new rollout.", b.persistentVolumeClaim ? c += " It will not delete the persistent volume claim." :b.secret ? c += " It will not delete the secret." :b.configMap && (c += " It will not delete the config map."); -var d = i.confirm({ +var d = h.confirm({ message:"Remove volume " + b.name + "?", details:c, okButtonText:"Remove", okButtonClass:"btn-danger", cancelButtonText:"Cancel" }), e = function() { -n.removeVolume(a.deployment, b, m); +m.removeVolume(a.deployment, b, l); }; d.then(e); }, a.$on("$destroy", function() { -d.unwatchAll(u); +d.unwatchAll(o); }); })); -} ]), angular.module("openshiftConsole").controller("DeploymentConfigController", [ "$scope", "$filter", "$routeParams", "BreadcrumbsService", "DataService", "DeploymentsService", "EnvironmentService", "HPAService", "ImageStreamResolver", "ModalsService", "Navigate", "NotificationsService", "Logger", "ProjectsService", "StorageService", "LabelFilter", "labelNameFilter", function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) { -var r = {}; +} ]), angular.module("openshiftConsole").controller("DeploymentConfigController", [ "$scope", "$filter", "$routeParams", "BreadcrumbsService", "DataService", "DeploymentsService", "HPAService", "ImageStreamResolver", "ModalsService", "Navigate", "NotificationsService", "Logger", "ProjectsService", "StorageService", "LabelFilter", "labelNameFilter", function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { +var q = {}; a.projectName = c.project, a.deploymentConfigName = c.deploymentconfig, a.deploymentConfig = null, a.deployments = {}, a.unfilteredDeployments = {}, a.imagesByDockerReference = {}, a.builds = {}, a.labelSuggestions = {}, a.forms = {}, a.alerts = {}, a.breadcrumbs = d.getBreadcrumbs({ name:c.deploymentconfig, kind:"DeploymentConfig", namespace:c.project -}), a.emptyMessage = "Loading...", a.healthCheckURL = k.healthCheckURL(c.project, "DeploymentConfig", c.deploymentconfig); -var s = b("orderObjectsByDate"), t = b("mostRecent"), u = !1, v = function(b, c) { -if (!u) { -if (!a.forms.dcEnvVars || a.forms.dcEnvVars.$pristine) return void (a.updatedDeploymentConfig = g.copyAndNormalize(b)); -if (g.isEnvironmentEqual(b, c)) return void (a.updatedDeploymentConfig = g.mergeEdits(a.updatedDeploymentConfig, b)); -u = !0, a.alerts["env-conflict"] = { -type:"warning", -message:"The environment variables for the deployment configuration have been updated in the background. Saving your changes may create a conflict or cause loss of data.", -links:[ { -label:"Reload Environment Variables", -onClick:function() { -return a.clearEnvVarUpdates(), !0; -} -} ] -}; -} -}, w = b("orderByDisplayName"), x = b("getErrorDetails"), y = function(b, c) { -a.alerts["from-value-objects"] = { -type:"error", -message:b, -details:c -}; -}, z = [], A = [], B = []; -a.valueFromObjects = [], n.get(c.project).then(_.spread(function(d, k) { -function n() { -p.getLabelSelector().isEmpty() || !$.isEmptyObject(a.deployments) || $.isEmptyObject(a.unfilteredDeployments) ? delete a.alerts.deployments :a.alerts.deployments = { +}), a.emptyMessage = "Loading...", a.healthCheckURL = j.healthCheckURL(c.project, "DeploymentConfig", c.deploymentconfig); +var r = b("mostRecent"), s = b("orderObjectsByDate"), t = []; +m.get(c.project).then(_.spread(function(d, j) { +function k() { +o.getLabelSelector().isEmpty() || !$.isEmptyObject(a.deployments) || $.isEmptyObject(a.unfilteredDeployments) ? delete a.alerts.deployments :a.alerts.deployments = { type:"warning", details:"The active filters are hiding all deployments." }; } -a.project = d, a.projectContext = k; -var C, D = {}, E = function() { -h.getHPAWarnings(a.deploymentConfig, a.autoscalers, D, d).then(function(b) { +a.project = d, a.projectContext = j; +var m = {}, u = function() { +g.getHPAWarnings(a.deploymentConfig, a.autoscalers, m, d).then(function(b) { a.hpaWarnings = b; }); }; -e.get("deploymentconfigs", c.deploymentconfig, k, { +e.get("deploymentconfigs", c.deploymentconfig, j, { errorNotification:!1 }).then(function(d) { -a.loaded = !0, a.deploymentConfig = d, a.strategyParams = b("deploymentStrategyParams")(d), E(), a.updatedDeploymentConfig = g.copyAndNormalize(a.deploymentConfig), a.saveEnvVars = function() { -l.hideNotification("save-dc-env-error"), g.compact(a.updatedDeploymentConfig), C = e.update("deploymentconfigs", c.deploymentconfig, a.updatedDeploymentConfig, k), C.then(function() { -l.addNotification({ -type:"success", -message:"Environment variables for deployment config " + a.deploymentConfigName + " were successfully updated." -}), a.forms.dcEnvVars.$setPristine(); -}, function(c) { -l.addNotification({ -id:"save-dc-env-error", -type:"error", -message:"An error occurred updating environment variables for deployment config " + a.deploymentConfigName + ".", -details:b("getErrorDetails")(c) -}); -})["finally"](function() { -C = null; -}); -}, a.clearEnvVarUpdates = function() { -a.updatedDeploymentConfig = g.copyAndNormalize(a.deploymentConfig), a.forms.dcEnvVars.$setPristine(), u = !1; -}, z.push(e.watchObject("deploymentconfigs", c.deploymentconfig, k, function(b, c) { +a.loaded = !0, a.deploymentConfig = d, a.strategyParams = b("deploymentStrategyParams")(d), u(), t.push(e.watchObject("deploymentconfigs", c.deploymentconfig, j, function(b, c) { "DELETED" === c && (a.alerts.deleted = { type:"warning", message:"This deployment configuration has been deleted." -}); -var d = a.deploymentConfig; -a.deploymentConfig = b, a.updatingPausedState = !1, E(), C ? C["finally"](function() { -v(b, d); -}) :v(b, d), i.fetchReferencedImageStreamImages([ b.spec.template ], a.imagesByDockerReference, r, k); +}), a.deploymentConfig = b, a.updatingPausedState = !1, u(), h.fetchReferencedImageStreamImages([ b.spec.template ], a.imagesByDockerReference, q, j); })); }, function(c) { a.loaded = !0, a.alerts.load = { @@ -6824,7 +6718,7 @@ type:"error", message:404 === c.status ? "This deployment configuration can not be found, it may have been deleted." :"The deployment configuration details could not be loaded.", details:404 === c.status ? "Any remaining deployment history for this deployment will be shown." :b("getErrorDetails")(c) }; -}), z.push(e.watch("replicationcontrollers", k, function(d, e, g) { +}), t.push(e.watch("replicationcontrollers", j, function(d, e, g) { var h = c.deploymentconfig; if (a.emptyMessage = "No deployments to show", e) { if (f.deploymentBelongsToConfig(g, c.deploymentconfig)) { @@ -6845,46 +6739,34 @@ a.unfilteredDeployments = j[c.deploymentconfig] || {}, angular.forEach(a.unfilte a.causes = b("deploymentCauses")(a); }), a.deploymentConfigDeploymentsInProgress = f.associateRunningDeploymentToDeploymentConfig(j); } -a.deployments = p.getLabelSelector().select(a.unfilteredDeployments), a.orderedDeployments = s(a.deployments, !0), a.deploymentInProgress = !!_.size(a.deploymentConfigDeploymentsInProgress[h]), a.mostRecent = t(a.unfilteredDeployments), n(), p.addLabelSuggestionsFromResources(a.unfilteredDeployments, a.labelSuggestions), p.setLabelSuggestions(a.labelSuggestions); +a.deployments = o.getLabelSelector().select(a.unfilteredDeployments), a.orderedDeployments = s(a.deployments, !0), a.deploymentInProgress = !!_.size(a.deploymentConfigDeploymentsInProgress[h]), a.mostRecent = r(a.unfilteredDeployments), k(), o.addLabelSuggestionsFromResources(a.unfilteredDeployments, a.labelSuggestions), o.setLabelSuggestions(a.labelSuggestions); }, { http:{ params:{ -labelSelector:q("deploymentConfig") + "=" + a.deploymentConfigName +labelSelector:p("deploymentConfig") + "=" + a.deploymentConfigName } } -})), e.list("limitranges", k).then(function(a) { -D = a.by("metadata.name"), E(); -}), e.list("configmaps", k, null, { -errorNotification:!1 -}).then(function(b) { -A = w(b.by("metadata.name")), a.valueFromObjects = A.concat(B); -}, function(a) { -403 !== a.code && y("Could not load config maps", x(a)); -}), e.list("secrets", k, null, { -errorNotification:!1 -}).then(function(b) { -B = w(b.by("metadata.name")), a.valueFromObjects = B.concat(A); -}, function(a) { -403 !== a.code && y("Could not load secrets", x(a)); -}), z.push(e.watch("imagestreams", k, function(b) { +})), e.list("limitranges", j).then(function(a) { +m = a.by("metadata.name"), u(); +}), t.push(e.watch("imagestreams", j, function(b) { var c = b.by("metadata.name"); -i.buildDockerRefMapForImageStreams(c, r), a.deploymentConfig && i.fetchReferencedImageStreamImages([ a.deploymentConfig.spec.template ], a.imagesByDockerReference, r, k), m.log("imagestreams (subscribe)", a.imageStreams); -})), z.push(e.watch("builds", k, function(b) { -a.builds = b.by("metadata.name"), m.log("builds (subscribe)", a.builds); -})), z.push(e.watch({ +h.buildDockerRefMapForImageStreams(c, q), a.deploymentConfig && h.fetchReferencedImageStreamImages([ a.deploymentConfig.spec.template ], a.imagesByDockerReference, q, j), l.log("imagestreams (subscribe)", a.imageStreams); +})), t.push(e.watch("builds", j, function(b) { +a.builds = b.by("metadata.name"), l.log("builds (subscribe)", a.builds); +})), t.push(e.watch({ group:"autoscaling", resource:"horizontalpodautoscalers", version:"v1" -}, k, function(b) { -a.autoscalers = h.filterHPA(b.by("metadata.name"), "DeploymentConfig", c.deploymentconfig), E(); -})), p.onActiveFiltersChanged(function(b) { +}, j, function(b) { +a.autoscalers = g.filterHPA(b.by("metadata.name"), "DeploymentConfig", c.deploymentconfig), u(); +})), o.onActiveFiltersChanged(function(b) { a.$apply(function() { -a.deployments = b.select(a.unfilteredDeployments), a.orderedDeployments = s(a.deployments, !0), n(); +a.deployments = b.select(a.unfilteredDeployments), a.orderedDeployments = s(a.deployments, !0), k(); }); }), a.canDeploy = function() { return !!a.deploymentConfig && (!a.deploymentConfig.metadata.deletionTimestamp && (!a.deploymentInProgress && !a.deploymentConfig.spec.paused)); }, a.startLatestDeployment = function() { -a.canDeploy() && f.startLatestDeployment(a.deploymentConfig, k); +a.canDeploy() && f.startLatestDeployment(a.deploymentConfig, j); }, a.scale = function(c) { var d = function(c) { a.alerts["scale-error"] = { @@ -6895,7 +6777,7 @@ details:b("getErrorDetails")(c) }; f.scale(a.deploymentConfig, c).then(_.noop, d); }, a.setPaused = function(c) { -a.updatingPausedState = !0, f.setPaused(a.deploymentConfig, c, k).then(_.noop, function(d) { +a.updatingPausedState = !0, f.setPaused(a.deploymentConfig, c, j).then(_.noop, function(d) { a.updatingPausedState = !1, a.alerts["pause-error"] = { type:"error", message:"An error occurred " + (c ? "pausing" :"resuming") + " the deployment config.", @@ -6903,7 +6785,7 @@ details:b("getErrorDetails")(d) }; }); }; -var F = function() { +var v = function() { if (_.get(a, "deploymentConfig.spec.paused")) return !1; var b = _.get(a, "deploymentConfig.spec.triggers", []); return _.some(b, { @@ -6912,121 +6794,71 @@ type:"ConfigChange" }; a.removeVolume = function(b) { var c; -c = F() ? "This will remove the volume from the deployment config and trigger a new deployment." :"This will remove the volume from the deployment config.", b.persistentVolumeClaim ? c += " It will not delete the persistent volume claim." :b.secret ? c += " It will not delete the secret." :b.configMap && (c += " It will not delete the config map."); -var d = j.confirm({ +c = v() ? "This will remove the volume from the deployment config and trigger a new deployment." :"This will remove the volume from the deployment config.", b.persistentVolumeClaim ? c += " It will not delete the persistent volume claim." :b.secret ? c += " It will not delete the secret." :b.configMap && (c += " It will not delete the config map."); +var d = i.confirm({ message:"Remove volume " + b.name + "?", details:c, okButtonText:"Remove", okButtonClass:"btn-danger", cancelButtonText:"Cancel" }), e = function() { -o.removeVolume(a.deploymentConfig, b, k); +n.removeVolume(a.deploymentConfig, b, j); }; d.then(e); }, a.$on("$destroy", function() { -e.unwatchAll(z); +e.unwatchAll(t); }); })); -} ]), angular.module("openshiftConsole").controller("ReplicaSetController", [ "$scope", "$filter", "$routeParams", "AuthorizationService", "BreadcrumbsService", "DataService", "DeploymentsService", "EnvironmentService", "HPAService", "ImageStreamResolver", "Logger", "MetricsService", "ModalsService", "Navigate", "OwnerReferencesService", "PodsService", "ProjectsService", "StorageService", "keyValueEditorUtils", "kind", function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) { -var u = !1, v = b("annotation"), w = b("humanizeKind")(t), x = b("hasDeployment"); -switch (t) { +} ]), 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(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) { +var t = !1, u = b("annotation"), v = b("humanizeKind")(s), w = b("hasDeployment"); +switch (s) { case "ReplicaSet": a.resource = { group:"extensions", resource:"replicasets" -}, a.healthCheckURL = n.healthCheckURL(c.project, "ReplicaSet", c.replicaSet, "extensions"); +}, a.healthCheckURL = m.healthCheckURL(c.project, "ReplicaSet", c.replicaSet, "extensions"); break; case "ReplicationController": -a.resource = "replicationcontrollers", a.healthCheckURL = n.healthCheckURL(c.project, "ReplicationController", c.replicaSet); +a.resource = "replicationcontrollers", a.healthCheckURL = m.healthCheckURL(c.project, "ReplicationController", c.replicaSet); } -var y = {}; -a.projectName = c.project, a.kind = t, a.replicaSet = null, a.deploymentConfig = null, a.deploymentConfigMissing = !1, a.imagesByDockerReference = {}, a.builds = {}, a.alerts = {}, a.renderOptions = a.renderOptions || {}, a.renderOptions.hideFilterWidget = !0, a.forms = {}, a.logOptions = {}; -var z = []; -l.isAvailable().then(function(b) { +var x = {}; +a.projectName = c.project, a.kind = s, a.replicaSet = null, a.deploymentConfig = null, a.deploymentConfigMissing = !1, a.imagesByDockerReference = {}, a.builds = {}, a.alerts = {}, a.renderOptions = a.renderOptions || {}, a.renderOptions.hideFilterWidget = !0, a.forms = {}, a.logOptions = {}; +var y = []; +k.isAvailable().then(function(b) { a.metricsAvailable = b; }); -var A, B = b("deploymentStatus"), C = function(b) { -a.logCanRun = !_.includes([ "New", "Pending" ], B(b)); -}, D = !1, E = function(c, d) { -if (!D) { -if (!a.forms.envForm || a.forms.envForm.$pristine) return void (a.updatedReplicaSet = h.copyAndNormalize(c)); -if (h.isEnvironmentEqual(c, d)) return void (a.updatedReplicaSet = h.mergeEdits(a.updatedReplicaSet, c)); -D = !0, a.alerts["env-conflict"] = { -type:"warning", -message:"The environment variables for the " + b("humanizeKind")(a.replicaSet.kind) + " have been updated in the background. Saving your changes may create a conflict or cause loss of data.", -links:[ { -label:"Reload Environment Variables", -onClick:function() { -return a.clearEnvVarUpdates(), !0; -} -} ] -}; -} -}; -a.saveEnvVars = function() { -h.compact(a.updatedReplicaSet), A = f.update(a.resource, c.replicaSet, a.updatedReplicaSet, a.projectContext), A.then(function() { -a.alerts.saveEnvSuccess = { -type:"success", -message:a.replicaSet.metadata.name + " was updated." -}, a.forms.envForm.$setPristine(); -}, function(c) { -a.alerts.saveEnvError = { -type:"error", -message:a.replicaSet.metadata.name + " was not updated.", -details:b("getErrorDetails")(c) -}; -}); -}, a.clearEnvVarUpdates = function() { -a.updatedReplicaSet = h.copyAndNormalize(a.replicaSet), a.forms.envForm.$setPristine(), D = !1; -}; -var F = b("isIE")() || b("isEdge")(), G = b("orderByDisplayName"), H = b("getErrorDetails"), I = function(b, c) { -a.alerts["from-value-objects"] = { -type:"error", -message:b, -details:c -}; -}, J = [], K = []; -a.valueFromObjects = [], q.get(c.project).then(_.spread(function(h, l) { -a.project = h, a.projectContext = l, f.list("configmaps", l, null, { -errorNotification:!1 -}).then(function(b) { -J = G(b.by("metadata.name")), a.valueFromObjects = J.concat(K); -}, function(a) { -403 !== a.code && I("Could not load config maps", H(a)); -}), f.list("secrets", l, null, { -errorNotification:!1 -}).then(function(b) { -K = G(b.by("metadata.name")), a.valueFromObjects = K.concat(J); -}, function(a) { -403 !== a.code && I("Could not load secrets", H(a)); -}); -var q = {}, s = function() { -if (a.hpaForRS = i.filterHPA(q, t, c.replicaSet), a.deploymentConfigName && a.isActive) { -var b = i.filterHPA(q, "DeploymentConfig", a.deploymentConfigName); +var z = b("deploymentStatus"), A = function(b) { +a.logCanRun = !_.includes([ "New", "Pending" ], z(b)); +}, B = b("isIE")() || b("isEdge")(); +p.get(c.project).then(_.spread(function(k, p) { +a.project = k, a.projectContext = p; +var r = {}, C = function() { +if (a.hpaForRS = h.filterHPA(r, s, c.replicaSet), a.deploymentConfigName && a.isActive) { +var b = h.filterHPA(r, "DeploymentConfig", a.deploymentConfigName); a.autoscalers = a.hpaForRS.concat(b); } else if (a.deployment && a.isActive) { -var d = i.filterHPA(q, "Deployment", a.deployment.metadata.name); +var d = h.filterHPA(r, "Deployment", a.deployment.metadata.name); a.autoscalers = a.hpaForRS.concat(d); } else a.autoscalers = a.hpaForRS; }, D = function() { -z.push(f.watch(a.resource, l, function(b) { +y.push(f.watch(a.resource, p, function(b) { var c, d = []; angular.forEach(b.by("metadata.name"), function(b) { -var c = v(b, "deploymentConfig") || ""; +var c = u(b, "deploymentConfig") || ""; c === a.deploymentConfigName && d.push(b); -}), c = g.getActiveDeployment(d), a.isActive = c && c.metadata.uid === a.replicaSet.metadata.uid, s(); +}), c = g.getActiveDeployment(d), a.isActive = c && c.metadata.uid === a.replicaSet.metadata.uid, C(); })); -}, L = function() { -i.getHPAWarnings(a.replicaSet, a.autoscalers, a.limitRanges, h).then(function(b) { +}, E = function() { +h.getHPAWarnings(a.replicaSet, a.autoscalers, a.limitRanges, k).then(function(b) { a.hpaWarnings = b; }); -}, M = function(d) { -var e = v(d, "deploymentConfig"); +}, F = function(d) { +var e = u(d, "deploymentConfig"); if (e) { -u = !0, a.deploymentConfigName = e; -var g = v(d, "deploymentVersion"); -g && (a.logOptions.version = g), a.healthCheckURL = n.healthCheckURL(c.project, "DeploymentConfig", e), f.get("deploymentconfigs", e, l, { +t = !0, a.deploymentConfigName = e; +var g = u(d, "deploymentVersion"); +g && (a.logOptions.version = g), a.healthCheckURL = m.healthCheckURL(c.project, "DeploymentConfig", e), f.get("deploymentconfigs", e, p, { errorNotification:!1 }).then(function(b) { a.deploymentConfig = b; @@ -7038,135 +6870,131 @@ details:b("getErrorDetails")(c) }); }); } -}, N = function() { +}, G = function() { a.isActive = g.isActiveReplicaSet(a.replicaSet, a.deployment); -}, O = function(b) { +}, H = function(b) { return _.some(b, function(b) { if (_.get(b, "status.replicas") && _.get(b, "metadata.uid") !== _.get(a.replicaSet, "metadata.uid")) { -var c = o.getControllerReferences(b); +var c = n.getControllerReferences(b); return _.some(c, { uid:a.deployment.metadata.uid }); } }); -}, P = !1, Q = function() { -var b = o.getControllerReferences(a.replicaSet), d = _.find(b, { +}, I = !1, J = function() { +var b = n.getControllerReferences(a.replicaSet), d = _.find(b, { kind:"Deployment" }); d && f.get({ group:"apps", resource:"deployments" -}, d.name, l).then(function(b) { -a.deployment = b, a.healthCheckURL = n.healthCheckURL(c.project, "Deployment", b.metadata.name, "apps"), z.push(f.watchObject({ +}, d.name, p).then(function(b) { +a.deployment = b, a.healthCheckURL = m.healthCheckURL(c.project, "Deployment", b.metadata.name, "apps"), y.push(f.watchObject({ group:"apps", resource:"deployments" -}, b.metadata.name, l, function(b, d) { +}, b.metadata.name, p, function(b, d) { return "DELETED" === d ? (a.alerts["deployment-deleted"] = { type:"warning", message:"The deployment controlling this replica set has been deleted." -}, a.healthCheckURL = n.healthCheckURL(c.project, "ReplicaSet", c.replicaSet, "extensions"), a.deploymentMissing = !0, void delete a.deployment) :(a.deployment = b, a.breadcrumbs = e.getBreadcrumbs({ +}, a.healthCheckURL = m.healthCheckURL(c.project, "ReplicaSet", c.replicaSet, "extensions"), a.deploymentMissing = !0, void delete a.deployment) :(a.deployment = b, a.breadcrumbs = e.getBreadcrumbs({ object:a.replicaSet, displayName:"#" + g.getRevision(a.replicaSet), parent:{ title:a.deployment.metadata.name, -link:n.resourceURL(a.deployment) +link:m.resourceURL(a.deployment) }, humanizedKind:"Deployments" -}), N(), void s()); -})), z.push(f.watch({ +}), G(), void C()); +})), y.push(f.watch({ group:"extensions", resource:"replicasets" -}, l, function(a) { +}, p, function(a) { var b = a.by("metadata.name"); -P = O(b); +I = H(b); })); }); -}, R = function() { -if (!_.isEmpty(y)) { +}, K = function() { +if (!_.isEmpty(x)) { var b = _.get(a, "replicaSet.spec.template"); -b && j.fetchReferencedImageStreamImages([ b ], a.imagesByDockerReference, y, l); +b && i.fetchReferencedImageStreamImages([ b ], a.imagesByDockerReference, x, p); } }; -f.get(a.resource, c.replicaSet, l, { +f.get(a.resource, c.replicaSet, p, { errorNotification:!1 }).then(function(b) { -switch (a.loaded = !0, a.replicaSet = b, C(b), t) { +switch (a.loaded = !0, a.replicaSet = b, A(b), s) { case "ReplicationController": -M(b); +F(b); break; case "ReplicaSet": -Q(); +J(); } -L(), a.breadcrumbs = e.getBreadcrumbs({ +E(), a.breadcrumbs = e.getBreadcrumbs({ object:b -}), z.push(f.watchObject(a.resource, c.replicaSet, l, function(b, c) { +}), y.push(f.watchObject(a.resource, c.replicaSet, p, function(b, c) { "DELETED" === c && (a.alerts.deleted = { type:"warning", -message:"This " + w + " has been deleted." -}); -var d = a.replicaSet; -a.replicaSet = b, A ? A["finally"](function() { -E(b, d); -}) :E(b, d), C(b), L(), R(), a.deployment && N(); -})), a.deploymentConfigName && D(), z.push(f.watch("pods", l, function(b) { +message:"This " + v + " has been deleted." +}), a.replicaSet = b, A(b), E(), K(), a.deployment && G(); +})), a.deploymentConfigName && D(), y.push(f.watch("pods", p, function(b) { var c = b.by("metadata.name"); -a.podsForDeployment = p.filterForOwner(c, a.replicaSet); +a.podsForDeployment = o.filterForOwner(c, a.replicaSet); })); }, function(d) { a.loaded = !0, a.alerts.load = { type:"error", -message:"The " + w + " details could not be loaded.", +message:"The " + v + " details could not be loaded.", details:b("getErrorDetails")(d) }, a.breadcrumbs = e.getBreadcrumbs({ name:c.replicaSet, -kind:t, +kind:s, namespace:c.project }); -}), z.push(f.watch(a.resource, l, function(c, d, e) { -a.replicaSets = c.by("metadata.name"), "ReplicationController" === t && (a.deploymentsByDeploymentConfig = g.associateDeploymentsToDeploymentConfig(a.replicaSets)); +}), y.push(f.watch(a.resource, p, function(c, d, e) { +a.replicaSets = c.by("metadata.name"), "ReplicationController" === s && (a.deploymentsByDeploymentConfig = g.associateDeploymentsToDeploymentConfig(a.replicaSets)); var f, h; -e && (f = v(e, "deploymentConfig"), h = e.metadata.name), a.deploymentConfigDeploymentsInProgress = a.deploymentConfigDeploymentsInProgress || {}, d ? "ADDED" === d || "MODIFIED" === d && b("deploymentIsInProgress")(e) ? (a.deploymentConfigDeploymentsInProgress[f] = a.deploymentConfigDeploymentsInProgress[f] || {}, a.deploymentConfigDeploymentsInProgress[f][h] = e) :"MODIFIED" === d && a.deploymentConfigDeploymentsInProgress[f] && delete a.deploymentConfigDeploymentsInProgress[f][h] :a.deploymentConfigDeploymentsInProgress = g.associateRunningDeploymentToDeploymentConfig(a.deploymentsByDeploymentConfig), e ? "DELETED" !== d && (e.causes = b("deploymentCauses")(e)) :angular.forEach(a.replicaSets, function(a) { +e && (f = u(e, "deploymentConfig"), h = e.metadata.name), a.deploymentConfigDeploymentsInProgress = a.deploymentConfigDeploymentsInProgress || {}, d ? "ADDED" === d || "MODIFIED" === d && b("deploymentIsInProgress")(e) ? (a.deploymentConfigDeploymentsInProgress[f] = a.deploymentConfigDeploymentsInProgress[f] || {}, a.deploymentConfigDeploymentsInProgress[f][h] = e) :"MODIFIED" === d && a.deploymentConfigDeploymentsInProgress[f] && delete a.deploymentConfigDeploymentsInProgress[f][h] :a.deploymentConfigDeploymentsInProgress = g.associateRunningDeploymentToDeploymentConfig(a.deploymentsByDeploymentConfig), e ? "DELETED" !== d && (e.causes = b("deploymentCauses")(e)) :angular.forEach(a.replicaSets, function(a) { a.causes = b("deploymentCauses")(a); }); -})), z.push(f.watch("imagestreams", l, function(a) { +})), y.push(f.watch("imagestreams", p, function(a) { var b = a.by("metadata.name"); -j.buildDockerRefMapForImageStreams(b, y), R(), k.log("imagestreams (subscribe)", b); -})), z.push(f.watch("builds", l, function(b) { -a.builds = b.by("metadata.name"), k.log("builds (subscribe)", a.builds); -})), z.push(f.watch({ +i.buildDockerRefMapForImageStreams(b, x), K(), j.log("imagestreams (subscribe)", b); +})), y.push(f.watch("builds", p, function(b) { +a.builds = b.by("metadata.name"), j.log("builds (subscribe)", a.builds); +})), y.push(f.watch({ group:"autoscaling", resource:"horizontalpodautoscalers", version:"v1" -}, l, function(a) { -q = a.by("metadata.name"), s(), L(); +}, p, function(a) { +r = a.by("metadata.name"), C(), E(); }, { -poll:F, +poll:B, pollInterval:6e4 -})), f.list("limitranges", l).then(function(b) { -a.limitRanges = b.by("metadata.name"), L(); +})), f.list("limitranges", p).then(function(b) { +a.limitRanges = b.by("metadata.name"), E(); }); -var S = 6e4; -z.push(f.watch("resourcequotas", l, function(b) { +var L = 6e4; +y.push(f.watch("resourcequotas", p, function(b) { a.quotas = b.by("metadata.name"); }, { poll:!0, -pollInterval:S -})), z.push(f.watch("appliedclusterresourcequotas", l, function(b) { +pollInterval:L +})), y.push(f.watch("appliedclusterresourcequotas", p, function(b) { a.clusterQuotas = b.by("metadata.name"); }, { poll:!0, -pollInterval:S +pollInterval:L })); -var T = b("deploymentIsLatest"); +var M = b("deploymentIsLatest"); a.showRollbackAction = function() { -return "Complete" === B(a.replicaSet) && !T(a.replicaSet, a.deploymentConfig) && !a.replicaSet.metadata.deletionTimestamp && d.canI("deploymentconfigrollbacks", "create"); +return "Complete" === z(a.replicaSet) && !M(a.replicaSet, a.deploymentConfig) && !a.replicaSet.metadata.deletionTimestamp && d.canI("deploymentconfigrollbacks", "create"); }, a.retryFailedDeployment = function(b) { -g.retryFailedDeployment(b, l, a); +g.retryFailedDeployment(b, p, a); }, a.rollbackToDeployment = function(b, c, d, e) { -g.rollbackToDeployment(b, c, d, e, l, a); +g.rollbackToDeployment(b, c, d, e, p, a); }, a.cancelRunningDeployment = function(a) { -g.cancelRunningDeployment(a, l); +g.cancelRunningDeployment(a, p); }, a.scale = function(c) { var d = function(c) { a.alerts = a.alerts || {}, a.alerts.scale = { @@ -7177,24 +7005,24 @@ details:b("getErrorDetails")(c) }, e = a.deployment || a.deploymentConfig || a.replicaSet; g.scale(e, c).then(_.noop, d); }; -var U = b("hasDeploymentConfig"); +var N = b("hasDeploymentConfig"); a.isScalable = function() { -return !!_.isEmpty(a.autoscalers) && (!U(a.replicaSet) && !x(a.replicaSet) || (!(!a.deploymentConfigMissing && !a.deploymentMissing) || !(!a.deploymentConfig && !a.deployment) && (a.isActive && !P))); +return !!_.isEmpty(a.autoscalers) && (!N(a.replicaSet) && !w(a.replicaSet) || (!(!a.deploymentConfigMissing && !a.deploymentMissing) || !(!a.deploymentConfig && !a.deployment) && (a.isActive && !I))); }, a.removeVolume = function(c) { var d = "This will remove the volume from the " + b("humanizeKind")(a.replicaSet.kind) + "."; c.persistentVolumeClaim ? d += " It will not delete the persistent volume claim." :c.secret ? d += " It will not delete the secret." :c.configMap && (d += " It will not delete the config map."); -var e = m.confirm({ +var e = l.confirm({ message:"Remove volume " + c.name + "?", details:d, okButtonText:"Remove", okButtonClass:"btn-danger", cancelButtonText:"Cancel" }), f = function() { -r.removeVolume(a.replicaSet, c, l); +q.removeVolume(a.replicaSet, c, p); }; e.then(f); }, a.$on("$destroy", function() { -f.unwatchAll(z); +f.unwatchAll(y); }); })); } ]), angular.module("openshiftConsole").controller("StatefulSetsController", [ "$scope", "$routeParams", "DataService", "ProjectsService", "LabelFilter", "PodsService", function(a, b, c, d, e, f) { @@ -7226,50 +7054,45 @@ a.statefulSets = b.select(a.unfilteredStatefulSets), h(); c.unwatchAll(g); }); })); -} ]), angular.module("openshiftConsole").controller("StatefulSetController", [ "$filter", "$scope", "$routeParams", "BreadcrumbsService", "DataService", "EnvironmentService", "MetricsService", "ProjectsService", "PodsService", function(a, b, c, d, e, f, g, h, i) { +} ]), angular.module("openshiftConsole").controller("StatefulSetController", [ "$filter", "$scope", "$routeParams", "BreadcrumbsService", "DataService", "MetricsService", "ProjectsService", "PodsService", function(a, b, c, d, e, f, g, h) { b.projectName = c.project, b.statefulSetName = c.statefulset, b.forms = {}, b.alerts = {}, b.breadcrumbs = d.getBreadcrumbs({ name:b.statefulSetName, kind:"StatefulSet", namespace:c.project }); -var j, k = function(a) { -return f.copyAndNormalize(a); -}, l = [], m = { +var i, j = [], k = b.resourceGroupVersion = { resource:"statefulsets", group:"apps", version:"v1beta1" }; -g.isAvailable().then(function(a) { +f.isAvailable().then(function(a) { b.metricsAvailable = a; -}), h.get(c.project).then(_.spread(function(c, d) { -j = d, e.get(m, b.statefulSetName, d, { +}), g.get(c.project).then(_.spread(function(c, d) { +i = d, e.get(k, b.statefulSetName, d, { errorNotification:!1 }).then(function(a) { angular.extend(b, { -statefulSet:k(a), project:c, projectContext:d, +statefulSet:a, loaded:!0, isScalable:function() { return !1; }, scale:function() {} -}), l.push(e.watchObject(m, b.statefulSetName, d, function(a) { -angular.extend(b, { -resourceGroupVersion:m, -statefulSet:k(a) -}); -})), l.push(e.watch("pods", d, function(c) { +}), j.push(e.watchObject(k, b.statefulSetName, d, function(a) { +b.statefulSet = a; +})), j.push(e.watch("pods", d, function(c) { var d = c.by("metadata.name"); -b.podsForStatefulSet = i.filterForOwner(d, a); +b.podsForStatefulSet = h.filterForOwner(d, a); })); var f = 6e4; -l.push(e.watch("resourcequotas", d, function(a) { +j.push(e.watch("resourcequotas", d, function(a) { b.quotas = a.by("metadata.name"); }, { poll:!0, pollInterval:f -})), l.push(e.watch("appliedclusterresourcequotas", d, function(a) { +})), j.push(e.watch("appliedclusterresourcequotas", d, function(a) { b.clusterQuotas = a.by("metadata.name"); }, { poll:!0, @@ -7283,7 +7106,7 @@ details:a("getErrorDetails")(c) }; }); })), b.$on("$destroy", function() { -e.unwatchAll(l); +e.unwatchAll(j); }); } ]), angular.module("openshiftConsole").controller("ServicesController", [ "$routeParams", "$scope", "DataService", "ProjectsService", "$filter", "LabelFilter", "Logger", function(a, b, c, d, e, f, g) { b.projectName = a.project, b.services = {}, b.unfilteredServices = {}, b.routesByService = {}, b.routes = {}, b.labelSuggestions = {}, b.alerts = b.alerts || {}, b.emptyMessage = "Loading...", b.emptyMessageRoutes = "Loading..."; @@ -16144,7 +15967,73 @@ bottom:c.offsetBottom }); } }; -} ]), angular.module("openshiftConsole").factory("logLinks", [ "$anchorScroll", "$document", "$location", "$window", function(a, b, c, d) { +} ]), function() { +function a(a, b, c, d, e) { +var f, g, h, i, j = this, k = !1, l = [], m = [], n = !1, o = a("canI"), p = a("getErrorDetails"), q = a("humanizeKind"), r = a("orderByDisplayName"), s = function(a, b) { +if (!k) { +if (!j.form || j.form.$pristine || !j.updatedObject) return void (j.updatedObject = d.copyAndNormalize(a)); +if (d.isEnvironmentEqual(a, b)) return void (j.updatedObject = d.mergeEdits(a, b)); +k = !0, e.addNotification({ +type:"warning", +message:"The environment variables for the " + f + " have been updated in the background.", +details:"Saving your changes may create a conflict or cause loss of data." +}); +} +}, t = function() { +c.list("configmaps", { +namespace:j.apiObject.metadata.namespace +}).then(function(a) { +l = r(a.by("metadata.name")), j.valueFromObjects = l.concat(m); +}); +}, u = function() { +o("secrets", "list") && c.list("secrets", { +namespace:j.apiObject.metadata.namespace +}).then(function(a) { +m = r(a.by("metadata.name")), j.valueFromObjects = l.concat(m); +}); +}, v = function() { +n || (n = !0, t(), u()); +}, w = function(a, c) { +f = q(a.kind), g = a.metadata.name, h = b.objectToResourceGroupVersion(a), j.canIUpdate = o(h, "update"), i ? i["finally"](function() { +s(a, c); +}) :s(a, c), j.containers = d.getContainers(j.updatedObject), j.disableValueFrom || j.ngReadonly || !j.canIUpdate || v(); +}; +j.$onChanges = function(a) { +a.apiObject && a.apiObject.currentValue && w(a.apiObject.currentValue, a.apiObject.previousValue); +}, j.save = function() { +var a = "save-env-error-" + g; +e.hideNotification(a), d.compact(j.updatedObject), i = c.update(h, g, j.updatedObject, { +namespace:j.updatedObject.metadata.namespace +}), i.then(function() { +e.addNotification({ +type:"success", +message:"Environment variables for " + f + " " + g + " were successfully updated." +}), j.form.$setPristine(); +}, function(b) { +e.addNotification({ +id:a, +type:"error", +message:"An error occurred updating environment variables for " + f + " " + g + ".", +details:p(b) +}); +})["finally"](function() { +i = null; +}); +}, j.clearChanges = function() { +j.updatedObject = d.copyAndNormalize(j.apiObject), j.form.$setPristine(), k = !1; +}; +} +angular.module("openshiftConsole").component("editEnvironmentVariables", { +controller:[ "$filter", "APIService", "DataService", "EnvironmentService", "NotificationsService", a ], +controllerAs:"$ctrl", +bindings:{ +apiObject:"<", +ngReadonly:"<", +disableValueFrom:"<" +}, +templateUrl:"views/directives/edit-environment-variables.html" +}); +}(), angular.module("openshiftConsole").factory("logLinks", [ "$anchorScroll", "$document", "$location", "$window", function(a, b, c, d) { var e = function(a) { a ? a.scrollTop = 0 :window.scrollTo(null, 0); }, f = function(a) { @@ -18899,17 +18788,7 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', [] "\n" + "\n" + "Environment\n" + - "\n" + - "\n" + - "\n" + - "
\n" + - "

Container {{container.name}} Environment Variables

\n" + - "\n" + - "\n" + - "
\n" + - "\n" + - "Clear Changes\n" + - "
\n" + + "\n" + "
\n" + "\n" + "Events\n" + @@ -19149,17 +19028,7 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', [] "\n" + "\n" + "Environment\n" + - "\n" + - "\n" + - "\n" + - "
\n" + - "

Container {{container.name}} Environment Variables

\n" + - "\n" + - "\n" + - "
\n" + - "\n" + - "Clear Changes\n" + - "
\n" + + "\n" + "
\n" + "\n" + "Events\n" + @@ -19433,11 +19302,7 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', [] "\n" + "\n" + "Environment\n" + - "
\n" + - "

Container {{container.name}} Environment Variables

\n" + - "\n" + - "The container specification has no environment variables set.\n" + - "
\n" + + "\n" + "
\n" + "\n" + "\n" + @@ -19584,36 +19449,19 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', [] "\n" + "\n" + "Environment\n" + - "\n" + - "
\n" + - "

\n" + + "

\n" + "\n" + - "Environment variables can be edited on the deployment.\n" + + "Environment variables can be edited on the deployment\n" + + "{{deployment.metadata.name}}.\n" + "

\n" + - "

\n" + + "

\n" + "\n" + - "Environment variables can be edited on the deployment configuration.\n" + + "Environment variables can be edited on deployment config\n" + + "{{deploymentConfigName}}.\n" + "

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

Container {{container.name}} Environment Variables

\n" + - "\n" + - "The container specification has no environment variables set.\n" + - "
\n" + - "
\n" + - "\n" + - "\n" + - "
\n" + - "
\n" + - "\n" + - "\n" + - "Clear changes\n" + - "
\n" + - "
\n" + - "\n" + - "The container specification has no environment variables set.\n" + - "
\n" + - "
\n" + - "
\n" + + "\n" + + "\n" + + "\n" + "
\n" + "\n" + "\n" + @@ -20257,18 +20105,7 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', [] "\n" + "Environment\n" + "
\n" + - "\n" + - "
\n" + - "

Container {{container.name}} Environment Variables

\n" + - "

\n" + - "Environment variables for stateful sets are readonly.\n" + - "\n" + - "There are no environment variables for this container.\n" + - "\n" + - "

\n" + - "\n" + - "
\n" + - "
\n" + + "\n" + "
\n" + "
\n" + "\n" + @@ -22940,6 +22777,27 @@ var _scriptsTemplatesJs = []byte(`angular.module('openshiftConsoleTemplates', [] ); + $templateCache.put('views/directives/edit-environment-variables.html', + "
\n" + + "\n" + + "
\n" + + "

Container {{container.name}}

\n" + + "
\n" + + "\n" + + "No environment variables set in the {{$ctrl.apiObject.kind | humanizeKind}} template for container {{container.name}}.\n" + + "\n" + + "\n" + + "\n" + + "
\n" + + "\n" + + "\n" + + "
\n" + + "\n" + + "Clear Changes\n" + + "
" + ); + + $templateCache.put('views/directives/edit-lifecycle-hook.html', "\n" + "
\n" + @@ -291002,7 +290860,7 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-collapse.in{overflow-y:visible} .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0} } -.carousel-inner,.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} +.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} @media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px} } .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-20px;margin-left:-20px} @@ -291323,10 +291181,11 @@ a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-gro .well-lg{padding:24px} .well-sm{padding:9px} .close{float:right;font-size:19.5px;color:#000} -.popover,.tooltip{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;text-decoration:none} +.popover,.tooltip{font-family:"Open Sans",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;text-decoration:none} .close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer} button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none} .modal-content,.popover{background-clip:padding-box} +.btn-danger,.btn-default,.btn-primary,.carousel-control.left,.carousel-control.right,.pager li>a,.pager li>span{background-repeat:repeat-x} .modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0} .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out} .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)} @@ -291350,7 +291209,7 @@ button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance .tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-8px;border-width:8px 8px 0;border-top-color:#111} @media (min-width:992px){.modal-lg{width:900px} } -.tooltip{position:absolute;z-index:1070;display:block;text-align:left;text-align:start;text-shadow:none;word-wrap:normal;opacity:0;filter:alpha(opacity=0)} +.tooltip{position:absolute;z-index:1070;display:block;text-align:left;text-align:start;word-wrap:normal;opacity:0;filter:alpha(opacity=0)} .tooltip.in{opacity:.9;filter:alpha(opacity=90)} .tooltip.top{margin-top:-3px;padding:8px 0} .tooltip.right{margin-left:3px;padding:0 8px} @@ -291367,7 +291226,7 @@ button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance .tooltip.bottom .tooltip-arrow{left:50%;margin-left:-8px} .tooltip.bottom-left .tooltip-arrow{right:8px;margin-top:-8px} .tooltip.bottom-right .tooltip-arrow{left:8px;margin-top:-8px} -.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:220px;text-align:left;text-align:start;text-shadow:none;background-color:#fff;border:1px solid #bbb;border-radius:1px} +.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:220px;text-align:left;text-align:start;background-color:#fff;border:1px solid #bbb;border-radius:1px} .carousel-caption,.carousel-control{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6);text-align:center} .progress-description,.text-overflow-pf{white-space:nowrap;text-overflow:ellipsis} .popover.top{margin-top:-10px} @@ -291388,7 +291247,7 @@ button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance .popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff} .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#bbb} .popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff} -.carousel-inner{width:100%} +.carousel-inner{overflow:hidden;width:100%} .carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left} @media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px} .carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0} @@ -291404,8 +291263,8 @@ button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance .carousel-inner>.active.left{left:-100%} .carousel-inner>.active.right{left:100%} .carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;background-color:rgba(0,0,0,0)} -.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)} -.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)} +.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)} +.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)} .carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)} .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block} .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px} @@ -292176,18 +292035,18 @@ button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance .btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1} .btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none} .btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0} -.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0%,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0%,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0%,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff} +.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0%,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0%,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0%,#a30000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff} .btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff} .btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none} .btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000} .btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000} -.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258} +.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258} .btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258} .btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none} .btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9} .btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb} .btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none} -.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0%,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0%,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0%,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff} +.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0%,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0%,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0%,#0088ce 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff} .btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff} .btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none} .btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78} @@ -292255,7 +292114,7 @@ h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%} .modal-footer>.btn{padding-left:10px;padding-right:10px} .modal-footer>.btn>.fa-angle-left{margin-right:5px} .modal-footer>.btn>.fa-angle-right{margin-left:5px} -.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px} +.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0%,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px} .open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li a:active,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none} .open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258} .open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9} @@ -294342,6 +294201,7 @@ body.overlay-open,body.overlay-open .landing,body.overlay-open .landing-side-bar .edit-yaml .editor,.environment-variables.table.table-bordered>tbody>tr>td:last-child .env-var-value,.hash,.osc-file-input textarea,.template-message .resource-description{font-family:Menlo,Monaco,Consolas,monospace} .static-form-value-large .small,.static-form-value-large small{font-weight:400;line-height:1;color:#9c9c9c;font-size:65%} .breadcrumb strong,.pod-template-block .pod-template .pod-template-key,.weight-slider-values .service-name{font-weight:600} +.clear-env-changes-link{vertical-align:-2px} copy-to-clipboard .input-group.limit-width{max-width:300px} .copy-to-clipboard input.form-control[readonly]{background-color:#fff;color:#363636} .jenkinsfile-examples .copy-to-clipboard{margin-top:3px}