mirror of
https://github.com/ansible/awx.git
synced 2024-11-02 01:21:21 +03:00
Small updates to the event triggers and javascript to show individual endpoints
This commit is contained in:
parent
ca42694a13
commit
c793ff0d95
@ -9,7 +9,7 @@ import json
|
||||
import signal
|
||||
import time
|
||||
from optparse import make_option
|
||||
from multiprocessing import Process
|
||||
from threading import Thread
|
||||
|
||||
# Django
|
||||
from django.conf import settings
|
||||
@ -27,6 +27,7 @@ from awx.main.models import *
|
||||
import zmq
|
||||
|
||||
# gevent & socketio
|
||||
import gevent
|
||||
from socketio import socketio_manage
|
||||
from socketio.server import SocketIOServer
|
||||
from socketio.namespace import BaseNamespace
|
||||
@ -35,19 +36,17 @@ class TestNamespace(BaseNamespace):
|
||||
|
||||
def recv_connect(self):
|
||||
print("Received client connect for test namespace from %s" % str(self.environ['REMOTE_ADDR']))
|
||||
self.emit('connect', True)
|
||||
self.emit('test', "If you see this then you are connected to the test socket endpoint")
|
||||
|
||||
class JobNamespace(BaseNamespace):
|
||||
|
||||
def recv_connect(self):
|
||||
print("Received client connect for job namespace from %s" % str(self.environ['REMOTE_ADDR']))
|
||||
self.emit('connect', True)
|
||||
|
||||
class JobEventNamespace(BaseNamespace):
|
||||
|
||||
def recv_connect(self):
|
||||
print("Received client connect for job event namespace from %s" % str(self.environ['REMOTE_ADDR']))
|
||||
self.emit('connect', True)
|
||||
|
||||
class TowerSocket(object):
|
||||
|
||||
@ -55,9 +54,9 @@ class TowerSocket(object):
|
||||
path = environ['PATH_INFO'].strip('/') or 'index.html'
|
||||
print path
|
||||
if path.startswith('socket.io'):
|
||||
socketio_manage(environ, {'/socket.io/test': TestNamespace})
|
||||
socketio_manage(environ, {'/socket.io/jobs': JobNamespace})
|
||||
socketio_manage(environ, {'/socket.io/job_events': JobEventNamespace})
|
||||
socketio_manage(environ, {'/socket.io/test': TestNamespace,
|
||||
'/socket.io/jobs': JobNamespace,
|
||||
'/socket.io/job_events': JobEventNamespace})
|
||||
else:
|
||||
start_response('404 Not Found', [])
|
||||
return ['<h1>Not Found</h1>']
|
||||
@ -111,7 +110,12 @@ class Command(NoArgsCommand):
|
||||
else:
|
||||
print 'Listening on port http://0.0.0.0:' + str(socketio_listen_port)
|
||||
server = SocketIOServer(('0.0.0.0', socketio_listen_port), TowerSocket(), resource='socket.io')
|
||||
gevent.spawn(notification_handler, socketio_notification_port, server)
|
||||
|
||||
#gevent.spawn(notification_handler, socketio_notification_port, server)
|
||||
handler_thread = Thread(target=notification_handler, args = (socketio_notification_port, server,))
|
||||
handler_thread.daemon = True
|
||||
handler_thread.start()
|
||||
|
||||
server.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
@ -8,19 +8,34 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
function SocketsController ($scope, ClearScope, Socket) {
|
||||
function SocketsController ($scope, $compile, ClearScope, Socket) {
|
||||
|
||||
ClearScope();
|
||||
|
||||
var socket = Socket({ scope: $scope });
|
||||
socket.init(); //make the connection
|
||||
var test_scope = $scope.$new(),
|
||||
jobs_scope = $scope.$new(),
|
||||
job_events_scope = $scope.$new();
|
||||
|
||||
$scope.messages = ['Stuff happened', 'message received', 'blah blah bob blah'];
|
||||
var test_socket = Socket({ scope: test_scope, endpoint: "test" }),
|
||||
jobs_socket = Socket({ scope: jobs_scope, endpoint: "jobs" }),
|
||||
job_events_socket = Socket({ scope: job_events_scope, endpoint: "job_events" });
|
||||
|
||||
socket.on('anything', function(data) {
|
||||
$scope.messages.push(data);
|
||||
var test_element = angular.element(document.getElementById('test_url'));
|
||||
$compile(test_element)(test_scope);
|
||||
var jobs_element = angular.element(document.getElementById("jobs_url"));
|
||||
$compile(jobs_element)(jobs_scope);
|
||||
var job_events_element = angular.element(document.getElementById("job_events_url"));
|
||||
$compile(job_events_element)(job_events_scope);
|
||||
|
||||
test_socket.init();
|
||||
jobs_socket.init();
|
||||
job_events_socket.init();
|
||||
|
||||
test_scope.messages = ['Message Displayed Before Connection'];
|
||||
|
||||
test_socket.on('test', function(data) {
|
||||
test_scope.messages.push(data);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
SocketsController.$inject = [ '$scope', 'ClearScope', 'Socket'];
|
||||
SocketsController.$inject = [ '$scope', '$compile', 'ClearScope', 'Socket'];
|
||||
|
@ -16,8 +16,9 @@ angular.module('SocketIO', ['AuthService', 'Utilities'])
|
||||
return function(params) {
|
||||
var scope = params.scope,
|
||||
host = $location.host(),
|
||||
endpoint = params.endpoint,
|
||||
protocol = $location.protocol(),
|
||||
url = protocol + '://' + host + ':8080';
|
||||
url = protocol + '://' + host + ':8080/socket.io/' + endpoint;
|
||||
|
||||
if (scope.removeSocketErrorEncountered) {
|
||||
scope.removeSocketErrorEncountered();
|
||||
|
@ -1,11 +1,34 @@
|
||||
<div class="tab-pane" id="sockets">
|
||||
<div ng-cloak id="htmlTemplate">
|
||||
<div id="test_url">
|
||||
<div class="alert alert-info"><strong>Socket url</strong>: {{ socket_url }} <strong>Status:</strong> {{ socket_status }} {{ socket_reason }}</div>
|
||||
<div class="well">
|
||||
<h5>Received Messages:</h5>
|
||||
<h5>Received Test Messages:</h5>
|
||||
<ul>
|
||||
<li>{{messages}}</li>
|
||||
<li ng-repeat="message in messages">{{ message }} </li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="jobs_url">
|
||||
<div class="alert alert-info"><strong>Socket url</strong>: {{ socket_url }} <strong>Status:</strong> {{ socket_status }} {{ socket_reason }}</div>
|
||||
<div class="well">
|
||||
<h5>Received Jobs Messages:</h5>
|
||||
<ul>
|
||||
<li ng-repeat="message in messages">{{ message }} </li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="job_events_url">
|
||||
<div class="alert alert-info"><strong>Socket url</strong>: {{ socket_url }} <strong>Status:</strong> {{ socket_status }} {{ socket_reason }}</div>
|
||||
<div class="well">
|
||||
<h5>Received Job Event Messages:</h5>
|
||||
<ul>
|
||||
<li ng-repeat="message in messages">{{ message }} </li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user