~charmers/charms/precise/mongodb/trunk

« back to all changes in this revision

Viewing changes to hooks/hooks.py

  • Committer: Juan L. Negron
  • Date: 2013-12-11 22:03:08 UTC
  • mfrom: (35.1.5 logrotate)
  • Revision ID: juan.negron@canonical.com-20131211220308-udz0nxuimm66ds99
Merging bac's changes MP:198633

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
from os import remove
22
22
from os.path import exists
23
23
from string import Template
 
24
from textwrap import dedent
24
25
from yaml.constructor import ConstructorError
25
26
 
26
27
###############################################################################
322
323
###############################################################################
323
324
# Global variables
324
325
###############################################################################
325
 
parser = argparse.ArgumentParser()
326
 
parser.add_argument('-H', '--hook_name', dest='hook_name', help='hook to call')
327
 
args = parser.parse_args()
328
 
if args.hook_name is not None:
329
 
    hook_name = args.hook_name
330
 
else:
331
 
    hook_name = os.path.basename(sys.argv[0])
332
326
default_mongodb_config = "/etc/mongodb.conf"
333
327
default_mongodb_init_config = "/etc/init/mongodb.conf"
334
328
default_mongos_list = "/etc/mongos.list"
826
820
    if os.path.exists('/var/lib/mongodb/mongod.lock'):
827
821
        os.remove('/var/lib/mongodb/mongod.lock')
828
822
 
829
 
    service('mongodb', 'start')
 
823
    if not service('mongodb', 'start'):
 
824
        return False
830
825
 
831
 
    while service('mongodb', 'status') and \
832
 
    not port_check(my_hostname, my_port) and \
833
 
    current_try < max_tries:
834
 
        juju_log("restart_mongod: Waiting for MongoDB to be ready ...")
 
826
    while (service('mongodb', 'status') and
 
827
           not port_check(my_hostname, my_port) and
 
828
           current_try < max_tries):
 
829
        juju_log(
 
830
            "restart_mongod: Waiting for MongoDB to be ready ({}/{})".format(
 
831
            current_try, max_tries))
835
832
        time.sleep(wait_for)
836
833
        current_try += 1
837
834
 
970
967
    # extra demon options
971
968
    update_daemon_options(config_data['extra_daemon_options'])
972
969
 
 
970
    # write mongodb logrotate configuration file
 
971
    write_logrotate_config(config_data)
 
972
 
973
973
    # restart mongodb
974
974
    restart_mongod()
975
975
 
1429
1429
            "Invalid volume storage configuration, not applying changes")
1430
1430
    return False
1431
1431
 
 
1432
 
 
1433
#------------------------------------------------------------------------------
 
1434
# Write mongodb-server logrotate configuration
 
1435
#------------------------------------------------------------------------------
 
1436
def write_logrotate_config(config_data,
 
1437
                           conf_file = '/etc/logrotate.d/mongodb-server'):
 
1438
 
 
1439
    juju_log('Writing {}.'.format(conf_file))
 
1440
    contents = dedent("""
 
1441
        {logpath} {{
 
1442
                {logrotate-frequency}
 
1443
                rotate {logrotate-rotate}
 
1444
                maxsize {logrotate-maxsize}
 
1445
                copytruncate
 
1446
                delaycompress
 
1447
                compress
 
1448
                noifempty
 
1449
                missingok
 
1450
        }}""")
 
1451
    contents = contents.format(**config_data)
 
1452
    try:
 
1453
        with open(conf_file, 'w') as f:
 
1454
            f.write(contents)
 
1455
    except IOError:
 
1456
        juju_log('Could not write {}.'.format(conf_file))
 
1457
        return False
 
1458
    return True
 
1459
 
 
1460
 
1432
1461
###############################################################################
1433
1462
# Main section
1434
1463
###############################################################################
1435
 
if hook_name == "install":
1436
 
    retVal = install_hook()
1437
 
elif hook_name == "config-changed":
1438
 
    retVal = config_changed()
1439
 
elif hook_name == "start":
1440
 
    retVal = start_hook()
1441
 
elif hook_name == "stop":
1442
 
    retVal = stop_hook()
1443
 
elif hook_name == "database-relation-joined":
1444
 
    retVal = database_relation_joined()
1445
 
elif hook_name == "replica-set-relation-joined":
1446
 
    retVal = replica_set_relation_joined()
1447
 
elif hook_name == "replica-set-relation-changed":
1448
 
    retVal = replica_set_relation_changed()
1449
 
elif hook_name == "configsvr-relation-joined":
1450
 
    retVal = configsvr_relation_joined()
1451
 
elif hook_name == "configsvr-relation-changed":
1452
 
    retVal = configsvr_relation_changed()
1453
 
elif hook_name == "mongos-cfg-relation-joined":
1454
 
    retVal = mongos_relation_joined()
1455
 
elif hook_name == "mongos-cfg-relation-changed":
1456
 
    retVal = mongos_relation_changed()
1457
 
elif hook_name == "mongos-cfg-relation-broken":
1458
 
    retVal = mongos_relation_broken()
1459
 
elif hook_name == "mongos-relation-joined":
1460
 
    retVal = mongos_relation_joined()
1461
 
elif hook_name == "mongos-relation-changed":
1462
 
    retVal = mongos_relation_changed()
1463
 
elif hook_name == "mongos-relation-broken":
1464
 
    retVal = mongos_relation_broken()
1465
 
else:
1466
 
    print "Unknown hook"
1467
 
    retVal = False
1468
 
 
1469
 
if retVal is True:
1470
 
    sys.exit(0)
1471
 
else:
1472
 
    sys.exit(1)
 
1464
if __name__ == '__main__':
 
1465
    parser = argparse.ArgumentParser()
 
1466
    parser.add_argument('-H', '--hook_name', dest='hook_name',
 
1467
                        help='hook to call')
 
1468
    args = parser.parse_args()
 
1469
    if args.hook_name is not None:
 
1470
        hook_name = args.hook_name
 
1471
    else:
 
1472
        hook_name = os.path.basename(sys.argv[0])
 
1473
 
 
1474
    if hook_name == "install":
 
1475
        retVal = install_hook()
 
1476
    elif hook_name == "config-changed":
 
1477
        retVal = config_changed()
 
1478
    elif hook_name == "start":
 
1479
        retVal = start_hook()
 
1480
    elif hook_name == "stop":
 
1481
        retVal = stop_hook()
 
1482
    elif hook_name == "database-relation-joined":
 
1483
        retVal = database_relation_joined()
 
1484
    elif hook_name == "replica-set-relation-joined":
 
1485
        retVal = replica_set_relation_joined()
 
1486
    elif hook_name == "replica-set-relation-changed":
 
1487
        retVal = replica_set_relation_changed()
 
1488
    elif hook_name == "configsvr-relation-joined":
 
1489
        retVal = configsvr_relation_joined()
 
1490
    elif hook_name == "configsvr-relation-changed":
 
1491
        retVal = configsvr_relation_changed()
 
1492
    elif hook_name == "mongos-cfg-relation-joined":
 
1493
        retVal = mongos_relation_joined()
 
1494
    elif hook_name == "mongos-cfg-relation-changed":
 
1495
        retVal = mongos_relation_changed()
 
1496
    elif hook_name == "mongos-cfg-relation-broken":
 
1497
        retVal = mongos_relation_broken()
 
1498
    elif hook_name == "mongos-relation-joined":
 
1499
        retVal = mongos_relation_joined()
 
1500
    elif hook_name == "mongos-relation-changed":
 
1501
        retVal = mongos_relation_changed()
 
1502
    elif hook_name == "mongos-relation-broken":
 
1503
        retVal = mongos_relation_broken()
 
1504
    else:
 
1505
        print "Unknown hook"
 
1506
        retVal = False
 
1507
 
 
1508
    if retVal is True:
 
1509
        sys.exit(0)
 
1510
    else:
 
1511
        sys.exit(1)