diff options
author | Rob Austein <sra@hactrn.net> | 2013-03-30 04:03:04 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2013-03-30 04:03:04 +0000 |
commit | a7f7d7d4209ecd67196cb19f617bc9a2e2215a62 (patch) | |
tree | 9c6643f6cc71de0d72d6c97db70ab7eed8455baa /rpkid | |
parent | ec79e0bb4ef156f60b488a508a46417ec8fb53ae (diff) |
Add --missing_only and --mysql_defaults to rpki-sql-setup.
svn path=/trunk/; revision=5248
Diffstat (limited to 'rpkid')
-rw-r--r-- | rpkid/rpki-sql-setup.py | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/rpkid/rpki-sql-setup.py b/rpkid/rpki-sql-setup.py index 700d150a..3ca42b04 100644 --- a/rpkid/rpki-sql-setup.py +++ b/rpkid/rpki-sql-setup.py @@ -4,7 +4,7 @@ root password, pulls other information from rpki.conf. $Id$ -Copyright (C) 2009--2012 Internet Systems Consortium ("ISC") +Copyright (C) 2009--2013 Internet Systems Consortium ("ISC") Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -31,6 +31,7 @@ def read_schema(name): """ Convert an SQL file into a list of SQL statements. """ + lines = [] for line in getattr(rpki.sql_schemas, name, "").splitlines(): line = " ".join(line.split()) @@ -43,11 +44,16 @@ def sql_setup(name): """ Create a new SQL database and construct all its tables. """ + database = cfg.get("sql-database", section = name) username = cfg.get("sql-username", section = name) password = cfg.get("sql-password", section = name) schema = read_schema(name) + if missing_only and database in databases: + print "Database already present and --missing-only set, skipping \"%s\"" % database + return + print "Creating database", database cur = rootdb.cursor() try: @@ -72,8 +78,10 @@ def sql_setup(name): cfg_file = None verbose = False +mysql_defaults = None +missing_only = False -opts, argv = getopt.getopt(sys.argv[1:], "c:hv?", ["config=", "help", "verbose"]) +opts, argv = getopt.getopt(sys.argv[1:], "c:hv?", ["config=", "help", "missing_only", "mysql_defaults=", "verbose"]) for o, a in opts: if o in ("-h", "--help", "-?"): print __doc__ @@ -82,10 +90,23 @@ for o, a in opts: verbose = True if o in ("-c", "--config"): cfg_file = a + if o == "--missing_only": + missing_only = not missing_only + if o == "--mysql_defaults": + mysql_defaults = a cfg = rpki.config.parser(cfg_file, "myrpki") -rootdb = MySQLdb.connect(db = "mysql", user = "root", passwd = getpass.getpass("Please enter your MySQL root password: ")) +if mysql_defaults is None: + rootdb = MySQLdb.connect(db = "mysql", user = "root", passwd = getpass.getpass("Please enter your MySQL root password: ")) +else: + mysql_cfg = rpki.config.parser(mysql_defaults, "client") + rootdb = MySQLdb.connect(db = "mysql", user = mysql_cfg.get("user"), passwd = mysql_cfg.get("password")) + +cur = rootdb.cursor() +cur.execute("SHOW DATABASES") +databases = set(d[0] for d in cur.fetchall()) +del cur if cfg.getboolean("start_irdbd", False): sql_setup("irdbd") |