provides = frozenset(["dsn"])
def prepare(self):
"""Uses the SQL programs in the scripts locker"""
+ logging.info("Attempting wizard_scripts MySQL strategy")
if self.application.database != "mysql":
raise install.StrategyFailed
try:
# race condition
name = shell.eval("/mit/scripts/sql/bin/get-next-database", os.path.basename(self.dir))
database = shell.eval("/mit/scripts/sql/bin/create-database", name)
+ if not database:
+ raise CreateDatabaseError
options.dsn = sqlalchemy.engine.url.URL("mysql", username=username, password=password, host=host, database=database)
class EmailStrategy(install.Strategy):
def execute(self, options):
"""No-op."""
options.email = self._user + "@mit.edu"
+
+class CreateDatabaseError(wizard.Error):
+ """Could not create a database with the create-database script."""
+ def __str__(self):
+ return """
+
+ERROR: We were unable to create a database for you: this may indicate
+that you have exceeded your quota of databases or indicate a problem
+with the sql.mit.edu service. Please mail scripts@mit.edu with this
+error message."""