aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki-sql-setup.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-04-05 22:36:23 +0000
committerRob Austein <sra@hactrn.net>2013-04-05 22:36:23 +0000
commitb9ea94e261276a1da6ab9d4242d39b6f99894218 (patch)
tree2ea452d13d3017635f2ea8a406f6320df8791a60 /rpkid/rpki-sql-setup.py
parent52b5cb0ad90b445c44c4797c688b46012c3240bc (diff)
Consolidate list of scripts for setup.py to install into setup.py, get
rid of a lot of Makefile.in code that no longer serves any useful purpose. svn path=/trunk/; revision=5285
Diffstat (limited to 'rpkid/rpki-sql-setup.py')
-rw-r--r--rpkid/rpki-sql-setup.py122
1 files changed, 0 insertions, 122 deletions
diff --git a/rpkid/rpki-sql-setup.py b/rpkid/rpki-sql-setup.py
deleted file mode 100644
index 01de0822..00000000
--- a/rpkid/rpki-sql-setup.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Automated setup of all the pesky SQL stuff we need. Prompts for MySQL
-root password, pulls other information from rpki.conf.
-
-$Id$
-
-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
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-"""
-
-import getopt
-import sys
-import getpass
-import rpki.config
-import rpki.sql_schemas
-
-from rpki.mysql_import import MySQLdb
-
-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())
- if line and not line.startswith("--"):
- lines.append(line)
-
- return [statement.strip() for statement in " ".join(lines).rstrip(";").split(";") if statement.strip()]
-
-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:
- cur.execute("DROP DATABASE IF EXISTS %s" % database)
- except Exception:
- pass
- cur.execute("CREATE DATABASE %s" % database)
- cur.execute("GRANT ALL ON %s.* TO %s@localhost IDENTIFIED BY %%s" % (database, username), (password,))
- rootdb.commit()
-
- db = MySQLdb.connect(db = database, user = username, passwd = password)
- cur = db.cursor()
- for statement in schema:
- if statement.upper().startswith("DROP TABLE"):
- continue
- if verbose:
- print "+", statement
- cur.execute(statement)
- db.commit()
- db.close()
-
-cfg_file = None
-
-verbose = False
-mysql_defaults = None
-missing_only = False
-
-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__
- sys.exit(0)
- if o in ("-v", "--verbose"):
- 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")
-
-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")
-
-if cfg.getboolean("start_rpkid", False):
- sql_setup("rpkid")
-
-if cfg.getboolean("start_pubd", False):
- sql_setup("pubd")
-
-rootdb.close()