mirror of
https://github.com/ansible/awx.git
synced 2026-01-23 07:28:02 -03:30
adding socket coverage to child states
so that child states won't unsubscribe the parent from any groups
This commit is contained in:
parent
37b2b01e02
commit
e0a566cdea
@ -624,6 +624,11 @@ var tower = angular.module('Tower', [
|
||||
ncyBreadcrumb: {
|
||||
parent: "projects",
|
||||
label: "CREATE PROJECT"
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -638,6 +643,11 @@ var tower = angular.module('Tower', [
|
||||
ncyBreadcrumb: {
|
||||
parent: 'projects',
|
||||
label: '{{name}}'
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -654,6 +664,7 @@ var tower = angular.module('Tower', [
|
||||
templateUrl: urlPrefix + 'partials/projects.html',
|
||||
controller: OrganizationsAdd
|
||||
});
|
||||
|
||||
$rootScope.addPermission = function(scope) {
|
||||
$compile("<add-permissions class='AddPermissions'></add-permissions>")(scope);
|
||||
};
|
||||
|
||||
@ -28,7 +28,7 @@ export function Home($scope, $compile, $stateParams, $rootScope, $location, $log
|
||||
|
||||
var dataCount = 0;
|
||||
|
||||
$rootScope.$on('dashboard-jobs', function () {
|
||||
$rootScope.$on('ws-dashboard-jobs', function () {
|
||||
Rest.setUrl(GetBasePath('dashboard'));
|
||||
Rest.get()
|
||||
.success(function (data) {
|
||||
|
||||
@ -113,14 +113,14 @@ export function JobsListController ($rootScope, $log, $scope, $compile, $statePa
|
||||
if ($rootScope.removeJobStatusChange) {
|
||||
$rootScope.removeJobStatusChange();
|
||||
}
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on('jobs-jobs', function() {
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on('ws-jobs-jobs', function() {
|
||||
$scope.refreshJobs();
|
||||
});
|
||||
|
||||
if ($rootScope.removeScheduleStatusChange) {
|
||||
$rootScope.removeScheduleStatusChange();
|
||||
}
|
||||
$rootScope.removeScheduleStatusChange = $rootScope.$on('jobs-schedules', function() {
|
||||
$rootScope.removeScheduleStatusChange = $rootScope.$on('ws-jobs-schedules', function() {
|
||||
if (api_complete) {
|
||||
scheduled_scope.search('schedule');
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ export function ProjectsList ($scope, $rootScope, $location, $log, $stateParams,
|
||||
if ($rootScope.removeJobStatusChange) {
|
||||
$rootScope.removeJobStatusChange();
|
||||
}
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on(`${$state.current.name}-jobs`, function(e, data) {
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function(e, data) {
|
||||
var project;
|
||||
$log.debug(data);
|
||||
if ($scope.projects) {
|
||||
|
||||
@ -58,7 +58,7 @@ function JobStatusGraphData(Rest, getBasePath, processErrors, $rootScope, $q) {
|
||||
destroyWatcher: angular.noop,
|
||||
setupWatcher: function(period, jobType) {
|
||||
this.destroyWatcher =
|
||||
$rootScope.$on('dashboard-jobs', function() {
|
||||
$rootScope.$on('ws-dashboard-jobs', function() {
|
||||
getData(period, jobType).then(function(result) {
|
||||
$rootScope.
|
||||
$broadcast('DataReceived:JobStatusGraph',
|
||||
|
||||
@ -23,5 +23,10 @@ export default {
|
||||
},
|
||||
ncyBreadcrumb: {
|
||||
label: "RUN COMMAND"
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -22,6 +22,11 @@ var copyMoveGroup = {
|
||||
return GroupManageService.get({id: $stateParams.group_id}).then(res => res.data.results[0]);
|
||||
}]
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
views: {
|
||||
'form@inventoryManage' : {
|
||||
controller: CopyMoveGroupsController,
|
||||
@ -40,6 +45,11 @@ var copyMoveHost = {
|
||||
return HostManageService.get({id: $stateParams.host_id}).then(res => res.data.results[0]);
|
||||
}]
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
views: {
|
||||
'form@inventoryManage': {
|
||||
templateUrl: templateUrl('inventories/manage/copy-move/copy-move'),
|
||||
|
||||
@ -104,7 +104,7 @@
|
||||
if ($rootScope.inventoryManageStatus) {
|
||||
$rootScope.inventoryManageStatus();
|
||||
}
|
||||
$rootScope.inventoryManageStatus = $rootScope.$on(`${$state.current.name}-jobs`, function(e, data){
|
||||
$rootScope.inventoryManageStatus = $rootScope.$on(`ws-${$state.current.name}-jobs`, function(e, data){
|
||||
var group = Find({ list: $scope.groups, key: 'id', val: data.group_id });
|
||||
if(data.status === 'failed' || data.status === 'successful'){
|
||||
$state.reload();
|
||||
|
||||
@ -16,6 +16,11 @@ var ManageGroupsEdit = {
|
||||
data: {
|
||||
mode: 'edit'
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
resolve: {
|
||||
groupData: ['$stateParams', 'GroupManageService', function($stateParams, GroupManageService){
|
||||
return GroupManageService.get({id: $stateParams.group_id}).then(res => res.data.results[0]);
|
||||
@ -41,6 +46,11 @@ var ManageGroupsAdd = {
|
||||
data: {
|
||||
mode: 'add'
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
views: {
|
||||
'form@inventoryManage': {
|
||||
controller: addController,
|
||||
|
||||
@ -23,6 +23,11 @@ var ManageHostsEdit = {
|
||||
});
|
||||
}]
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
views: {
|
||||
'form@inventoryManage': {
|
||||
controller: editController,
|
||||
@ -40,6 +45,11 @@ var ManageHostsAdd = {
|
||||
data: {
|
||||
mode: 'add'
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
views: {
|
||||
'form@inventoryManage': {
|
||||
controller: addController,
|
||||
|
||||
@ -22,6 +22,12 @@ var hostEventModal = {
|
||||
return JobDetailService.getJobEventChildren($stateParams.taskId).then(res => res.data.results);
|
||||
}]
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
},
|
||||
onExit: function() {
|
||||
// close the modal
|
||||
// using an onExit event to handle cases where the user navs away using the url bar / back and not modal "X"
|
||||
@ -36,28 +42,52 @@ var hostEventModal = {
|
||||
name: 'jobDetail.host-event.details',
|
||||
url: '/details',
|
||||
controller: 'HostEventController',
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-details')
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-details'),
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var hostEventJson = {
|
||||
name: 'jobDetail.host-event.json',
|
||||
url: '/json',
|
||||
controller: 'HostEventController',
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-codemirror')
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-codemirror'),
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var hostEventStdout = {
|
||||
name: 'jobDetail.host-event.stdout',
|
||||
url: '/stdout',
|
||||
controller: 'HostEventController',
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-codemirror')
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-codemirror'),
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var hostEventStderr = {
|
||||
name: 'jobDetail.host-event.stderr',
|
||||
url: '/stderr',
|
||||
controller: 'HostEventController',
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-codemirror')
|
||||
templateUrl: templateUrl('job-detail/host-event/host-event-codemirror'),
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -22,6 +22,12 @@ export default {
|
||||
$('.modal-backdrop').remove();
|
||||
$('body').removeClass('modal-open');
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
},
|
||||
resolve: {
|
||||
hosts: ['JobDetailService','$stateParams', function(JobDetailService, $stateParams) {
|
||||
return JobDetailService.getRelatedJobEvents($stateParams.id, {
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
}
|
||||
// emitted by the API in the same function used to persist host summary data
|
||||
// JobEvent.update_host_summary_from_stats() from /awx/main.models.jobs.py
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on('JobSummaryComplete', function(e, data) {
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on('ws-JobSummaryComplete', function(e, data) {
|
||||
// discard socket msgs we don't care about in this context
|
||||
if (parseInt($stateParams.id) === data.unified_job_id){
|
||||
init();
|
||||
@ -63,7 +63,7 @@
|
||||
if ($rootScope.removeJobSummaryComplete) {
|
||||
$rootScope.removeJobSummaryComplete();
|
||||
}
|
||||
$rootScope.removeJobSummaryComplete = $rootScope.$on('jobDetail-jobs', function(e, data) {
|
||||
$rootScope.removeJobSummaryComplete = $rootScope.$on('ws-jobDetail-jobs', function(e, data) {
|
||||
if (parseInt($stateParams.id) === data.unified_job_id){
|
||||
$scope.status = data.status;
|
||||
}
|
||||
|
||||
@ -14,6 +14,12 @@ export default {
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed", "summary"],
|
||||
"job_events": []
|
||||
}
|
||||
},
|
||||
views:{
|
||||
'host-summary': {
|
||||
controller: 'HostSummaryController',
|
||||
|
||||
@ -201,7 +201,7 @@ export default
|
||||
if ($rootScope.removeJobEventChange) {
|
||||
$rootScope.removeJobEventChange();
|
||||
}
|
||||
$rootScope.removeJobEventChange = $rootScope.$on(`${$state.current.name}-job_events-${job_id}`, function(e, data) {
|
||||
$rootScope.removeJobEventChange = $rootScope.$on(`ws-${$state.current.name}-job_events-${job_id}`, function(e, data) {
|
||||
// update elapsed time on each event received
|
||||
scope.job_status.elapsed = GetElapsed({
|
||||
start: scope.job.created,
|
||||
@ -225,7 +225,7 @@ export default
|
||||
if ($rootScope.removeJobStatusChange) {
|
||||
$rootScope.removeJobStatusChange();
|
||||
}
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on(`${$state.current.name}-jobs`, function(e, data) {
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function(e, data) {
|
||||
// if we receive a status change event for the current job indicating the job
|
||||
// is finished, stop event queue processing and reload
|
||||
if (parseInt(data.unified_job_id, 10) === parseInt(job_id,10)) {
|
||||
@ -242,7 +242,7 @@ export default
|
||||
if ($rootScope.removeJobSummaryComplete) {
|
||||
$rootScope.removeJobSummaryComplete();
|
||||
}
|
||||
$rootScope.removeJobSummaryComplete = $rootScope.$on('JobSummaryComplete', function() {
|
||||
$rootScope.removeJobSummaryComplete = $rootScope.$on('ws-JobSummaryComplete', function() {
|
||||
// the job host summary should now be available from the API
|
||||
$log.debug('Trigging reload of job_host_summaries');
|
||||
scope.$emit('InitialLoadComplete');
|
||||
|
||||
@ -15,6 +15,11 @@ export default {
|
||||
parent: "jobTemplates",
|
||||
label: "CREATE JOB TEMPLATE"
|
||||
},
|
||||
socket:{
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
onExit: function(){
|
||||
// close the survey maker modal
|
||||
// using an onExit event to handle cases where the user navs away using the url bar / back and not modal "X"
|
||||
|
||||
@ -14,6 +14,11 @@ export default {
|
||||
data: {
|
||||
activityStreamId: 'id'
|
||||
},
|
||||
socket:{
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
},
|
||||
ncyBreadcrumb: {
|
||||
parent: 'jobTemplates',
|
||||
label: "{{name}}"
|
||||
|
||||
@ -37,6 +37,14 @@ export default
|
||||
view.inject(list, { mode: mode, scope: $scope });
|
||||
$rootScope.flashMessage = null;
|
||||
|
||||
|
||||
if ($rootScope.JobStatusChange) {
|
||||
$rootScope.JobStatusChange();
|
||||
}
|
||||
$rootScope.JobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function (e, data) {
|
||||
$scope.search(list.iterator);
|
||||
});
|
||||
|
||||
if ($scope.removePostRefresh) {
|
||||
$scope.removePostRefresh();
|
||||
}
|
||||
|
||||
@ -17,5 +17,10 @@ export default {
|
||||
},
|
||||
ncyBreadcrumb: {
|
||||
label: "JOB TEMPLATES"
|
||||
},
|
||||
socket:{
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -21,6 +21,13 @@ export default ['$scope', '$rootScope', '$location', '$log',
|
||||
generator = GenerateList,
|
||||
orgBase = GetBasePath('organizations');
|
||||
|
||||
if ($rootScope.JobStatusChange) {
|
||||
$rootScope.JobStatusChange();
|
||||
}
|
||||
$rootScope.JobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function (e, data) {
|
||||
$scope.search(list.iterator);
|
||||
});
|
||||
|
||||
Rest.setUrl(orgBase + $stateParams.organization_id);
|
||||
Rest.get()
|
||||
.success(function (data) {
|
||||
|
||||
@ -90,7 +90,7 @@ export default ['$scope', '$rootScope', '$location', '$log',
|
||||
if ($rootScope.removeJobStatusChange) {
|
||||
$rootScope.removeJobStatusChange();
|
||||
}
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on(`${$state.current.name}-jobs`, function(e, data) {
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function(e, data) {
|
||||
var project;
|
||||
$log.debug(data);
|
||||
if ($scope.projects) {
|
||||
|
||||
@ -99,6 +99,11 @@ export default [
|
||||
features: ['FeaturesService', function(FeaturesService) {
|
||||
return FeaturesService.get();
|
||||
}]
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -121,6 +126,11 @@ export default [
|
||||
features: ['FeaturesService', function(FeaturesService) {
|
||||
return FeaturesService.get();
|
||||
}]
|
||||
},
|
||||
socket: {
|
||||
"groups":{
|
||||
"jobs": ["status_changed"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -16,7 +16,7 @@ export function PortalModeJobsController($scope, $rootScope, GetBasePath, Genera
|
||||
if ($rootScope.removeJobStatusChange) {
|
||||
$rootScope.removeJobStatusChange();
|
||||
}
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on('portalMode-jobs', function() {
|
||||
$rootScope.removeJobStatusChange = $rootScope.$on('ws-portalMode-jobs', function() {
|
||||
$scope.search('job');
|
||||
});
|
||||
|
||||
|
||||
@ -41,13 +41,13 @@ export default
|
||||
// we know that this must have been a
|
||||
// summary complete message
|
||||
$log.debug('Job summary_complete ' + data.unified_job_id);
|
||||
$rootScope.$emit('JobSummaryComplete', data);
|
||||
$rootScope.$emit('ws-JobSummaryComplete', data);
|
||||
}
|
||||
else if(data.group_name==="job_events"){
|
||||
str = `${$state.current.name}-${data.group_name}-${data.job}`;
|
||||
str = `ws-${$state.current.name}-${data.group_name}-${data.job}`;
|
||||
}
|
||||
else if(data.group_name==="ad_hoc_command_events"){
|
||||
str = `${$state.current.name}-${data.group_name}-${data.ad_hoc_command}`;
|
||||
str = `ws-${$state.current.name}-${data.group_name}-${data.ad_hoc_command}`;
|
||||
}
|
||||
else if(data.group_name==="control"){
|
||||
$log.debug(data.reason);
|
||||
@ -59,7 +59,7 @@ export default
|
||||
// correct route is the route name followed by a
|
||||
// dash (-) and the group_name.
|
||||
// ex: 'jobDetail-job_events'
|
||||
str = `${$state.current.name}-${data.group_name}`;
|
||||
str = `ws-${$state.current.name}-${data.group_name}`;
|
||||
}
|
||||
$rootScope.$emit(str, data);
|
||||
return self.socket;
|
||||
|
||||
@ -22,7 +22,7 @@ export default ['$log', '$rootScope', '$scope', '$state', '$stateParams', 'Proce
|
||||
function openSockets() {
|
||||
if ($state.current.name === 'jobDetail') {
|
||||
$log.debug("socket watching on job_events-" + job_id);
|
||||
$rootScope.$on(`${$state.current.name}-job_events-${job_id}`, function() {
|
||||
$rootScope.$on(`ws-${$state.current.name}-job_events-${job_id}`, function() {
|
||||
$log.debug("socket fired on job_events-" + job_id);
|
||||
if (api_complete) {
|
||||
event_queue++;
|
||||
@ -36,7 +36,7 @@ export default ['$log', '$rootScope', '$scope', '$state', '$stateParams', 'Proce
|
||||
}
|
||||
if ($state.current.name === 'adHocJobStdout') {
|
||||
$log.debug("socket watching on ad_hoc_command_events-" + job_id);
|
||||
$rootScope.$on(`${$state.current.name}-ad_hoc_command_events-${job_id}`, function() {
|
||||
$rootScope.$on(`ws-${$state.current.name}-ad_hoc_command_events-${job_id}`, function() {
|
||||
$log.debug("socket fired on ad_hoc_command_events-" + job_id);
|
||||
if (api_complete) {
|
||||
event_queue++;
|
||||
@ -192,7 +192,7 @@ export default ['$log', '$rootScope', '$scope', '$state', '$stateParams', 'Proce
|
||||
if ($scope.removeJobStatusChange) {
|
||||
$scope.removeJobStatusChange();
|
||||
}
|
||||
$scope.removeJobStatusChange = $rootScope.$on(`${$state.current.name}-jobs`, function(e, data) {
|
||||
$scope.removeJobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function(e, data) {
|
||||
if (parseInt(data.unified_job_id, 10) === parseInt(job_id,10)) {
|
||||
if (data.status === 'failed' || data.status === 'canceled' ||
|
||||
data.status === 'error' || data.status === 'successful') {
|
||||
|
||||
@ -28,7 +28,7 @@ export function JobStdoutController ($rootScope, $scope, $state, $stateParams,
|
||||
if ($scope.removeJobStatusChange) {
|
||||
$scope.removeJobStatusChange();
|
||||
}
|
||||
$scope.removeJobStatusChange = $rootScope.$on(`${$state.current.name}-jobs`, function(e, data) {
|
||||
$scope.removeJobStatusChange = $rootScope.$on(`ws-${$state.current.name}-jobs`, function(e, data) {
|
||||
if (parseInt(data.unified_job_id, 10) === parseInt(job_id,10) && $scope.job) {
|
||||
$scope.job.status = data.status;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user