From 9e5fe7f5c68f0a7f375fb8c5ea683d402198a85f Mon Sep 17 00:00:00 2001 From: chris meyers Date: Sun, 23 Feb 2020 11:13:19 -0500 Subject: [PATCH] translate Instance hostname to safe analytics name * More robust translation of Instance hostname to analytics safe name by replacing all non-alpha numeric characters with _ --- awx/main/analytics/broadcast_websocket.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/awx/main/analytics/broadcast_websocket.py b/awx/main/analytics/broadcast_websocket.py index 5485e439c7..2b087b3dff 100644 --- a/awx/main/analytics/broadcast_websocket.py +++ b/awx/main/analytics/broadcast_websocket.py @@ -3,6 +3,7 @@ import asyncio import logging import aioredis import redis +import re from prometheus_client import ( generate_latest, @@ -106,8 +107,8 @@ class BroadcastWebsocketStats(): self._registry = CollectorRegistry() # TODO: More robust replacement - self.name = self._local_hostname.replace('-', '_') - self.remote_name = self._remote_hostname.replace('-', '_') + self.name = self.safe_name(self._local_hostname) + self.remote_name = self.safe_name(self._remote_hostname) self._messages_received_total = Counter(f'awx_{self.remote_name}_messages_received_total', 'Number of messages received, to be forwarded, by the broadcast websocket system', @@ -128,6 +129,10 @@ class BroadcastWebsocketStats(): registry=self._registry) self._internal_messages_received_per_minute = FixedSlidingWindow() + def safe_name(self, s): + # Replace all non alpha-numeric characters with _ + return re.sub('[^0-9a-zA-Z]+', '_', s) + def unregister(self): self._registry.unregister(f'awx_{self.remote_name}_messages_received') self._registry.unregister(f'awx_{self.remote_name}_connection')