From ad1764c7f234e1357b59b08b388021c7ac105e55 Mon Sep 17 00:00:00 2001 From: gconsidine Date: Fri, 9 Feb 2018 16:01:29 -0500 Subject: [PATCH] Add ws subscription to job results --- .../features/output/index.controller.js | 4 ++ awx/ui/client/features/output/index.js | 52 ++++++++++++++++--- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/awx/ui/client/features/output/index.controller.js b/awx/ui/client/features/output/index.controller.js index 305f0dd8d9..0e1a76b65a 100644 --- a/awx/ui/client/features/output/index.controller.js +++ b/awx/ui/client/features/output/index.controller.js @@ -5,6 +5,7 @@ let vm; let ansi; let resource; let related; +let socket; let container; let $timeout; let $sce; @@ -40,6 +41,7 @@ const TIME_EVENTS = [ function JobsIndexController ( _resource_, + _socket_, _$sce_, _$timeout_, _$scope_, @@ -52,6 +54,7 @@ function JobsIndexController ( $scope = _$scope_; $q = _$q_; resource = _resource_; + socket = _socket_; ansi = new Ansi(); related = getRelated(); @@ -611,6 +614,7 @@ function scrollPageDown () { JobsIndexController.$inject = [ 'resource', + 'socket', '$sce', '$timeout', '$scope', diff --git a/awx/ui/client/features/output/index.js b/awx/ui/client/features/output/index.js index 7c082c1c0e..4d395b17a9 100644 --- a/awx/ui/client/features/output/index.js +++ b/awx/ui/client/features/output/index.js @@ -54,13 +54,38 @@ function resolveResource (Job, ProjectUpdate, AdHocCommand, SystemJob, WorkflowJ }); } -function JobsRun ($stateExtender, strings) { - $stateExtender.addState({ +function resolveSocket (SocketService, $stateParams) { + const { id } = $stateParams; + const { type } = $stateParams; + + // TODO: accommodate other result types (management, scm_update, etc) + const state = { + data: { + socket: { + groups: { + jobs: ['status_changed', 'summary'], + job_events: [] + } + } + } + }; + + SocketService.addStateResolve(state, id); + + return SocketService; +} + +function resolveBreadcrumb (strings) { + return { + label: strings.get('state.TITLE') + }; +} + +function JobsRun ($stateRegistry) { + const state = { name: 'jobz', + url: '/jobz/:type/:id', route: '/jobz/:type/:id', - ncyBreadcrumb: { - label: strings.get('state.TITLE') - }, data: { activityStream: true, activityStreamTarget: 'jobs' @@ -81,12 +106,23 @@ function JobsRun ($stateExtender, strings) { 'WorkflowJobModel', '$stateParams', resolveResource + ], + ncyBreadcrumb: [ + 'JobsStrings', + resolveBreadcrumb + ], + socket: [ + 'SocketService', + '$stateParams', + resolveSocket ] - } - }); + }, + }; + + $stateRegistry.register(state); } -JobsRun.$inject = ['$stateExtender', 'JobsStrings']; +JobsRun.$inject = ['$stateRegistry']; angular .module(MODULE_NAME, [