Projet

Général

Profil

0001-sql-keep-createdb-connection-params-available-after-.patch

Thomas Noël, 10 juin 2017 01:40

Télécharger (3,7 ko)

Voir les différences:

Subject: [PATCH] sql: keep createdb-connection-params available after
 deployment (#16794)

 tests/test_hobo.py     |  7 +++++++
 wcs/ctl/check_hobos.py | 17 +++++++----------
 wcs/sql.py             |  2 +-
 3 files changed, 15 insertions(+), 11 deletions(-)
tests/test_hobo.py
18 18
from wcs.ctl.check_hobos import CmdCheckHobos
19 19
from wcs.publisher import WcsPublisher
20 20
from wcs import fields
21
from wcs import sql
21 22

  
22 23
HOBO_JSON = {
23 24
  'services': [
......
408 409
            assert call.call_args[0][0][1:] == ['convert-to-sql',
409 410
                    '--dbname', 'tests_wcs_wcs_example_net',
410 411
                    '--user', 'fred', 'wcs.example.net']
412

  
413
    pub.reload_cfg()
414
    assert 'createdb-connection-params' in pub.cfg['postgresql']
415
    with mock.patch('psycopg2.connect') as connect:
416
        sql.get_connection(new=True)
417
        assert connect.call_args_list[0][1] == {'user': 'fred', 'database': 'tests_wcs_wcs_example_net'}
wcs/ctl/check_hobos.py
399 399
            if not domain_table_name in database_name:
400 400
                database_name = '%s_%s' % (database_name.split('_')[0], domain_table_name)
401 401

  
402
        postgresql_cfg = {}
403
        for k, v in pub.cfg['postgresql'].items():
404
            if v and isinstance(v, basestring):
405
                postgresql_cfg[k] = v
406

  
407 402
        createdb_cfg = pub.cfg['postgresql'].get('createdb-connection-params')
408 403
        if not createdb_cfg:
409
            createdb_cfg = postgresql_cfg
404
            createdb_cfg = {}
405
            for k, v in pub.cfg['postgresql'].items():
406
                if v and isinstance(v, basestring):
407
                    createdb_cfg[k] = v
410 408

  
411 409
        try:
412 410
            pgconn = psycopg2.connect(**createdb_cfg)
......
430 428
        else:
431 429
            cur.close()
432 430

  
433
        postgresql_cfg['database'] = database_name
434
        pub.cfg['postgresql'] = postgresql_cfg
431
        pub.cfg['postgresql']['database'] = database_name
435 432
        pub.write_cfg()
436 433
        pub.set_config(skip_sql=False)
437 434

  
......
443 440
            cmd.extend(['-f', self.base_options.configfile])
444 441
        cmd.append('convert-to-sql')
445 442
        for param in ('database', 'user', 'password', 'host', 'port'):
446
            if postgresql_cfg.get(param):
443
            if pub.cfg['postgresql'].get(param):
447 444
                if param == 'database':
448 445
                    cmd.append('--dbname')
449 446
                else:
450 447
                    cmd.append('--' + param)
451
                cmd.append(str(postgresql_cfg.get(param)))
448
                cmd.append(str(pub.cfg['postgresql'].get(param)))
452 449
        cmd.append(str(self.get_instance_path(service)))
453 450
        subprocess.call(cmd)
454 451

  
wcs/sql.py
241 241
    if not hasattr(get_publisher(), 'pgconn') or get_publisher().pgconn is None:
242 242
        postgresql_cfg = {}
243 243
        for k, v in get_cfg('postgresql', {}).items():
244
            if v:
244
            if v and isinstance(v, basestring):
245 245
                postgresql_cfg[k] = v
246 246
        try:
247 247
            get_publisher().pgconn = psycopg2.connect(**postgresql_cfg)
248
-