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 _
This commit is contained in:
chris meyers 2020-02-23 11:13:19 -05:00 committed by Ryan Petrello
parent 093d204d19
commit 9e5fe7f5c6
No known key found for this signature in database
GPG Key ID: F2AA5F2122351777

View File

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