diff --git a/awx/ui/client/src/instance-groups/capacity-adjuster/capacity-adjuster.directive.js b/awx/ui/client/src/instance-groups/capacity-adjuster/capacity-adjuster.directive.js
index cc7d634b88..5600502578 100644
--- a/awx/ui/client/src/instance-groups/capacity-adjuster/capacity-adjuster.directive.js
+++ b/awx/ui/client/src/instance-groups/capacity-adjuster/capacity-adjuster.directive.js
@@ -1,4 +1,4 @@
-function CapacityAdjuster (templateUrl) {
+function CapacityAdjuster (templateUrl, ProcessErrors, Wait) {
return {
scope: {
state: '='
@@ -23,6 +23,7 @@ function CapacityAdjuster (templateUrl) {
const vm = this || {};
vm.slide = (state) => {
+ Wait('start');
const data = {
"capacity_adjustment": `${state.capacity_adjustment}`
};
@@ -31,7 +32,16 @@ function CapacityAdjuster (templateUrl) {
url: state.url,
data
};
- $http(req);
+ $http(req)
+ .catch(({data, status}) => {
+ ProcessErrors(data, status, null, {
+ hdr: 'Error!',
+ msg: 'Call failed. Return status: ' + status
+ });
+ })
+ .finally(() => {
+ Wait('stop');
+ });
};
},
controllerAs: 'vm'
@@ -39,7 +49,9 @@ function CapacityAdjuster (templateUrl) {
}
CapacityAdjuster.$inject = [
- 'templateUrl'
+ 'templateUrl',
+ 'ProcessErrors',
+ 'Wait'
];
export default CapacityAdjuster;
\ No newline at end of file
diff --git a/awx/ui/client/src/instance-groups/instances/instance-jobs/instance-jobs.controller.js b/awx/ui/client/src/instance-groups/instances/instance-jobs/instance-jobs.controller.js
index a5a050a8c4..492c256e1d 100644
--- a/awx/ui/client/src/instance-groups/instances/instance-jobs/instance-jobs.controller.js
+++ b/awx/ui/client/src/instance-groups/instances/instance-jobs/instance-jobs.controller.js
@@ -1,7 +1,8 @@
-function InstanceJobsController ($scope, $filter, $state, model, strings, jobStrings) {
+function InstanceJobsController ($scope, $filter, $state, model, strings, jobStrings, Instance) {
const vm = this || {};
- const { instance } = model;
+ let { instance } = model;
+ const instance_id = instance.get('id');
init();
@@ -62,6 +63,17 @@ function InstanceJobsController ($scope, $filter, $state, model, strings, jobStr
}
};
+ $scope.$on('ws-jobs', () => {
+ new Instance(['get', 'options'], [instance_id, instance_id])
+ .then((data) => {
+ return data.extend('get', 'jobs', {params: {page_size: "10", order_by: "-finished"}});
+ })
+ .then((data) => {
+ instance = data;
+ init();
+ });
+ });
+
}
InstanceJobsController.$inject = [
@@ -70,7 +82,8 @@ InstanceJobsController.$inject = [
'$state',
'resolvedModels',
'InstanceGroupsStrings',
- 'JobStrings'
+ 'JobStrings',
+ 'InstanceModel'
];
export default InstanceJobsController;
\ No newline at end of file
diff --git a/awx/ui/client/src/instance-groups/instances/instance-modal.controller.js b/awx/ui/client/src/instance-groups/instances/instance-modal.controller.js
index 09d80f47f7..4d492c65b8 100644
--- a/awx/ui/client/src/instance-groups/instances/instance-modal.controller.js
+++ b/awx/ui/client/src/instance-groups/instances/instance-modal.controller.js
@@ -1,4 +1,4 @@
-function InstanceModalController ($scope, $state, models, strings, ProcessErrors) {
+function InstanceModalController ($scope, $state, models, strings, ProcessErrors, Wait) {
const { instance, instanceGroup } = models;
const vm = this || {};
@@ -39,6 +39,7 @@ function InstanceModalController ($scope, $state, models, strings, ProcessErrors
}, true);
vm.submit = () => {
+ Wait('start');
const associate = vm.selectedRows
.map(instance => ({id: instance.id}));
const disassociate = vm.deselectedRows
@@ -60,6 +61,9 @@ function InstanceModalController ($scope, $state, models, strings, ProcessErrors
hdr: 'Error!',
msg: 'Call failed. Return status: ' + status
});
+ })
+ .finally(() => {
+ Wait('stop');
});
};
@@ -73,7 +77,8 @@ InstanceModalController.$inject = [
'$state',
'resolvedModels',
'InstanceGroupsStrings',
- 'ProcessErrors'
+ 'ProcessErrors',
+ 'Wait'
];
export default InstanceModalController;
diff --git a/awx/ui/client/src/instance-groups/instances/instances-list.partial.html b/awx/ui/client/src/instance-groups/instances/instances-list.partial.html
index 93bcb005b3..a75448dc22 100644
--- a/awx/ui/client/src/instance-groups/instances/instances-list.partial.html
+++ b/awx/ui/client/src/instance-groups/instances/instances-list.partial.html
@@ -14,10 +14,10 @@
diff --git a/awx/ui/client/src/instance-groups/instances/instances.controller.js b/awx/ui/client/src/instance-groups/instances/instances.controller.js
index 5fc70fee6a..26d6ef3e71 100644
--- a/awx/ui/client/src/instance-groups/instances/instances.controller.js
+++ b/awx/ui/client/src/instance-groups/instances/instances.controller.js
@@ -10,15 +10,25 @@ function InstancesController ($scope, $state, $http, models, Instance, strings,
function init() {
$scope.list = {
+ name: 'instances',
iterator: 'instance',
- name: 'instances'
+ basePath: `/api/v2/instance_groups/${vm.instance_group_id}/instances/`
};
+
$scope.collection = {
- basepath: 'instances',
- iterator: 'instance'
+ iterator: 'instance',
+ basePath: `/api/v2/instance_groups/${vm.instance_group_id}/instances/`
};
+
$scope[`${$scope.list.iterator}_dataset`] = Dataset.data;
$scope[$scope.list.name] = $scope[`${$scope.list.iterator}_dataset`].results;
+ $scope.instances = vm.instances;
+
+ $scope.$on('updateDataset', function(e, dataset) {
+ $scope[`${$scope.list.iterator}_dataset`] = dataset;
+ $scope[$scope.list.name] = dataset.results;
+ vm.instances = dataset.results;
+ });
}
vm.tab = {
@@ -42,6 +52,7 @@ function InstancesController ($scope, $state, $http, models, Instance, strings,
instance.enabled = !instance.enabled;
const data = {
+ "capacity_adjustment": instance.capacity_adjustment,
"enabled": instance.enabled
};
diff --git a/awx/ui/client/src/instance-groups/jobs/jobs-list.partial.html b/awx/ui/client/src/instance-groups/jobs/jobs-list.partial.html
index d0d8dd236b..8fdea7b2da 100644
--- a/awx/ui/client/src/instance-groups/jobs/jobs-list.partial.html
+++ b/awx/ui/client/src/instance-groups/jobs/jobs-list.partial.html
@@ -27,11 +27,8 @@
ng-class="{'at-Row--active': (job.id === vm.activeId)}"
job-id="{{ job.id }}">
diff --git a/awx/ui/client/src/instance-groups/jobs/jobs.controller.js b/awx/ui/client/src/instance-groups/jobs/jobs.controller.js
index b62d3e502c..0b54a962b8 100644
--- a/awx/ui/client/src/instance-groups/jobs/jobs.controller.js
+++ b/awx/ui/client/src/instance-groups/jobs/jobs.controller.js
@@ -1,12 +1,12 @@
-function InstanceGroupJobsController ($scope, $filter, $state, model, strings, jobStrings) {
+function InstanceGroupJobsController ($scope, $filter, $state, model, strings, jobStrings, InstanceGroup) {
const vm = this || {};
- const { instanceGroup } = model;
+ let { instanceGroup } = model;
+ const instance_group_id = instanceGroup.get('id');
init();
function init(){
- const instance_group_id = instanceGroup.get('id');
vm.strings = strings;
vm.jobStrings = jobStrings;
vm.queryset = { page_size: '10', order_by: '-finished', instance_group_id: instance_group_id };
@@ -72,8 +72,19 @@ function InstanceGroupJobsController ($scope, $filter, $state, model, strings, j
goTojobResults('workflowResults');
break;
}
-
};
+
+ $scope.$on('ws-jobs', () => {
+ new InstanceGroup(['get', 'options'], [instance_group_id, instance_group_id])
+ .then((instance_group) => {
+ return instance_group.extend('get', 'jobs', {params: {page_size: "10", order_by: "-finished"}});
+ })
+ .then((instance_group) => {
+ instanceGroup = instance_group;
+ init();
+ });
+ });
+
}
InstanceGroupJobsController.$inject = [
@@ -82,7 +93,8 @@ InstanceGroupJobsController.$inject = [
'$state',
'resolvedModels',
'InstanceGroupsStrings',
- 'JobStrings'
+ 'JobStrings',
+ 'InstanceGroupModel'
];
export default InstanceGroupJobsController;
\ No newline at end of file
diff --git a/awx/ui/client/src/instance-groups/list/instance-groups-list.controller.js b/awx/ui/client/src/instance-groups/list/instance-groups-list.controller.js
index 9a57a23a23..1660b0b0da 100644
--- a/awx/ui/client/src/instance-groups/list/instance-groups-list.controller.js
+++ b/awx/ui/client/src/instance-groups/list/instance-groups-list.controller.js
@@ -1,27 +1,40 @@
-export default ['$scope', 'InstanceGroupList', 'resolvedModels', 'Dataset', '$state', 'ComponentsStrings', 'ProcessErrors',
- function($scope, InstanceGroupList, resolvedModels, Dataset, $state, strings, ProcessErrors) {
- const list = InstanceGroupList;
+export default ['$scope', 'resolvedModels', 'Dataset', '$state', 'ComponentsStrings', 'ProcessErrors', 'Wait',
+ function($scope, resolvedModels, Dataset, $state, strings, ProcessErrors, Wait) {
const vm = this;
const { instanceGroup } = resolvedModels;
vm.strings = strings;
+ $scope.selection = {};
init();
function init(){
- $scope.list = list;
- $scope[`${list.iterator}_dataset`] = Dataset.data;
- $scope[list.name] = $scope[`${list.iterator}_dataset`].results;
- $scope.instanceGroupCount = Dataset.data.count;
- }
+ $scope.list = {
+ iterator: 'instance_group',
+ name: 'instance_groups'
+ };
- $scope.selection = {};
+ $scope.collection = {
+ basePath: 'instance_groups',
+ iterator: 'instance_group'
+ };
+
+ $scope[`${$scope.list.iterator}_dataset`] = Dataset.data;
+ $scope[$scope.list.name] = $scope[`${$scope.list.iterator}_dataset`].results;
+ $scope.instanceGroupCount = Dataset.data.count;
+
+ $scope.$on('updateDataset', function(e, dataset) {
+ $scope[`${$scope.list.iterator}_dataset`] = dataset;
+ $scope[$scope.list.name] = dataset.results;
+ });
+ }
$scope.$watch('$state.params.instance_group_id', () => {
vm.activeId = parseInt($state.params.instance_group_id);
});
vm.delete = () => {
+ Wait('start');
let deletables = $scope.selection;
deletables = Object.keys(deletables).filter((n) => deletables[n]);
@@ -33,6 +46,9 @@ export default ['$scope', 'InstanceGroupList', 'resolvedModels', 'Dataset', '$st
hdr: 'Error!',
msg: 'Call failed. Return status: ' + status
});
+ })
+ .finally(() => {
+ Wait('stop');
});
});
};
diff --git a/awx/ui/client/src/instance-groups/main.js b/awx/ui/client/src/instance-groups/main.js
index 1578656bde..f241df97cb 100644
--- a/awx/ui/client/src/instance-groups/main.js
+++ b/awx/ui/client/src/instance-groups/main.js
@@ -278,6 +278,13 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) {
dynamic: true
},
},
+ data: {
+ socket: {
+ "groups": {
+ "jobs": ["status_changed"],
+ }
+ }
+ },
resolvedModels: InstanceGroupsResolve
});
@@ -297,6 +304,13 @@ function InstanceGroupsRun ($stateExtender, strings, ComponentsStrings) {
dynamic: true
}
},
+ data: {
+ socket: {
+ "groups": {
+ "jobs": ["status_changed"],
+ }
+ }
+ },
views: {
'jobs@instanceGroups': {
templateUrl: JobsTemplate,