2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 22:15:23 +00:00

[963] addressed review comments

documentation changes
different exit status on uncaught exceptions
removed unused log message
updated 'corrupt' log message
improved 'quiet' test case
This commit is contained in:
Jelte Jansen
2012-03-26 16:08:39 +02:00
parent 46f994f729
commit a7254a232b
5 changed files with 30 additions and 21 deletions

View File

@@ -44,7 +44,7 @@ utility is a general administration utility for SQL databases\&. (Currently only
\fBb10\-dbutil\fR \fBb10\-dbutil\fR
operates in one of two modes, check mode or upgrade mode\&. operates in one of two modes, check mode or upgrade mode\&.
.PP .PP
In check mode (\fBb10\-dbutil \-\-check\fR), the utility reads the version of the database schema from the database and prints it\&. It will tell you whether the schema is at the latest version supported by BIND 10\&. Exit status is 0 if the schema is at the correct version, 1 if the schema is at an older version, 2 if the schema is at a version not yet supported by this version of b10\-dbutil\&. Any higher value indicates a read or command\-line error\&. In check mode (\fBb10\-dbutil \-\-check\fR), the utility reads the version of the database schema from the database and prints it\&. It will tell you whether the schema is at the latest version supported by BIND 10\&. Exit status is 0 if the schema is at the correct version, 1 if the schema is at an older version, 2 if the schema is at a version not yet supported by this version of b10\-dbutil\&. Any higher value indicates an error during command\-line parsing or execution\&.
.PP .PP
When the upgrade function is selected (\fBb10\-dbutil \-\-upgrade\fR), the utility takes a copy of the database, then upgrades it to the latest version of the schema\&. The contents of the database remain intact\&. (The backup file is a file in the same directory as the database file\&. It has the same name, with "\&.backup" appended to it\&. If a file of that name already exists, the file will have the suffix "\&.backup\-1"\&. If that exists, the file will be suffixed "\&.backup\-2", and so on)\&. Exit status is 0 if the upgrade is either succesful or aborted by the user, and non\-zero if there is an error\&. When the upgrade function is selected (\fBb10\-dbutil \-\-upgrade\fR), the utility takes a copy of the database, then upgrades it to the latest version of the schema\&. The contents of the database remain intact\&. (The backup file is a file in the same directory as the database file\&. It has the same name, with "\&.backup" appended to it\&. If a file of that name already exists, the file will have the suffix "\&.backup\-1"\&. If that exists, the file will be suffixed "\&.backup\-2", and so on)\&. Exit status is 0 if the upgrade is either succesful or aborted by the user, and non\-zero if there is an error\&.
.PP .PP
@@ -74,7 +74,7 @@ The upgrade function will upgrade a BIND 10 database \- no matter how old the sc
.PP .PP
\fB\-\-verbose\fR \fB\-\-verbose\fR
.RS 4 .RS 4
Enable verbose mode\&. Each SQL command issued by the utility will be printed to stdout before it is executed\&. Enable verbose mode\&. Each SQL command issued by the utility will be printed to stderr before it is executed\&.
.RE .RE
.PP .PP
\fB\-\-quiet\fR \fB\-\-quiet\fR

View File

@@ -78,7 +78,8 @@
version supported by BIND 10. Exit status is 0 if the schema is at version supported by BIND 10. Exit status is 0 if the schema is at
the correct version, 1 if the schema is at an older version, 2 if the correct version, 1 if the schema is at an older version, 2 if
the schema is at a version not yet supported by this version of the schema is at a version not yet supported by this version of
b10-dbutil. Any higher value indicates a read or command-line error. b10-dbutil. Any higher value indicates an error during command-line
parsing or execution.
</para> </para>
<para> <para>
@@ -159,7 +160,7 @@
</term> </term>
<listitem> <listitem>
<para>Enable verbose mode. Each SQL command issued by the <para>Enable verbose mode. Each SQL command issued by the
utility will be printed to stdout before it is executed.</para> utility will be printed to stderr before it is executed.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@@ -34,7 +34,27 @@ The is the database name with ".backup" appended to it (or ".backup-n" if
upgrade fails. upgrade fails.
""" """
# Exit codes
# These are defined here because one of them is already used before most
# of the import statements.
EXIT_SUCCESS = 0
EXIT_NEED_UPDATE = 1
EXIT_VERSION_TOO_HIGH = 2
EXIT_COMMAND_ERROR = 3
EXIT_READ_ERROR = 4
EXIT_UPGRADE_ERROR = 5
EXIT_UNCAUGHT_EXCEPTION = 6
import sys; sys.path.append("@@PYTHONPATH@@") import sys; sys.path.append("@@PYTHONPATH@@")
# Normally, python exits with a status code of 1 on uncaught exceptions
# Since we reserve exit status 1 for 'database needs upgrade', we
# override the excepthook to exit with a different status
def my_except_hook(a, b, c):
sys.__excepthook__(a,b,c)
sys.exit(EXIT_UNCAUGHT_EXCEPTION)
sys.excepthook = my_except_hook
import os, sqlite3, shutil import os, sqlite3, shutil
from optparse import OptionParser from optparse import OptionParser
import isc.util.process import isc.util.process
@@ -47,20 +67,13 @@ isc.util.process.rename()
TRACE_BASIC = logger.DBGLVL_TRACE_BASIC TRACE_BASIC = logger.DBGLVL_TRACE_BASIC
# @brief Version String # @brief Version String
# This is the version displayed to the user. It comprises the module name, # This is the version displayed to the user. It comprises the module name,
# the module version number, and the overall BIND 10 version number (set in # the module version number, and the overall BIND 10 version number (set in
# configure.ac) # configure.ac)
VERSION = "b10-dbutil 20120319 (BIND 10 @PACKAGE_VERSION@)" VERSION = "b10-dbutil 20120319 (BIND 10 @PACKAGE_VERSION@)"
# Exit codes
EXIT_SUCCESS = 0
EXIT_NEED_UPDATE = 1
EXIT_VERSION_TOO_HIGH = 2
EXIT_COMMAND_ERROR = 3
EXIT_READ_ERROR = 4
EXIT_UPGRADE_ERROR = 5
# @brief Statements to Update the Database # @brief Statements to Update the Database
# These are in the form of a list of dictionaries, each of which contains the # These are in the form of a list of dictionaries, each of which contains the
# information to perform an incremental upgrade from one version of the # information to perform an incremental upgrade from one version of the
@@ -585,13 +598,11 @@ if __name__ == "__main__":
except Exception as ex: except Exception as ex:
if in_progress: if in_progress:
logger.error(DBUTIL_UPGRADE_FAILED, ex) logger.error(DBUTIL_UPGRADE_FAILED, ex)
logger.warn(DBUTIL_DATABASE_MAY_BE_CORRUPTED) logger.warn(DBUTIL_DATABASE_MAY_BE_CORRUPT, db.db_file,
db.backup_file)
else: else:
logger.error(DBUTIL_UPGRADE_PREPARATION_FAILED, ex) logger.error(DBUTIL_UPGRADE_PREPARATION_FAILED, ex)
logger.info(DBUTIL_UPGRADE_NOT_ATTEMPTED) logger.info(DBUTIL_UPGRADE_NOT_ATTEMPTED)
exit_code = EXIT_UPGRADE_ERROR exit_code = EXIT_UPGRADE_ERROR
else:
logger.error(DBUTIL_NO_ACTION_SPECIFIED)
exit_code = EXIT_COMMAND_ERROR
sys.exit(exit_code) sys.exit(exit_code)

View File

@@ -47,7 +47,7 @@ provided.
b10-dbutil was called with both the commands --upgrade and --check. Only one b10-dbutil was called with both the commands --upgrade and --check. Only one
action can be performed at a time. action can be performed at a time.
% DBUTIL_DATABASE_MAY_BE_CORRUPTED database may be corrupt, restore it from backup % DBUTIL_DATABASE_MAY_BE_CORRUPT database file %1 may be corrupt, restore it from backup (%2)
The upgrade failed while it was in progress; the database may now be in an The upgrade failed while it was in progress; the database may now be in an
inconsistent state, and it is advised to restore it from the backup that was inconsistent state, and it is advised to restore it from the backup that was
created when b10-dbutil started. created when b10-dbutil started.
@@ -58,9 +58,6 @@ Debug message; the given SQL statement is executed
% DBUTIL_FILE Database file: %1 % DBUTIL_FILE Database file: %1
The database file that is being checked. The database file that is being checked.
% DBUTIL_NO_ACTION_SPECIFIED Command error: neither --check nor --upgrade selected
b10-dbutil was called without either --check or --upgrade.
% DBUTIL_NO_FILE must supply name of the database file to upgrade % DBUTIL_NO_FILE must supply name of the database file to upgrade
b10-dbutil was called without a database file. Currently, it cannot find this b10-dbutil was called without a database file. Currently, it cannot find this
file on its own, and it must be provided. file on its own, and it must be provided.

View File

@@ -445,7 +445,7 @@ rm -f $tempfile $backupfile
echo "13.3 quiet flag" echo "13.3 quiet flag"
copy_file $testdata/old_v1.sqlite3 $tempfile copy_file $testdata/old_v1.sqlite3 $tempfile
../run_dbutil.sh --check --quiet $tempfile 2>&1 | grep dbutil ../run_dbutil.sh --check --quiet $tempfile 2>&1 | grep .
failzero $? failzero $?
rm -f $tempfile $backupfile rm -f $tempfile $backupfile