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;