From 311daf10b8dc9793844a5c6a3e9631cb4019659d Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Tue, 23 Apr 2019 10:39:37 -0400 Subject: [PATCH] handle insights credential lookups for projects Although most scm types correspond to an scm credential lookup, insights uses its own credential type. --- .../projects/add/projects-add.controller.js | 10 +++++++--- .../projects/edit/projects-edit.controller.js | 11 +++++++---- awx/ui/client/src/projects/main.js | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/awx/ui/client/src/projects/add/projects-add.controller.js b/awx/ui/client/src/projects/add/projects-add.controller.js index a76c80d496..bd6b5985c5 100644 --- a/awx/ui/client/src/projects/add/projects-add.controller.js +++ b/awx/ui/client/src/projects/add/projects-add.controller.js @@ -7,10 +7,10 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm', 'ProjectsForm', 'Rest', 'Alert', 'ProcessErrors', 'GetBasePath', 'GetProjectPath', 'GetChoices', 'Wait', '$state', 'CreateSelect2', 'i18n', - 'ConfigData', 'resolvedModels', 'scmCredentialType', + 'ConfigData', 'resolvedModels', 'scmCredentialType', 'insightsCredentialType', function($scope, $location, $stateParams, GenerateForm, ProjectsForm, Rest, Alert, ProcessErrors, GetBasePath, GetProjectPath, GetChoices, Wait, $state, - CreateSelect2, i18n, ConfigData, resolvedModels, scmCredentialType) { + CreateSelect2, i18n, ConfigData, resolvedModels, scmCredentialType, insightsCredentialType) { let form = ProjectsForm(), base = $location.path().replace(/^\//, '').split('/')[0], @@ -191,9 +191,13 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm', $scope.lookupCredential = function(){ // Perform a lookup on the credential_type. Git, Mercurial, and Subversion // all use SCM as their credential type. + let lookupCredentialType = scmCredentialType; + if ($scope.scm_type.value === 'insights') { + lookupCredentialType = insightsCredentialType; + } $state.go('.credential', { credential_search: { - credential_type: scmCredentialType, + credential_type: lookupCredentialType, page_size: '5', page: '1' } diff --git a/awx/ui/client/src/projects/edit/projects-edit.controller.js b/awx/ui/client/src/projects/edit/projects-edit.controller.js index 6a14d7e40b..5dd515828c 100644 --- a/awx/ui/client/src/projects/edit/projects-edit.controller.js +++ b/awx/ui/client/src/projects/edit/projects-edit.controller.js @@ -8,12 +8,12 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest', 'Alert', 'ProcessErrors', 'GenerateForm', 'Prompt', 'isNotificationAdmin', 'GetBasePath', 'GetProjectPath', 'Authorization', 'GetChoices', 'Empty', 'Wait', 'ProjectUpdate', '$state', 'CreateSelect2', 'ToggleNotification', - 'i18n', 'OrgAdminLookup', 'ConfigData', 'scmCredentialType', + 'i18n', 'OrgAdminLookup', 'ConfigData', 'scmCredentialType', 'insightsCredentialType', function($scope, $rootScope, $stateParams, ProjectsForm, Rest, Alert, ProcessErrors, GenerateForm, Prompt, isNotificationAdmin, GetBasePath, GetProjectPath, Authorization, GetChoices, Empty, Wait, ProjectUpdate, $state, CreateSelect2, ToggleNotification, i18n, OrgAdminLookup, - ConfigData, scmCredentialType) { + ConfigData, scmCredentialType, insightsCredentialType) { let form = ProjectsForm(), defaultUrl = GetBasePath('projects') + $stateParams.project_id + '/', @@ -310,10 +310,13 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest', $scope.lookupCredential = function(){ // Perform a lookup on the credential_type. Git, Mercurial, and Subversion // all use SCM as their credential type. - + let lookupCredentialType = scmCredentialType; + if ($scope.scm_type.value === 'insights') { + lookupCredentialType = insightsCredentialType; + } $state.go('.credential', { credential_search: { - credential_type: scmCredentialType, + credential_type: lookupCredentialType, page_size: '5', page: '1' } diff --git a/awx/ui/client/src/projects/main.js b/awx/ui/client/src/projects/main.js index d788f1f064..2f45552b45 100644 --- a/awx/ui/client/src/projects/main.js +++ b/awx/ui/client/src/projects/main.js @@ -36,7 +36,23 @@ function ResolveScmCredentialType (GetBasePath, Rest, ProcessErrors) { }); } +function ResolveInsightsCredentialType (GetBasePath, Rest, ProcessErrors) { + Rest.setUrl(GetBasePath('credential_types') + '?name=Insights'); + + return Rest.get() + .then(({ data }) => { + return data.results[0].id; + }) + .catch(({ data, status }) => { + ProcessErrors(null, data, status, null, { + hdr: 'Error!', + msg: 'Failed to get credential type data: ' + status + }); + }); +} + ResolveScmCredentialType.$inject = ['GetBasePath', 'Rest', 'ProcessErrors']; +ResolveInsightsCredentialType.$inject = ['GetBasePath', 'Rest', 'ProcessErrors']; export default @@ -70,6 +86,7 @@ angular.module('Projects', []) const stateIndex = res.states.findIndex(s => s.name === projectsAddName); res.states[stateIndex].resolve.scmCredentialType = ResolveScmCredentialType; + res.states[stateIndex].resolve.insightsCredentialType = ResolveInsightsCredentialType; return res; }); @@ -113,6 +130,7 @@ angular.module('Projects', []) const stateIndex = res.states.findIndex(s => s.name === projectsEditName); res.states[stateIndex].resolve.scmCredentialType = ResolveScmCredentialType; + res.states[stateIndex].resolve.insightsCredentialType = ResolveInsightsCredentialType; return res; });