- db-version: Checks version of the existing database schema. Useful
- for checking database version when preparing for an upgrade.
- db-upgrade: Upgrades your database schema.
- - lease-dump: Dumps current leases to a human-readable CSV file.
- - lease-export: Dumps current leases to a memfile-ready CSV file.
+ - lease-dump: Dumps current leases to a CSV file.
- stats-recount: Recounts lease statistics.
BACKEND - one of the supported backends: memfile|mysql|pgsql|cql
-d or --directory - path to upgrade scripts (default: %s)
-v or --version - print kea-admin version and quit.
- Parameters specific to lease-dump, lease-export:
+ Parameters specific to lease-dump:
-4 to dump IPv4 leases to file
-6 to dump IPv6 leases to file
-o or --output - name of file to which leases will be dumped
exit 0
}
-mysql_export() {
- # Check the lease type was specified.
- if test "${dump_type}" != '4' && test "${dump_type}" != '6'; then
- log_error "lease-export: lease type ( -4 or -6 ) needs to be specified"
- usage
- exit 1
- fi
-
- # Check that an output file was specified.
- if test -z "${dump_file}"; then
- log_error "you must specify an output file for lease-export"
- usage
- exit 1
- fi
-
- # If output file exists, notify user, give them a chance to bail.
- check_file_overwrite "${dump_file}"
-
- # Run the SQL query.
- sql_query="
- CALL lease${dump_type}DumpHeader;
- CALL lease${dump_type}ExportData;
- "
- output="$(mysql_execute "${sql_query}")"
-
- # Translate tabs to commas and write to file.
- printf '%s\n' "${output}" | tr '\t' ',' > "${dump_file}"
-
- # Print a confirmation message.
- printf 'lease%s successfully exported to %s.\n' "${dump_type}" "${dump_file}"
-}
-
### Functions used for recounting statistics
mysql_recount() {
printf "Recount lease statistics from database\n"
exit 0
fi
-is_in_list "${command}" "db-init db-version db-upgrade lease-dump lease-export stats-recount"
+is_in_list "${command}" "db-init db-version db-upgrade lease-dump stats-recount"
if [ "${_inlist}" -eq 0 ]; then
log_error "invalid command: ${command}"
usage
;;
esac
;;
- lease-export)
- case ${backend} in
- memfile)
- log_error 'exporting from memfile to memfile'
- ;;
- mysql)
- mysql_export
- ;;
- pgsql)
- pgsql_export
- ;;
- cql)
- log_error 'lease-export cql is deprecated'
- ;;
- esac
- ;;
stats-recount)
case ${backend} in
memfile)
ADD CONSTRAINT fk_lease6_hwaddr_source FOREIGN KEY (hwaddr_source)
REFERENCES lease_hwaddr_source (hwaddr_source);
-# Procedure that returns a result set containing the column names for lease4 dumps
+# FUNCTION that returns a result set containing the column names for lease4 dumps
DROP PROCEDURE IF EXISTS lease4DumpHeader;
DELIMITER $$
CREATE PROCEDURE lease4DumpHeader()
END $$
DELIMITER ;
-# Procedure that returns a result set containing the data for lease4 dumps
+# FUNCTION that returns a result set containing the data for lease4 dumps
DROP PROCEDURE IF EXISTS lease4DumpData;
DELIMITER $$
CREATE PROCEDURE lease4DumpData()
END $$
DELIMITER ;
-# Procedure that returns a result set containing the column names for lease6 dumps
+# FUNCTION that returns a result set containing the column names for lease6 dumps
DROP PROCEDURE IF EXISTS lease6DumpHeader;
DELIMITER $$
CREATE PROCEDURE lease6DumpHeader()
END $$
DELIMITER ;
-# Procedure that returns a result set containing the data for lease6 dumps
+# FUNCTION that returns a result set containing the data for lease6 dumps
DROP PROCEDURE IF EXISTS lease6DumpData;
DELIMITER $$
CREATE PROCEDURE lease6DumpData()
END $$
DELIMITER ;
-# Procedure that returns a result set containing the data for lease4 dumps
+# FUNCTION that returns a result set containing the data for lease4 dumps
DROP PROCEDURE IF EXISTS lease4DumpData;
DELIMITER $$
CREATE PROCEDURE lease4DumpData()
END $$
DELIMITER ;
-# Procedure that returns a result set containing the data for lease6 dumps
+# FUNCTION that returns a result set containing the data for lease6 dumps
DROP PROCEDURE IF EXISTS lease6DumpData;
DELIMITER $$
CREATE PROCEDURE lease6DumpData()
UPDATE schema_version
SET version = '12', minor = '0';
-DROP FUNCTION IF EXISTS colonSeparatedHex;
-DELIMITER $$
-CREATE FUNCTION colonSeparatedHex(hex VARCHAR(64))
-RETURNS VARCHAR(64)
-DETERMINISTIC
-BEGIN
- DECLARE i INT;
- DECLARE length INT;
- DECLARE output VARCHAR(64);
- SET i = 3;
- SET length = LENGTH(hex);
- SET output = SUBSTR(hex, 1, 2);
- label: WHILE i < length DO
- SET output = CONCAT(output, ':', SUBSTR(hex, i, 2));
- SET i = i + 2;
- END WHILE label;
- SET output = LOWER(output);
- RETURN output;
-END $$
-DELIMITER ;
-
-# Modify the procedure to call colonSeparatedHex() on MAC addresses.
-DROP PROCEDURE IF EXISTS lease4DumpData;
-DELIMITER $$
-CREATE PROCEDURE lease4DumpData()
-BEGIN
-SELECT
- INET_NTOA(l.address),
- IFNULL(colonSeparatedHex(HEX(l.hwaddr)), ''),
- IFNULL(colonSeparatedHex(HEX(l.client_id)), ''),
- l.valid_lifetime,
- l.expire,
- l.subnet_id,
- l.fqdn_fwd,
- l.fqdn_rev,
- l.hostname,
- s.name,
- IFNULL(l.user_context, '')
-FROM
- lease4 l
- LEFT OUTER JOIN lease_state s on (l.state = s.state)
-ORDER BY l.address;
-END $$
-DELIMITER ;
-
-# Procedure used in lease-export to output a memfile-ready CSV file
-DROP PROCEDURE IF EXISTS lease4ExportData;
-DELIMITER $$
-CREATE PROCEDURE lease4ExportData()
-BEGIN
-SELECT
- INET_NTOA(l.address),
- IFNULL(colonSeparatedHex(HEX(l.hwaddr)), ''),
- IFNULL(colonSeparatedHex(HEX(l.client_id)), ''),
- l.valid_lifetime,
- UNIX_TIMESTAMP(l.expire),
- l.subnet_id,
- l.fqdn_fwd,
- l.fqdn_rev,
- l.hostname,
- l.state,
- IFNULL(l.user_context, '')
-FROM
- lease4 l
-ORDER BY l.address;
-END $$
-DELIMITER ;
-
-# Modify the procedure to call colonSeparatedHex() on MAC addresses.
-DROP PROCEDURE IF EXISTS lease6DumpData;
-DELIMITER $$
-CREATE PROCEDURE lease6DumpData()
-BEGIN
-SELECT
- l.address,
- IFNULL(colonSeparatedHex(HEX(l.duid)), ''),
- l.valid_lifetime,
- l.expire,
- l.subnet_id,
- l.pref_lifetime,
- IFNULL(t.name, ''),
- l.iaid,
- l.prefix_len,
- l.fqdn_fwd,
- l.fqdn_rev,
- l.hostname,
- IFNULL(colonSeparatedHex(HEX(l.hwaddr)), ''),
- IFNULL(l.hwtype, ''),
- IFNULL(h.name, ''),
- IFNULL(s.name, ''),
- IFNULL(l.user_context, '')
-FROM lease6 l
- left outer join lease6_types t on (l.lease_type = t.lease_type)
- left outer join lease_state s on (l.state = s.state)
- left outer join lease_hwaddr_source h on (l.hwaddr_source = h.hwaddr_source)
-ORDER BY l.address;
-END $$
-DELIMITER ;
-
-# Procedure used in lease-export to output a memfile-ready CSV file
-DROP PROCEDURE IF EXISTS lease6ExportData;
-DELIMITER $$
-CREATE PROCEDURE lease6ExportData()
-BEGIN
-SELECT
- l.address,
- IFNULL(colonSeparatedHex(HEX(l.duid)), ''),
- l.valid_lifetime,
- UNIX_TIMESTAMP(l.expire),
- l.subnet_id,
- l.pref_lifetime,
- l.lease_type,
- l.iaid,
- l.prefix_len,
- l.fqdn_fwd,
- l.fqdn_rev,
- l.hostname,
- IFNULL(colonSeparatedHex(HEX(l.hwaddr)), ''),
- IFNULL(l.hwtype, ''),
- IFNULL(h.name, ''),
- l.state,
- IFNULL(l.user_context, '')
-FROM lease6 l
- left outer join lease_hwaddr_source h on (l.hwaddr_source = h.hwaddr_source)
-ORDER BY l.address;
-END $$
-DELIMITER ;
-
-# Update the schema version number
-UPDATE schema_version
- SET version = '13', minor = '0';
-
# This line concludes database upgrade to version 12.
# Notes: