diff --git a/awx/ui/client/src/job-detail/job-detail.route.js b/awx/ui/client/src/job-detail/job-detail.route.js index 274f8f46a4..c989d06ba4 100644 --- a/awx/ui/client/src/job-detail/job-detail.route.js +++ b/awx/ui/client/src/job-detail/job-detail.route.js @@ -15,8 +15,8 @@ export default { }, socket: { "groups":{ - "jobs": ["status_changed", "summary"] - // "job_events": `[${stateParams.id}]` + "jobs": ["status_changed", "summary"], + "job_events": [] } }, templateUrl: templateUrl('job-detail/job-detail'), diff --git a/awx/ui/client/src/portal-mode/portal-mode.route.js b/awx/ui/client/src/portal-mode/portal-mode.route.js index c0f7e5f3fb..788148dd52 100644 --- a/awx/ui/client/src/portal-mode/portal-mode.route.js +++ b/awx/ui/client/src/portal-mode/portal-mode.route.js @@ -9,6 +9,11 @@ export default { url: '/portal', ncyBreadcrumb: { label: "MY VIEW" + }, + socket: { + "groups":{ + "jobs": ["status_changed"] + } }, views: { // the empty parent ui-view diff --git a/awx/ui/client/src/shared/socket/socket.service.js b/awx/ui/client/src/shared/socket/socket.service.js index 7f26060f72..efa4d0bbee 100644 --- a/awx/ui/client/src/shared/socket/socket.service.js +++ b/awx/ui/client/src/shared/socket/socket.service.js @@ -10,36 +10,31 @@ export default return { init: function() { var self = this, - // token = Authorization.getToken(), host = window.location.host, url = "ws://" + host + "/websocket/"; if (!$rootScope.sessionTimer || ($rootScope.sessionTimer && !$rootScope.sessionTimer.isExpired())) { // We have a valid session token, so attempt socket connection $log.debug('Socket connecting to: ' + url); + self.socket = new ReconnectingWebSocket(url, null, { - debug: true, + // debug: true, timeoutInterval: 3000, maxReconnectAttempts: 10 }); + self.socket.onopen = function () { - console.log('websocket connected'); //log errors + $log.debug("Websocket connection opened"); $rootScope.socketPromise.resolve(); }; - // - // self.socket.onerror = function (error) { - // console.log('Error Logged: ' + error); //log errors - // }; + + self.socket.onerror = function (error) { + $log.debug('Error Logged: ' + error); //log errors + }; + self.socket.onmessage = function (e) { - console.log('Received From Server: ' + e.data); + $log.debug('Received From Server: ' + e.data); var data = JSON.parse(e.data); - // {'groups': - // {'jobs': ['status_changed', 'summary'], - // 'schedules': ['changed'], - // 'ad_hoc_command_events': [ids,], - // 'job_events': [ids,], - // 'control': ['limit_reached'], - // } - // } + if(data.group_name==="jobs"){ if (!('status' in data)){ @@ -107,40 +102,6 @@ export default console.log(state.name); this.emit(JSON.stringify(state.socket)); }, - // subscribe: function(toState, toParams){ - // if(toState.name === 'dashboard'){ - // this.emit('{"groups":{"jobs": ["status_changed"]}}'); - // console.log(toState.name); - // } - // if(toState.name === 'jobDetail'){ - // this.emit(`{"groups":{"jobs": ["status_changed", "summary"] , "job_events":[${toParams.id}]}}`); - // console.log(toState.name); - // } - // if(toState.name === 'jobStdout'){ - // this.emit('{"groups":{"jobs": ["status_changed"]}}'); - // console.log(toState.name); - // } - // if(toState.name === 'jobs'){ - // this.emit('{"groups":{"jobs": ["status_changed"] , "schedules": ["changed"]}}'); - // console.log(toState.name); - // } - // if(toState.name === 'portalMode'){ - // this.emit('{"groups":{"jobs": ["status_changed"]}}'); - // console.log(toState.name); - // } - // if(toState.name === 'projects'){ - // this.emit('{"groups":{"jobs": ["status_changed"]}}'); - // console.log(toState.name); - // } - // if(toState.name === 'inventoryManage'){ - // this.emit('{"groups":{"jobs": ["status_changed"]}}'); - // console.log(toState.name); - // } - // if(toState.name === 'adHocJobStdout'){ - // this.emit(`{"groups":{"jobs": ["status_changed"] , "ad_hoc_command_events": [${toParams.id}]}}`); - // console.log(toState.name); - // } - // }, checkStatus: function() { function getSocketTip(status) { @@ -176,22 +137,9 @@ export default } }, - // on: function (eventName, callback) { - // var self = this; - // if(self){ - // if(self.socket){ - // // self.socket.onmessage(function (e) { - // // var args = arguments; - // // self.scope.$apply(function () { - // // callback.apply(self.socket, args); - // // }); - // // }); - // } - // } - // - // }, emit: function (eventName, data, callback) { var self = this; + $log.debug('Sent to Server: ' + data); $rootScope.socketPromise.promise.then(function(){ self.socket.send(eventName, data, function () { var args = arguments; diff --git a/awx/ui/client/src/shared/stateExtender.provider.js b/awx/ui/client/src/shared/stateExtender.provider.js index e38a8f7d3f..320853876c 100644 --- a/awx/ui/client/src/shared/stateExtender.provider.js +++ b/awx/ui/client/src/shared/stateExtender.provider.js @@ -6,14 +6,19 @@ export default function($stateProvider) { if(!state.resolve){ state.resolve = {}; } - state.resolve.socket = ['SocketService', '$rootScope', - function(SocketService, $rootScope) { - // var self = this; + state.resolve.socket = ['SocketService', '$rootScope', '$stateParams', + function(SocketService, $rootScope, $stateParams) { $rootScope.socketPromise.promise.then(function(){ + if(state.socket.groups.hasOwnProperty( "job_events")){ + state.socket.groups.job_events = [$stateParams.id]; + } + if(state.socket.groups.hasOwnProperty( "ad_hoc_command_events")){ + state.socket.groups.job_events = [$stateParams.id]; + } SocketService.subscribe2(state); return true; }); - }] + }]; }, addState: function(state) { diff --git a/awx/ui/client/src/standard-out/adhoc/standard-out-adhoc.route.js b/awx/ui/client/src/standard-out/adhoc/standard-out-adhoc.route.js index 0df5cd54af..1b7d546231 100644 --- a/awx/ui/client/src/standard-out/adhoc/standard-out-adhoc.route.js +++ b/awx/ui/client/src/standard-out/adhoc/standard-out-adhoc.route.js @@ -11,6 +11,12 @@ export default { route: '/ad_hoc_commands/:id', templateUrl: templateUrl('standard-out/adhoc/standard-out-adhoc'), controller: 'JobStdoutController', + socket: { + "groups":{ + "jobs": ["status_changed"], + "ad_hoc_command_events": [] + } + }, ncyBreadcrumb: { parent: "jobs", label: "{{ job.module_name }}" diff --git a/awx/ui/client/src/standard-out/inventory-sync/standard-out-inventory-sync.route.js b/awx/ui/client/src/standard-out/inventory-sync/standard-out-inventory-sync.route.js index e9bfe68f63..3cff062144 100644 --- a/awx/ui/client/src/standard-out/inventory-sync/standard-out-inventory-sync.route.js +++ b/awx/ui/client/src/standard-out/inventory-sync/standard-out-inventory-sync.route.js @@ -13,17 +13,16 @@ export default { route: '/inventory_sync/:id', templateUrl: templateUrl('standard-out/inventory-sync/standard-out-inventory-sync'), controller: 'JobStdoutController', + socket: { + "groups":{ + "jobs": ["status_changed"] + } + }, ncyBreadcrumb: { parent: "jobs", label: "{{ inventory_source_name }}" }, data: { jobType: 'inventory_updates' - }, - resolve: { - inventorySyncSocket: [function() { - // TODO: determine whether or not we have socket support for inventory sync standard out - return true; - }] } }; diff --git a/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.route.js b/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.route.js index d98a2bd1d4..c93cbd7a92 100644 --- a/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.route.js +++ b/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.route.js @@ -11,17 +11,16 @@ export default { route: '/management_jobs/:id', templateUrl: templateUrl('standard-out/management-jobs/standard-out-management-jobs'), controller: 'JobStdoutController', + socket: { + "groups":{ + "jobs": ["status_changed"] + } + }, ncyBreadcrumb: { parent: "jobs", label: "{{ job.name }}" }, data: { jobType: 'system_jobs' - }, - resolve: { - managementJobSocket: [function() { - // TODO: determine whether or not we have socket support for management job standard out - return true; - }] } }; diff --git a/awx/ui/client/src/standard-out/scm-update/standard-out-scm-update.route.js b/awx/ui/client/src/standard-out/scm-update/standard-out-scm-update.route.js index 9d399f05a9..d027050444 100644 --- a/awx/ui/client/src/standard-out/scm-update/standard-out-scm-update.route.js +++ b/awx/ui/client/src/standard-out/scm-update/standard-out-scm-update.route.js @@ -17,13 +17,12 @@ export default { parent: "jobs", label: "{{ project_name }}" }, + socket: { + "groups":{ + "jobs": ["status_changed"] + } + }, data: { jobType: 'project_updates' - }, - resolve: { - scmUpdateSocket: [function() { - // TODO: determine whether or not we have socket support for scm update standard out - return true; - }] } };