From 093d204d198e18af28db89a841bd60237f801cfe Mon Sep 17 00:00:00 2001 From: chris meyers Date: Fri, 21 Feb 2020 15:36:27 -0500 Subject: [PATCH] fix flake8 --- awx/api/views/metrics.py | 1 + awx/main/analytics/broadcast_websocket.py | 18 ++++++----------- awx/main/consumers.py | 18 +++-------------- awx/main/dispatch/__init__.py | 6 +++--- awx/main/dispatch/control.py | 1 - awx/main/dispatch/publish.py | 4 +--- awx/main/dispatch/worker/base.py | 1 - .../management/commands/run_dispatcher.py | 2 +- awx/main/queue.py | 1 - awx/main/routing.py | 1 - awx/main/wsbroadcast.py | 20 +++++++------------ awxkit/awxkit/ws.py | 3 --- 12 files changed, 22 insertions(+), 54 deletions(-) diff --git a/awx/api/views/metrics.py b/awx/api/views/metrics.py index 64948e6bd1..cc6a3e3994 100644 --- a/awx/api/views/metrics.py +++ b/awx/api/views/metrics.py @@ -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' diff --git a/awx/main/analytics/broadcast_websocket.py b/awx/main/analytics/broadcast_websocket.py index 08596eb5b6..5485e439c7 100644 --- a/awx/main/analytics/broadcast_websocket.py +++ b/awx/main/analytics/broadcast_websocket.py @@ -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 diff --git a/awx/main/consumers.py b/awx/main/consumers.py index 07ee6e042c..a14322cb1f 100644 --- a/awx/main/consumers.py +++ b/awx/main/consumers.py @@ -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 diff --git a/awx/main/dispatch/__init__.py b/awx/main/dispatch/__init__.py index d97919dada..841f9344ae 100644 --- a/awx/main/dispatch/__init__.py +++ b/awx/main/dispatch/__init__.py @@ -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) diff --git a/awx/main/dispatch/control.py b/awx/main/dispatch/control.py index 684cdae806..4565df17f5 100644 --- a/awx/main/dispatch/control.py +++ b/awx/main/dispatch/control.py @@ -1,5 +1,4 @@ import logging -import socket import string import random import json diff --git a/awx/main/dispatch/publish.py b/awx/main/dispatch/publish.py index 02fca647f6..020e7407cd 100644 --- a/awx/main/dispatch/publish.py +++ b/awx/main/dispatch/publish.py @@ -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') diff --git a/awx/main/dispatch/worker/base.py b/awx/main/dispatch/worker/base.py index 674892a7b5..ef6270ff90 100644 --- a/awx/main/dispatch/worker/base.py +++ b/awx/main/dispatch/worker/base.py @@ -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 diff --git a/awx/main/management/commands/run_dispatcher.py b/awx/main/management/commands/run_dispatcher.py index c6d4bc71dc..5f7db4f106 100644 --- a/awx/main/management/commands/run_dispatcher.py +++ b/awx/main/management/commands/run_dispatcher.py @@ -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 diff --git a/awx/main/queue.py b/awx/main/queue.py index 38bea6fc2c..762879fd2c 100644 --- a/awx/main/queue.py +++ b/awx/main/queue.py @@ -4,7 +4,6 @@ # Python import json import logging -import os import redis # Django diff --git a/awx/main/routing.py b/awx/main/routing.py index 1efb6159d3..090634cbb8 100644 --- a/awx/main/routing.py +++ b/awx/main/routing.py @@ -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 diff --git a/awx/main/wsbroadcast.py b/awx/main/wsbroadcast.py index f7171a8627..fefcc99682 100644 --- a/awx/main/wsbroadcast.py +++ b/awx/main/wsbroadcast.py @@ -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)) diff --git a/awxkit/awxkit/ws.py b/awxkit/awxkit/ws.py index ea34410b9a..486fd5dc4a 100644 --- a/awxkit/awxkit/ws.py +++ b/awxkit/awxkit/ws.py @@ -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.