mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 01:57:35 -03:30
fix flake8
This commit is contained in:
parent
e25bd931a1
commit
093d204d19
@ -41,6 +41,7 @@ class MetricsView(APIView):
|
||||
return Response(metrics().decode('UTF-8'))
|
||||
raise PermissionDenied()
|
||||
|
||||
|
||||
class BroadcastWebsocketMetricsView(APIView):
|
||||
name = _('Broadcast Websockets')
|
||||
swagger_topic = 'Broadcast Websockets'
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import datetime
|
||||
import os
|
||||
import asyncio
|
||||
import logging
|
||||
import json
|
||||
import aioredis
|
||||
import redis
|
||||
|
||||
@ -11,10 +9,7 @@ from prometheus_client import (
|
||||
Gauge,
|
||||
Counter,
|
||||
Enum,
|
||||
Histogram,
|
||||
Enum,
|
||||
CollectorRegistry,
|
||||
parser,
|
||||
)
|
||||
|
||||
from django.conf import settings
|
||||
@ -50,7 +45,7 @@ class FixedSlidingWindow():
|
||||
del self.buckets[k]
|
||||
|
||||
def record(self, ts=datetime.datetime.now()):
|
||||
now_bucket = int((ts-datetime.datetime(1970,1,1)).total_seconds())
|
||||
now_bucket = int((ts - datetime.datetime(1970,1,1)).total_seconds())
|
||||
|
||||
val = self.buckets.get(now_bucket, 0)
|
||||
self.buckets[now_bucket] = val + 1
|
||||
@ -118,15 +113,15 @@ class BroadcastWebsocketStats():
|
||||
'Number of messages received, to be forwarded, by the broadcast websocket system',
|
||||
registry=self._registry)
|
||||
self._messages_received = Gauge(f'awx_{self.remote_name}_messages_received',
|
||||
'Number of messages received, to be forwarded, by the broadcast websocket system, for the duration of the current connection',
|
||||
'Number forwarded messages received by the broadcast websocket system, for the duration of the current connection',
|
||||
registry=self._registry)
|
||||
self._connection = Enum(f'awx_{self.remote_name}_connection',
|
||||
'Websocket broadcast connection',
|
||||
states=['disconnected', 'connected'],
|
||||
registry=self._registry)
|
||||
'Websocket broadcast connection',
|
||||
states=['disconnected', 'connected'],
|
||||
registry=self._registry)
|
||||
self._connection_start = Gauge(f'awx_{self.remote_name}_connection_start',
|
||||
'Time the connection was established',
|
||||
registry=self._registry)
|
||||
registry=self._registry)
|
||||
|
||||
self._messages_received_per_minute = Gauge(f'awx_{self.remote_name}_messages_received_per_minute',
|
||||
'Messages received per minute',
|
||||
@ -160,6 +155,5 @@ class BroadcastWebsocketStats():
|
||||
def serialize(self):
|
||||
self.render()
|
||||
|
||||
data = {}
|
||||
registry_data = generate_latest(self._registry).decode('UTF-8')
|
||||
return registry_data
|
||||
|
||||
@ -1,15 +1,9 @@
|
||||
|
||||
import os
|
||||
import json
|
||||
import logging
|
||||
import codecs
|
||||
import datetime
|
||||
import hmac
|
||||
import asyncio
|
||||
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.encoding import smart_str
|
||||
from django.http.cookie import parse_cookie
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import force_bytes
|
||||
@ -19,8 +13,6 @@ from channels.generic.websocket import AsyncJsonWebsocketConsumer
|
||||
from channels.layers import get_channel_layer
|
||||
from channels.db import database_sync_to_async
|
||||
|
||||
from asgiref.sync import async_to_sync
|
||||
|
||||
|
||||
logger = logging.getLogger('awx.main.consumers')
|
||||
XRF_KEY = '_auth_user_xrf'
|
||||
@ -37,7 +29,7 @@ class WebsocketSecretAuthHelper:
|
||||
|
||||
@classmethod
|
||||
def construct_secret(cls):
|
||||
nonce_serialized = "{}".format(int((datetime.datetime.utcnow()-datetime.datetime.fromtimestamp(0)).total_seconds()))
|
||||
nonce_serialized = "{}".format(int((datetime.datetime.utcnow() - datetime.datetime.fromtimestamp(0)).total_seconds()))
|
||||
payload_dict = {
|
||||
'secret': settings.BROADCAST_WEBSOCKET_SECRET,
|
||||
'nonce': nonce_serialized
|
||||
@ -53,8 +45,6 @@ class WebsocketSecretAuthHelper:
|
||||
|
||||
@classmethod
|
||||
def verify_secret(cls, s, nonce_tolerance=300):
|
||||
hex_decoder = codecs.getdecoder("hex_codec")
|
||||
|
||||
try:
|
||||
(prefix, payload) = s.split(' ')
|
||||
if prefix != 'HMAC-SHA256':
|
||||
@ -82,7 +72,7 @@ class WebsocketSecretAuthHelper:
|
||||
# Avoid timing attack and check the nonce after all the heavy lifting
|
||||
now = datetime.datetime.utcnow()
|
||||
nonce_parsed = datetime.datetime.fromtimestamp(int(nonce_parsed))
|
||||
if (now-nonce_parsed).total_seconds() > nonce_tolerance:
|
||||
if (now - nonce_parsed).total_seconds() > nonce_tolerance:
|
||||
raise ValueError("Potential replay attack or machine(s) time out of sync.")
|
||||
|
||||
return True
|
||||
@ -160,9 +150,7 @@ class EventConsumer(AsyncJsonWebsocketConsumer):
|
||||
XRF_KEY not in self.scope["session"] or
|
||||
xrftoken != self.scope["session"][XRF_KEY]
|
||||
):
|
||||
logger.error(
|
||||
"access denied to channel, XRF mismatch for {}".format(user.username)
|
||||
)
|
||||
logger.error(f"access denied to channel, XRF mismatch for {user.username}")
|
||||
await self.send_json({"error": "access denied to channel"})
|
||||
return
|
||||
|
||||
|
||||
@ -73,9 +73,9 @@ class PubSub(object):
|
||||
def pg_bus_conn():
|
||||
conf = settings.DATABASES['default']
|
||||
conn = psycopg2.connect(dbname=conf['NAME'],
|
||||
host=conf['HOST'],
|
||||
user=conf['USER'],
|
||||
password=conf['PASSWORD'])
|
||||
host=conf['HOST'],
|
||||
user=conf['USER'],
|
||||
password=conf['PASSWORD'])
|
||||
# Django connection.cursor().connection doesn't have autocommit=True on
|
||||
conn.set_session(autocommit=True)
|
||||
pubsub = PubSub(conn)
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import logging
|
||||
import socket
|
||||
import string
|
||||
import random
|
||||
import json
|
||||
|
||||
@ -2,13 +2,11 @@ import inspect
|
||||
import logging
|
||||
import sys
|
||||
import json
|
||||
import re
|
||||
from uuid import uuid4
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import connection
|
||||
|
||||
from . import pg_bus_conn, get_local_queuename
|
||||
from . import pg_bus_conn
|
||||
|
||||
logger = logging.getLogger('awx.main.dispatch')
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@ import signal
|
||||
import sys
|
||||
import redis
|
||||
import json
|
||||
import re
|
||||
import psycopg2
|
||||
from uuid import UUID
|
||||
from queue import Empty as QueueEmpty
|
||||
|
||||
@ -5,7 +5,7 @@ import logging
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache as django_cache
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db import connection as django_connection, connections
|
||||
from django.db import connection as django_connection
|
||||
|
||||
from awx.main.utils.handlers import AWXProxyHandler
|
||||
from awx.main.dispatch import get_local_queuename, reaper
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
# Python
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import redis
|
||||
|
||||
# Django
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
from django.urls import re_path
|
||||
from django.conf.urls import url
|
||||
from channels.auth import AuthMiddlewareStack
|
||||
from channels.routing import ProtocolTypeRouter, URLRouter
|
||||
|
||||
@ -1,18 +1,12 @@
|
||||
|
||||
import os
|
||||
import json
|
||||
import logging
|
||||
import asyncio
|
||||
import datetime
|
||||
import sys
|
||||
|
||||
import aiohttp
|
||||
from aiohttp import client_exceptions
|
||||
|
||||
from channels_redis.core import RedisChannelLayer
|
||||
from channels.layers import get_channel_layer
|
||||
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.conf import settings
|
||||
from django.apps import apps
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
@ -57,10 +51,10 @@ class WebsocketTask():
|
||||
event_loop,
|
||||
stats: BroadcastWebsocketStats,
|
||||
remote_host: str,
|
||||
remote_port: int=settings.BROADCAST_WEBSOCKET_PORT,
|
||||
protocol: str=settings.BROADCAST_WEBSOCKET_PROTOCOL,
|
||||
verify_ssl: bool=settings.BROADCAST_WEBSOCKET_VERIFY_CERT,
|
||||
endpoint: str='broadcast'):
|
||||
remote_port: int = settings.BROADCAST_WEBSOCKET_PORT,
|
||||
protocol: str = settings.BROADCAST_WEBSOCKET_PROTOCOL,
|
||||
verify_ssl: bool = settings.BROADCAST_WEBSOCKET_VERIFY_CERT,
|
||||
endpoint: str = 'broadcast'):
|
||||
self.name = name
|
||||
self.event_loop = event_loop
|
||||
self.stats = stats
|
||||
@ -112,16 +106,16 @@ class WebsocketTask():
|
||||
except client_exceptions.ClientConnectorError as e:
|
||||
logger.warn(f"Failed to connect to {self.remote_host}: '{e}'. Reconnecting ...")
|
||||
self.stats.record_connection_lost()
|
||||
self.start(attempt=attempt+1)
|
||||
self.start(attempt=attempt + 1)
|
||||
except asyncio.TimeoutError:
|
||||
logger.warn(f"Timeout while trying to connect to {self.remote_host}. Reconnecting ...")
|
||||
self.stats.record_connection_lost()
|
||||
self.start(attempt=attempt+1)
|
||||
self.start(attempt=attempt + 1)
|
||||
except Exception as e:
|
||||
# Early on, this is our canary. I'm not sure what exceptions we can really encounter.
|
||||
logger.warn(f"Websocket broadcast client exception {type(e)} {e}")
|
||||
self.stats.record_connection_lost()
|
||||
self.start(attempt=attempt+1)
|
||||
self.start(attempt=attempt + 1)
|
||||
|
||||
def start(self, attempt=0):
|
||||
self.async_task = self.event_loop.create_task(self.connect(attempt=attempt))
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
import time
|
||||
import threading
|
||||
import logging
|
||||
import atexit
|
||||
import json
|
||||
import ssl
|
||||
from datetime import datetime
|
||||
|
||||
from six.moves.queue import Queue, Empty
|
||||
from six.moves.urllib.parse import urlparse
|
||||
@ -187,7 +185,6 @@ class WSClient(object):
|
||||
self._send(json.dumps(payload))
|
||||
|
||||
def unsubscribe(self, wait=True, timeout=10):
|
||||
time_start = datetime.now()
|
||||
if wait:
|
||||
# Other unnsubscribe events could have caused the edge to trigger.
|
||||
# This way the _next_ event will trigger our waiting.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user