diff --git a/assets/app/scripts/controllers/edit/buildConfig.js b/assets/app/scripts/controllers/edit/buildConfig.js index 441e930cf60b..7f2d43f498f0 100644 --- a/assets/app/scripts/controllers/edit/buildConfig.js +++ b/assets/app/scripts/controllers/edit/buildConfig.js @@ -17,7 +17,7 @@ angular.module('openshiftConsole') $scope.options = {}; $scope.builderOptions = {}; $scope.outputOptions = {}; - $scope.imageSourcesOptions = {}; + $scope.imageSourceOptions = {}; $scope.selectTypes = { ImageStreamTag: "Image Stream Tag", ImageStreamImage: "Image Stream Image", @@ -171,7 +171,7 @@ angular.module('openshiftConsole') $scope.imageSourceTypes = angular.copy($scope.buildFromTypes); var imageSourceFrom = $scope.sourceImage.from; $scope.imageSourceOptions = $scope.setPickedVariables( - $scope.imageSourcesOptions, + $scope.imageSourceOptions, imageSourceFrom.kind, imageSourceFrom.namespace || buildConfig.metadata.namespace, imageSourceFrom.name.split(":")[0], @@ -226,23 +226,26 @@ angular.module('openshiftConsole') // If builder or output image reference kind is DockerImage select the first imageSteam and imageStreamTag // in the picker, so when the user changes the reference kind to ImageStreamTag the picker is filled with // default(first) value. - var builderSelectFirstOption = $scope.builderOptions.pickedType === "DockerImage"; - $scope.updateBuilderImageStreams($scope.builderOptions.pickedNamespace, builderSelectFirstOption); + if ($scope.builderOptions.pickedType === "ImageStreamTag") { + $scope.updateBuilderImageStreams($scope.builderOptions.pickedNamespace, false); + } - var outputSelectFirstOption = $scope.outputOptions.pickedType === "DockerImage"; - $scope.updateOutputImageStreams($scope.outputOptions.pickedNamespace, outputSelectFirstOption); + if ($scope.outputOptions.pickedType === "ImageStreamTag") { + $scope.updateOutputImageStreams($scope.outputOptions.pickedNamespace, false); + } if ($scope.sources.images && $scope.sourceImage) { $scope.imageSourceBuildFrom.projects = angular.copy($scope.buildFrom.projects); if (!$scope.imageSourceBuildFrom.projects.contains($scope.imageSourceOptions.pickedNamespace)) { - $scope.checkNamespaceAvailability($scope.imageSourceOptions.pickedNamespace, "imageSource"); + $scope.checkNamespaceAvailability($scope.imageSourceOptions.pickedNamespace); $scope.imageSourceBuildFrom.projects.push($scope.imageSourceOptions.pickedNamespace); } - var imageSourceSelectFirstOption = $scope.imageSourceOptions.pickedType === "DockerImage"; - $scope.updateImageSourceImageStreams($scope.imageSourceOptions.pickedNamespace, imageSourceSelectFirstOption); + if ($scope.imageSourceOptions.pickedType === "ImageStreamTag") { + $scope.updateImageSourceImageStreams($scope.imageSourceOptions.pickedNamespace, false); + } } + $scope.loaded = true; }); - $scope.loaded = true; // If we found the item successfully, watch for changes on it watches.push(DataService.watchObject("buildconfigs", $routeParams.buildconfig, context, function(buildConfig, action) { if (action === "DELETED") { @@ -351,7 +354,7 @@ angular.module('openshiftConsole') $scope.imageSourceBuildFrom.tags = {}; var projectImageStreams = imageStreams.by("metadata.name"); if (!_.isEmpty(projectImageStreams)) { - if (!Object.keys(projectImageStreams).contains($scope.imageSourceBuildFrom.imageStream) && projectName === $scope.imageSourceBuildFrom.namespace) { + if (!_.has(projectImageStreams, $scope.imageSourceBuildFrom.imageStream) && projectName === $scope.imageSourceBuildFrom.namespace && !selectFirstOption) { $scope.imageSourceBuildFrom.imageStreams.push($scope.imageSourceImageStream.imageStream); $scope.imageSourceOptions.pickedImageStream = $scope.imageSourceImageStream.imageStream; $scope.imageSourceBuildFrom.tags[$scope.imageSourceImageStream.imageStream] = [$scope.imageSourceImageStream.tag]; @@ -385,7 +388,7 @@ angular.module('openshiftConsole') $scope.imageSourceOptions.pickedImageStream = $scope.imageSourceBuildFrom.imageStreams[0]; $scope.clearSelectedTag($scope.imageSourceOptions, $scope.imageSourceBuildFrom.tags); } - } else if (projectName === $scope.outputImageStream.namespace) { + } else if (projectName === $scope.outputImageStream.namespace && !selectFirstOption) { $scope.imageSourceBuildFrom.imageStreams.push($scope.imageSourceImageStream.imageStream); $scope.imageSourceOptions.pickedImageStream = $scope.imageSourceImageStream.imageStream; $scope.imageSourceBuildFrom.tags[$scope.imageSourceImageStream.imageStream] = [$scope.imageSourceImageStream.tag]; @@ -415,7 +418,7 @@ angular.module('openshiftConsole') $scope.buildFrom.tags = {}; var projectImageStreams = imageStreams.by("metadata.name"); if (!_.isEmpty(projectImageStreams)) { - if (!Object.keys(projectImageStreams).contains($scope.builderImageStream.imageStream) && projectName === $scope.builderImageStream.namespace && $scope.imageSourceOptions.ImageStream !== "") { + if (!_.has(projectImageStreams, $scope.builderImageStream.imageStream) && projectName === $scope.builderImageStream.namespace && !selectFirstOption) { $scope.buildFrom.imageStreams.push($scope.builderImageStream.imageStream); $scope.builderOptions.pickedImageStream = $scope.builderImageStream.imageStream; $scope.buildFrom.tags[$scope.builderImageStream.imageStream] = [$scope.builderImageStream.tag]; @@ -450,7 +453,7 @@ angular.module('openshiftConsole') $scope.builderOptions.pickedImageStream = $scope.buildFrom.imageStreams[0]; $scope.clearSelectedTag($scope.builderOptions, $scope.buildFrom.tags); } - } else if (projectName === $scope.builderImageStream.namespace) { + } else if (projectName === $scope.builderImageStream.namespace && !selectFirstOption) { $scope.buildFrom.imageStreams.push($scope.builderImageStream.imageStream); $scope.builderOptions.pickedImageStream = $scope.builderImageStream.imageStream; $scope.buildFrom.tags[$scope.builderImageStream.imageStream] = [$scope.builderImageStream.tag]; @@ -479,7 +482,7 @@ angular.module('openshiftConsole') $scope.pushTo.tags = {}; var projectImageStreams = imageStreams.by("metadata.name"); if (!_.isEmpty(projectImageStreams)) { - if (!Object.keys(projectImageStreams).contains($scope.outputImageStream.imageStream) && projectName === $scope.outputImageStream.namespace) { + if (!_.has(projectImageStreams, $scope.outputImageStream.imageStream) && projectName === $scope.outputImageStream.namespace && !selectFirstOption) { $scope.pushTo.imageStreams.push($scope.outputImageStream.imageStream); $scope.outputOptions.pickedImageStream = $scope.outputImageStream.imageStream; $scope.outputOptions.pickedTag = $scope.outputImageStream.tag; @@ -503,7 +506,7 @@ angular.module('openshiftConsole') } else if (!$scope.pushTo.imageStreams.contains($scope.outputOptions.pickedImageStream)) { $scope.outputOptions.pickedTag = ""; } - } else if (projectName === $scope.outputImageStream.namespace) { + } else if (projectName === $scope.outputImageStream.namespace && !selectFirstOption) { $scope.pushTo.imageStreams.push($scope.outputImageStream.imageStream); $scope.outputOptions.pickedImageStream = $scope.outputImageStream.imageStream; $scope.outputOptions.pickedTag = $scope.outputImageStream.tag; diff --git a/pkg/assets/bindata.go b/pkg/assets/bindata.go index 49e60987fff2..e4f8cec901eb 100644 --- a/pkg/assets/bindata.go +++ b/pkg/assets/bindata.go @@ -4168,7 +4168,7 @@ e.limitRanges = b.by("metadata.name"), 0 !== a("hashSize")(b) && e.$watch("conta }); })); } ]), angular.module("openshiftConsole").controller("EditBuildConfigController", [ "$scope", "$routeParams", "DataService", "ProjectsService", "$filter", "ApplicationGenerator", "Navigate", "$location", "AlertMessageService", "SOURCE_URL_PATTERN", function(a, b, c, d, e, f, g, h, i, j) { -a.projectName = b.project, a.buildConfig = null, a.alerts = {}, a.emptyMessage = "Loading...", a.sourceURLPattern = j, a.options = {}, a.builderOptions = {}, a.outputOptions = {}, a.imageSourcesOptions = {}, a.selectTypes = { +a.projectName = b.project, a.buildConfig = null, a.alerts = {}, a.emptyMessage = "Loading...", a.sourceURLPattern = j, a.options = {}, a.builderOptions = {}, a.outputOptions = {}, a.imageSourceOptions = {}, a.selectTypes = { ImageStreamTag:"Image Stream Tag", ImageStreamImage:"Image Stream Image", DockerImage:"Docker Image Link" @@ -4248,7 +4248,7 @@ imageStreams:[], tags:{} }, a.imageSourcePaths = e("destinationSourcePair")(a.sourceImage.paths), a.imageSourceTypes = angular.copy(a.buildFromTypes); var i = a.sourceImage.from; -a.imageSourceOptions = a.setPickedVariables(a.imageSourcesOptions, i.kind, i.namespace || d.metadata.namespace, i.name.split(":")[0], i.name.split(":")[1], "ImageStreamImage" === i.kind ? i.name :"", "ImageStreamTag" === i.kind ? d.metadata.namespace + "/" + i.name :i.name), a.imageSourceImageStream = { +a.imageSourceOptions = a.setPickedVariables(a.imageSourceOptions, i.kind, i.namespace || d.metadata.namespace, i.name.split(":")[0], i.name.split(":")[1], "ImageStreamImage" === i.kind ? i.name :"", "ImageStreamTag" === i.kind ? d.metadata.namespace + "/" + i.name :i.name), a.imageSourceImageStream = { namespace:a.imageSourceOptions.pickedNamespace, imageStream:a.imageSourceOptions.pickedImageStream, tag:a.imageSourceOptions.pickedTag @@ -4262,16 +4262,9 @@ title:"--- None ---" })), a.buildFrom.projects = [ "openshift" ], c.list("projects", a, function(b) { var b = b.by("metadata.name"); for (var c in b) a.buildFrom.projects.push(c), a.pushTo.projects.push(c); -a.availableProjects = angular.copy(a.buildFrom.projects), a.buildFrom.projects.contains(a.builderOptions.pickedNamespace) || (a.checkNamespaceAvailability(a.builderOptions.pickedNamespace), a.buildFrom.projects.push(a.builderOptions.pickedNamespace)), a.pushTo.projects.contains(a.outputOptions.pickedNamespace) || (a.checkNamespaceAvailability(a.outputOptions.pickedNamespace), a.pushTo.projects.push(a.outputOptions.pickedNamespace)); -var d = "DockerImage" === a.builderOptions.pickedType; -a.updateBuilderImageStreams(a.builderOptions.pickedNamespace, d); -var e = "DockerImage" === a.outputOptions.pickedType; -if (a.updateOutputImageStreams(a.outputOptions.pickedNamespace, e), a.sources.images && a.sourceImage) { -a.imageSourceBuildFrom.projects = angular.copy(a.buildFrom.projects), a.imageSourceBuildFrom.projects.contains(a.imageSourceOptions.pickedNamespace) || (a.checkNamespaceAvailability(a.imageSourceOptions.pickedNamespace, "imageSource"), a.imageSourceBuildFrom.projects.push(a.imageSourceOptions.pickedNamespace)); -var f = "DockerImage" === a.imageSourceOptions.pickedType; -a.updateImageSourceImageStreams(a.imageSourceOptions.pickedNamespace, f); -} -}), a.loaded = !0, k.push(c.watchObject("buildconfigs", b.buildconfig, f, function(b, c) { +a.availableProjects = angular.copy(a.buildFrom.projects), a.buildFrom.projects.contains(a.builderOptions.pickedNamespace) || (a.checkNamespaceAvailability(a.builderOptions.pickedNamespace), a.buildFrom.projects.push(a.builderOptions.pickedNamespace)), a.pushTo.projects.contains(a.outputOptions.pickedNamespace) || (a.checkNamespaceAvailability(a.outputOptions.pickedNamespace), a.pushTo.projects.push(a.outputOptions.pickedNamespace)), "ImageStreamTag" === a.builderOptions.pickedType && a.updateBuilderImageStreams(a.builderOptions.pickedNamespace, !1), "ImageStreamTag" === a.outputOptions.pickedType && a.updateOutputImageStreams(a.outputOptions.pickedNamespace, !1), a.sources.images && a.sourceImage && (a.imageSourceBuildFrom.projects = angular.copy(a.buildFrom.projects), a.imageSourceBuildFrom.projects.contains(a.imageSourceOptions.pickedNamespace) || (a.checkNamespaceAvailability(a.imageSourceOptions.pickedNamespace), a.imageSourceBuildFrom.projects.push(a.imageSourceOptions.pickedNamespace)), +"ImageStreamTag" === a.imageSourceOptions.pickedType && a.updateImageSourceImageStreams(a.imageSourceOptions.pickedNamespace, !1)), a.loaded = !0; +}), k.push(c.watchObject("buildconfigs", b.buildconfig, f, function(b, c) { "DELETED" === c && (a.alerts.deleted = { type:"warning", message:"This build configuration has been deleted." @@ -4326,7 +4319,7 @@ namespace:b }, function(c) { a.imageSourceBuildFrom.imageStreams = [], a.imageSourceBuildFrom.tags = {}; var e = c.by("metadata.name"); -_.isEmpty(e) ? b === a.outputImageStream.namespace ? (a.imageSourceBuildFrom.imageStreams.push(a.imageSourceImageStream.imageStream), a.imageSourceOptions.pickedImageStream = a.imageSourceImageStream.imageStream, a.imageSourceBuildFrom.tags[a.imageSourceImageStream.imageStream] = [ a.imageSourceImageStream.tag ], a.imageSourceOptions.pickedTag = a.imageSourceImageStream.tag) :(a.imageSourceOptions.pickedImageStream = "", a.imageSourceOptions.pickedTag = "") :(Object.keys(e).contains(a.imageSourceBuildFrom.imageStream) || b !== a.imageSourceBuildFrom.namespace || (a.imageSourceBuildFrom.imageStreams.push(a.imageSourceImageStream.imageStream), a.imageSourceOptions.pickedImageStream = a.imageSourceImageStream.imageStream, a.imageSourceBuildFrom.tags[a.imageSourceImageStream.imageStream] = [ a.imageSourceImageStream.tag ], a.imageSourceOptions.pickedTag = a.imageSourceImageStream.tag), angular.forEach(e, function(c, d) { +_.isEmpty(e) ? b !== a.outputImageStream.namespace || d ? (a.imageSourceOptions.pickedImageStream = "", a.imageSourceOptions.pickedTag = "") :(a.imageSourceBuildFrom.imageStreams.push(a.imageSourceImageStream.imageStream), a.imageSourceOptions.pickedImageStream = a.imageSourceImageStream.imageStream, a.imageSourceBuildFrom.tags[a.imageSourceImageStream.imageStream] = [ a.imageSourceImageStream.tag ], a.imageSourceOptions.pickedTag = a.imageSourceImageStream.tag) :(_.has(e, a.imageSourceBuildFrom.imageStream) || b !== a.imageSourceBuildFrom.namespace || d || (a.imageSourceBuildFrom.imageStreams.push(a.imageSourceImageStream.imageStream), a.imageSourceOptions.pickedImageStream = a.imageSourceImageStream.imageStream, a.imageSourceBuildFrom.tags[a.imageSourceImageStream.imageStream] = [ a.imageSourceImageStream.tag ], a.imageSourceOptions.pickedTag = a.imageSourceImageStream.tag), angular.forEach(e, function(c, d) { var e = []; c.status.tags && c.status.tags.forEach(function(a) { e.push(a.tag); @@ -4339,7 +4332,7 @@ namespace:b }, function(c) { a.buildFrom.imageStreams = [], a.buildFrom.tags = {}; var e = c.by("metadata.name"); -_.isEmpty(e) ? b === a.builderImageStream.namespace ? (a.buildFrom.imageStreams.push(a.builderImageStream.imageStream), a.builderOptions.pickedImageStream = a.builderImageStream.imageStream, a.buildFrom.tags[a.builderImageStream.imageStream] = [ a.builderImageStream.tag ], a.builderOptions.pickedTag = a.builderImageStream.tag) :(a.builderOptions.pickedImageStream = "", a.builderOptions.pickedTag = "") :(Object.keys(e).contains(a.builderImageStream.imageStream) || b !== a.builderImageStream.namespace || "" === a.imageSourceOptions.ImageStream || (a.buildFrom.imageStreams.push(a.builderImageStream.imageStream), a.builderOptions.pickedImageStream = a.builderImageStream.imageStream, a.buildFrom.tags[a.builderImageStream.imageStream] = [ a.builderImageStream.tag ], a.builderOptions.pickedTag = a.builderImageStream.tag), angular.forEach(e, function(c, d) { +_.isEmpty(e) ? b !== a.builderImageStream.namespace || d ? (a.builderOptions.pickedImageStream = "", a.builderOptions.pickedTag = "") :(a.buildFrom.imageStreams.push(a.builderImageStream.imageStream), a.builderOptions.pickedImageStream = a.builderImageStream.imageStream, a.buildFrom.tags[a.builderImageStream.imageStream] = [ a.builderImageStream.tag ], a.builderOptions.pickedTag = a.builderImageStream.tag) :(_.has(e, a.builderImageStream.imageStream) || b !== a.builderImageStream.namespace || d || (a.buildFrom.imageStreams.push(a.builderImageStream.imageStream), a.builderOptions.pickedImageStream = a.builderImageStream.imageStream, a.buildFrom.tags[a.builderImageStream.imageStream] = [ a.builderImageStream.tag ], a.builderOptions.pickedTag = a.builderImageStream.tag), angular.forEach(e, function(c, d) { var e = []; c.status.tags && c.status.tags.forEach(function(a) { e.push(a.tag); @@ -4352,7 +4345,7 @@ namespace:b }, function(c) { a.pushTo.imageStreams = [], a.pushTo.tags = {}; var e = c.by("metadata.name"); -_.isEmpty(e) ? b === a.outputImageStream.namespace ? (a.pushTo.imageStreams.push(a.outputImageStream.imageStream), a.outputOptions.pickedImageStream = a.outputImageStream.imageStream, a.outputOptions.pickedTag = a.outputImageStream.tag) :(a.outputOptions.pickedImageStream = "", a.outputOptions.pickedTag = "") :(Object.keys(e).contains(a.outputImageStream.imageStream) || b !== a.outputImageStream.namespace || (a.pushTo.imageStreams.push(a.outputImageStream.imageStream), a.outputOptions.pickedImageStream = a.outputImageStream.imageStream, a.outputOptions.pickedTag = a.outputImageStream.tag), angular.forEach(e, function(b, c) { +_.isEmpty(e) ? b !== a.outputImageStream.namespace || d ? (a.outputOptions.pickedImageStream = "", a.outputOptions.pickedTag = "") :(a.pushTo.imageStreams.push(a.outputImageStream.imageStream), a.outputOptions.pickedImageStream = a.outputImageStream.imageStream, a.outputOptions.pickedTag = a.outputImageStream.tag) :(_.has(e, a.outputImageStream.imageStream) || b !== a.outputImageStream.namespace || d || (a.pushTo.imageStreams.push(a.outputImageStream.imageStream), a.outputOptions.pickedImageStream = a.outputImageStream.imageStream, a.outputOptions.pickedTag = a.outputImageStream.tag), angular.forEach(e, function(b, c) { var d = []; b.status.tags && b.status.tags.forEach(function(a) { d.push(a.tag);