merger/executor: configure source connections only.

The sql reporter doesn't not need to be enabled on the merger
or the executor since it will fail if only the zuul scheduler host
is authorized to connect to the sql database.

Change-Id: I453754052b75de3d4fac266dc73921c7ce9c075f
changes/06/466506/3
Tristan Cacqueray 5 years ago
parent 9e958254bb
commit bad3b1276c
  1. 4
      zuul/cmd/__init__.py
  2. 2
      zuul/cmd/executor.py
  3. 2
      zuul/cmd/merger.py
  4. 10
      zuul/lib/connections.py

@ -98,6 +98,6 @@ class ZuulApp(object):
else:
logging.basicConfig(level=logging.DEBUG)
def configure_connections(self):
def configure_connections(self, source_only=False):
self.connections = zuul.lib.connections.ConnectionRegistry()
self.connections.configure(self.config)
self.connections.configure(self.config, source_only)

@ -106,7 +106,7 @@ def main():
server.send_command(server.args.command)
sys.exit(0)
server.configure_connections()
server.configure_connections(source_only=True)
if server.config.has_option('executor', 'pidfile'):
pid_fn = os.path.expanduser(server.config.get('executor', 'pidfile'))

@ -77,7 +77,7 @@ def main():
server.parse_arguments()
server.read_config()
server.configure_connections()
server.configure_connections(source_only=True)
if server.config.has_option('zuul', 'state_dir'):
state_dir = os.path.expanduser(server.config.get('zuul', 'state_dir'))

@ -23,6 +23,7 @@ import zuul.driver.smtp
import zuul.driver.timer
import zuul.driver.sql
from zuul.connection import BaseConnection
from zuul.driver import SourceInterface
class DefaultConnection(BaseConnection):
@ -78,7 +79,7 @@ class ConnectionRegistry(object):
for driver in self.drivers.values():
driver.stop()
def configure(self, config):
def configure(self, config, source_only=False):
# Register connections from the config
connections = {}
@ -100,6 +101,13 @@ class ConnectionRegistry(object):
% (con_config['driver'], con_name))
driver = self.drivers[con_driver]
# The merger and the reporter only needs source driver.
# This makes sure Reporter like the SQLDriver are only created by
# the scheduler process
if source_only and not issubclass(driver, SourceInterface):
continue
connection = driver.getConnection(con_name, con_config)
connections[con_name] = connection

Loading…
Cancel
Save