diff --git a/awx/ui/client/src/inventories-hosts/inventories/related/sources/list/sources-list.controller.js b/awx/ui/client/src/inventories-hosts/inventories/related/sources/list/sources-list.controller.js index e0798e714d..c3b6448bfe 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/related/sources/list/sources-list.controller.js +++ b/awx/ui/client/src/inventories-hosts/inventories/related/sources/list/sources-list.controller.js @@ -117,25 +117,39 @@ $state.go('inventories.edit.inventory_sources.edit', {inventory_source_id: id}); }; $scope.deleteSource = function(inventory_source){ - var body = '
' + i18n._('Are you sure you want to permanently delete the inventory source below from the inventory?') + '
' + $filter('sanitize')(inventory_source.name) + '
'; + var body = '
' + i18n._('Are you sure you want to permanently delete the inventory source below from the inventory? Groups and hosts associated with this inventory source will be deleted as well.') + '
' + $filter('sanitize')(inventory_source.name) + '
'; var action = function(){ - delete $rootScope.promptActionBtnClass; + $rootScope.promptActionBtnClass = "Modal-errorButton--sourcesDelete"; Wait('start'); SourcesService.deleteHosts(inventory_source.id).then(() => { - SourcesService.delete(inventory_source.id).then(() => { - $('#prompt-modal').modal('hide'); - let reloadListStateParams = null; + Wait('start'); + SourcesService.deleteGroups(inventory_source.id).then(() => { + Wait('start'); + SourcesService.delete(inventory_source.id).then(() => { + $('#prompt-modal').modal('hide'); + let reloadListStateParams = null; - if($scope.inventory_sources.length === 1 && $state.params.inventory_source_search && !_.isEmpty($state.params.inventory_source_search.page) && $state.params.inventory_source_search.page !== '1') { - reloadListStateParams = _.cloneDeep($state.params); - reloadListStateParams.inventory_source_search.page = (parseInt(reloadListStateParams.inventory_source_search.page)-1).toString(); - } - if (parseInt($state.params.inventory_source_id) === inventory_source.id) { - $state.go('^', reloadListStateParams, {reload: true}); - } else { - $state.go('.', reloadListStateParams, {reload: true}); - } - Wait('stop'); + if($scope.inventory_sources.length === 1 && $state.params.inventory_source_search && !_.isEmpty($state.params.inventory_source_search.page) && $state.params.inventory_source_search.page !== '1') { + reloadListStateParams = _.cloneDeep($state.params); + reloadListStateParams.inventory_source_search.page = (parseInt(reloadListStateParams.inventory_source_search.page)-1).toString(); + } + if (parseInt($state.params.inventory_source_id) === inventory_source.id) { + $state.go('^', reloadListStateParams, {reload: true}); + } else { + $state.go('.', reloadListStateParams, {reload: true}); + } + Wait('stop'); + }) + .catch(({data, status}) => { + $('#prompt-modal').modal('hide'); + Wait('stop'); + ProcessErrors($scope, data, status, null, + { + hdr: i18n._('Error!'), + msg: i18n._('There was an error deleting inventory source. Returned status: ') + + status + }); + }); }) .catch(({data, status}) => { $('#prompt-modal').modal('hide'); @@ -143,7 +157,7 @@ ProcessErrors($scope, data, status, null, { hdr: i18n._('Error!'), - msg: i18n._('There was an error deleting inventory source. Returned status: ') + + msg: i18n._('There was an error deleting inventory source groups. Returned status: ') + status }); }); diff --git a/awx/ui/client/src/inventories-hosts/inventories/related/sources/sources.service.js b/awx/ui/client/src/inventories-hosts/inventories/related/sources/sources.service.js index 93894d7126..1d2f55054f 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/related/sources/sources.service.js +++ b/awx/ui/client/src/inventories-hosts/inventories/related/sources/sources.service.js @@ -134,13 +134,20 @@ export default } }, deleteHosts(id) { - Wait('start'); this.url = GetBasePath('inventory_sources') + id + '/hosts/'; Rest.setUrl(this.url); return Rest.destroy() .success(this.success.bind(this)) .error(this.error.bind(this)) - .finally(Wait('stop')); + .finally(); + }, + deleteGroups(id) { + this.url = GetBasePath('inventory_sources') + id + '/groups/'; + Rest.setUrl(this.url); + return Rest.destroy() + .success(this.success.bind(this)) + .error(this.error.bind(this)) + .finally(); } }; }]; diff --git a/awx/ui/client/src/shared/modal/modal.less b/awx/ui/client/src/shared/modal/modal.less index 9c741f4131..632720fec6 100644 --- a/awx/ui/client/src/shared/modal/modal.less +++ b/awx/ui/client/src/shared/modal/modal.less @@ -97,6 +97,10 @@ color: @btn-txt-sel; } +.Modal-errorButton--sourcesDelete:hover{ + cursor: not-allowed; +} + .Modal-primaryButton { background-color: @default-link; color: @default-bg;