adding socket coverage to child states

so that child states won't unsubscribe the parent from any groups
This commit is contained in:
Jared Tabor 2016-09-14 14:49:18 -07:00
parent 37b2b01e02
commit e0a566cdea
26 changed files with 153 additions and 25 deletions

View File

@ -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);
};

View File

@ -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) {

View File

@ -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');
}

View File

@ -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) {

View File

@ -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',

View File

@ -23,5 +23,10 @@ export default {
},
ncyBreadcrumb: {
label: "RUN COMMAND"
},
socket: {
"groups":{
"jobs": ["status_changed"]
}
}
};

View File

@ -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'),

View File

@ -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();

View File

@ -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,

View File

@ -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,

View File

@ -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": []
}
}
};

View File

@ -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, {

View File

@ -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;
}

View File

@ -14,6 +14,12 @@ export default {
"jobs": ["status_changed"]
}
},
socket: {
"groups":{
"jobs": ["status_changed", "summary"],
"job_events": []
}
},
views:{
'host-summary': {
controller: 'HostSummaryController',

View File

@ -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');

View File

@ -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"

View File

@ -14,6 +14,11 @@ export default {
data: {
activityStreamId: 'id'
},
socket:{
"groups":{
"jobs": ["status_changed"]
}
},
ncyBreadcrumb: {
parent: 'jobTemplates',
label: "{{name}}"

View File

@ -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();
}

View File

@ -17,5 +17,10 @@ export default {
},
ncyBreadcrumb: {
label: "JOB TEMPLATES"
},
socket:{
"groups":{
"jobs": ["status_changed"]
}
}
};

View File

@ -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) {

View File

@ -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) {

View File

@ -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"]
}
}
},
{

View File

@ -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');
});

View File

@ -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;

View File

@ -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') {

View File

@ -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;
}