mirror of
https://github.com/ansible/awx.git
synced 2026-05-10 19:07:36 -02:30
Make db password optional for wsrelay (#15046)
* Make db password optional for wsrelay * Change DB setting copy to deepcopy safer than copy() Co-Authored-By: Jeff Bradberry <685957+jbradberry@users.noreply.github.com> --------- Co-authored-by: Jeff Bradberry <685957+jbradberry@users.noreply.github.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import psycopg
|
import psycopg
|
||||||
import select
|
import select
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
@@ -94,8 +95,8 @@ class PubSub(object):
|
|||||||
|
|
||||||
|
|
||||||
def create_listener_connection():
|
def create_listener_connection():
|
||||||
conf = settings.DATABASES['default'].copy()
|
conf = deepcopy(settings.DATABASES['default'])
|
||||||
conf['OPTIONS'] = conf.get('OPTIONS', {}).copy()
|
conf['OPTIONS'] = deepcopy(conf.get('OPTIONS', {}))
|
||||||
# Modify the application name to distinguish from other connections the process might use
|
# Modify the application name to distinguish from other connections the process might use
|
||||||
conf['OPTIONS']['application_name'] = get_application_name(settings.CLUSTER_HOST_ID, function='listener')
|
conf['OPTIONS']['application_name'] = get_application_name(settings.CLUSTER_HOST_ID, function='listener')
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import json
|
|||||||
import logging
|
import logging
|
||||||
import asyncio
|
import asyncio
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
import ipaddress
|
import ipaddress
|
||||||
|
|
||||||
@@ -302,14 +303,17 @@ class WebSocketRelayManager(object):
|
|||||||
self.stats_mgr.start()
|
self.stats_mgr.start()
|
||||||
|
|
||||||
# Set up a pg_notify consumer for allowing web nodes to "provision" and "deprovision" themselves gracefully.
|
# Set up a pg_notify consumer for allowing web nodes to "provision" and "deprovision" themselves gracefully.
|
||||||
database_conf = settings.DATABASES['default'].copy()
|
database_conf = deepcopy(settings.DATABASES['default'])
|
||||||
database_conf['OPTIONS'] = database_conf.get('OPTIONS', {}).copy()
|
database_conf['OPTIONS'] = deepcopy(database_conf.get('OPTIONS', {}))
|
||||||
|
|
||||||
for k, v in settings.LISTENER_DATABASES.get('default', {}).items():
|
for k, v in settings.LISTENER_DATABASES.get('default', {}).items():
|
||||||
database_conf[k] = v
|
database_conf[k] = v
|
||||||
for k, v in settings.LISTENER_DATABASES.get('default', {}).get('OPTIONS', {}).items():
|
for k, v in settings.LISTENER_DATABASES.get('default', {}).get('OPTIONS', {}).items():
|
||||||
database_conf['OPTIONS'][k] = v
|
database_conf['OPTIONS'][k] = v
|
||||||
|
|
||||||
|
if 'PASSWORD' in database_conf:
|
||||||
|
database_conf['OPTIONS']['password'] = database_conf.pop('PASSWORD')
|
||||||
|
|
||||||
task = None
|
task = None
|
||||||
|
|
||||||
# Establishes a websocket connection to /websocket/relay on all API servers
|
# Establishes a websocket connection to /websocket/relay on all API servers
|
||||||
@@ -320,7 +324,6 @@ class WebSocketRelayManager(object):
|
|||||||
dbname=database_conf['NAME'],
|
dbname=database_conf['NAME'],
|
||||||
host=database_conf['HOST'],
|
host=database_conf['HOST'],
|
||||||
user=database_conf['USER'],
|
user=database_conf['USER'],
|
||||||
password=database_conf['PASSWORD'],
|
|
||||||
port=database_conf['PORT'],
|
port=database_conf['PORT'],
|
||||||
**database_conf.get("OPTIONS", {}),
|
**database_conf.get("OPTIONS", {}),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user