]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2293] Add flag to kea-admin to assume yes for all prompts, fix tests
authorDan Theisen <djt@isc.org>
Fri, 20 May 2022 17:51:24 +0000 (10:51 -0700)
committerAndrei Pavel <andrei@isc.org>
Mon, 23 May 2022 14:20:50 +0000 (17:20 +0300)
src/bin/admin/kea-admin.in
src/bin/admin/tests/admin_tests.sh.in
src/bin/admin/tests/mysql_tests.sh.in
src/bin/admin/tests/pgsql_tests.sh.in

index fe79fad2f5c5ed97477c0ff5d6803952412a0341..f2719abc46137f3f6a02ef0cd05f16a0303533a3 100644 (file)
@@ -40,6 +40,8 @@ SCRIPTS_DIR_DEFAULT="@datarootdir@/@PACKAGE@/scripts"
 scripts_dir="${SCRIPTS_DIR_DEFAULT}"
 VERSION="@PACKAGE_VERSION@"
 
+assume_yes=0
+
 # lease dump parameters
 dhcp_version=0
 dump_file=""
@@ -94,6 +96,7 @@ PARAMETERS: Parameters are optional in general, but may be required
  -d or --directory - path to upgrade scripts (default: %s)
  -v or --version - print kea-admin version and quit.
  -x or --extra - specifies extra argument(s) to pass to the database command
+ -y or --yes - assume yes on overwriting temporary files
 
  Parameters specific to lease-dump, lease-upload:
      -4 to dump IPv4 leases to file
@@ -405,19 +408,34 @@ pgsql_upgrade() {
     exit 0
 }
 
+# Remove a file if it exists
+remove_file () {
+    local file="${1}"
+    if [ ! -z "${file}" ] && [ -e "${file}" ]
+    then
+        echo "Removing file ${file}"
+        rm -f "${file}"
+    else
+        echo "File ${file} does not exist, no need to remove it."
+    fi
+}
+
 # Utility function which tests if the given file exists and
 # if so notifies the user and provides them the opportunity
 # to abort the current command.
 check_file_overwrite () {
     local file="${1}"
-    if [ -e "${file}" ]
+    if [ $assume_yes -eq 1 ]
+    then
+        remove_file "${file}"
+    elif [ -e "${file}" ]
     then
         echo "Output file, $file, exists and will be overwritten."
         echo "Do you wish to continue? (y/N)"
 
         # Ask for an answer only on an interactive shell to prevent blocking in
         # automated or non-interactive scenarios where the answer defaults to no.
-        if test -t 0; then
+        if [[ $- == *i* ]]; then
             read -r ans
         else
             log_warning 'Non-interactive tty detected. Assuming no.'
@@ -662,10 +680,6 @@ lease_upload() {
     cleaned_up_csv="/tmp/$(basename "${input_file}").tmp"
     check_file_overwrite "${cleaned_up_csv}"
     cp "${input_file}" "${cleaned_up_csv}"
-    echo "${kea_lfc}" "-${dhcp_version}" -x "${cleaned_up_csv}" \
-        -i "${cleaned_up_csv}.1" -o "${cleaned_up_csv}.output" \
-        -f "${cleaned_up_csv}.completed" -p "${cleaned_up_csv}.pid" \
-        -cignored-path >> /opt/a.txt
     "${kea_lfc}" "-${dhcp_version}" -x "${cleaned_up_csv}" \
         -i "${cleaned_up_csv}.1" -o "${cleaned_up_csv}.output" \
         -f "${cleaned_up_csv}.completed" -p "${cleaned_up_csv}.pid" \
@@ -939,6 +953,9 @@ do
                 extra_arguments="${extra_arguments} ${1}"
             fi
             ;;
+        -y|--yes)
+            assume_yes=1
+            ;;
         *)
             log_error "invalid option: ${option}"
             usage
index 456019d38f1d3bfbc18e7421058bf29c330e1933..a0e5dfdef43b7829180c8c4a5470674b123400e7 100644 (file)
@@ -88,28 +88,28 @@ kea_admin_error_reporting_tests() {
 
   test_start 'kea_admin_error_reporting_test.db_init.mysql.i'
   run_command \
-    "${kea_admin}" lease-dump mysql -i
+    "${kea_admin}" lease-dump mysql -y -i
   assert_eq 1 "${EXIT_CODE}"
   assert_str_eq 'ERROR/kea-admin: -i or --input requires a parameter' "$(printf '%s\n' "${OUTPUT}" | head -n 1)"
   test_finish ${?}
 
   test_start 'kea_admin_error_reporting_test.db_init.mysql.input'
   run_command \
-    "${kea_admin}" lease-dump mysql --input
+    "${kea_admin}" lease-dump mysql -y --input
   assert_eq 1 "${EXIT_CODE}"
   assert_str_eq 'ERROR/kea-admin: -i or --input requires a parameter' "$(printf '%s\n' "${OUTPUT}" | head -n 1)"
   test_finish ${?}
 
   test_start 'kea_admin_error_reporting_test.db_init.mysql.o'
   run_command \
-    "${kea_admin}" lease-dump mysql -o
+    "${kea_admin}" lease-dump mysql -y -o
   assert_eq 1 "${EXIT_CODE}"
   assert_str_eq 'ERROR/kea-admin: -o or --output requires a parameter' "$(printf '%s\n' "${OUTPUT}" | head -n 1)"
   test_finish ${?}
 
   test_start 'kea_admin_error_reporting_test.db_init.mysql.output'
   run_command \
-    "${kea_admin}" lease-dump mysql --output
+    "${kea_admin}" lease-dump mysql -y --output
   assert_eq 1 "${EXIT_CODE}"
   assert_str_eq 'ERROR/kea-admin: -o or --output requires a parameter' "$(printf '%s\n' "${OUTPUT}" | head -n 1)"
   test_finish ${?}
index 7f6e00d129a8afba8c9c3a7ae07c9c9811d23f10..339788041dc459be799813bf3cfa676bb673afa1 100644 (file)
@@ -1058,7 +1058,7 @@ insert into lease4 values(12,22,NULL,40,(SELECT FROM_UNIXTIME(1643212345)),50,1,
 
     # Dump lease4 to output_file
     run_command \
-        "${kea_admin}" lease-dump mysql -4 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
+        "${kea_admin}" lease-dump mysql -y -4 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -4 failed, expected exit code %d, actual %d"
 
     # Compare the dump output to reference file, they should be identical
@@ -1107,7 +1107,7 @@ insert into lease6 values('::12',22,30,(SELECT FROM_UNIXTIME(1643212345)),40,50,
 
     # Dump lease4 to output_file
     run_command \
-        "${kea_admin}" lease-dump mysql -6 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
+        "${kea_admin}" lease-dump mysql -y -6 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -6 failed, expected exit code %d, actual %d"
 
     # Compare the dump output to reference file, they should be identical
@@ -1145,14 +1145,14 @@ mysql_lease4_upload_test() {
 
     # Upload leases.
     run_command \
-        "${kea_admin}" lease-upload mysql -4 -u "${db_user}" \
+        "${kea_admin}" lease-upload mysql -y -4 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -i "${input_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-upload -4 failed, expected exit code %d, actual %d"
 
     # Dump leases.
     run_command \
-        "${kea_admin}" lease-dump mysql -4 -u "${db_user}" \
+        "${kea_admin}" lease-dump mysql -y -4 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -o "${output_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -4 failed, expected exit code %d, actual %d"
@@ -1192,14 +1192,14 @@ mysql_lease6_upload_test() {
 
     # Upload leases.
     run_command \
-        "${kea_admin}" lease-upload mysql -6 -u "${db_user}" \
+        "${kea_admin}" lease-upload mysql -y -6 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -i "${input_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-upload -6 failed, expected exit code %d, actual %d"
 
     # Dump leases.
     run_command \
-        "${kea_admin}" lease-dump mysql -6 -u "${db_user}" \
+        "${kea_admin}" lease-dump mysql -y -6 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -o "${output_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -6 failed, expected exit code %d, actual %d"
index 1fcb6d6f5717f0ac30361b353aea90b831867b87..c34668c04db1fc82dcbd57fe6f95ae883124be5c 100644 (file)
@@ -560,7 +560,7 @@ insert into lease4 values(12,E'\\\\x3232','',40,TO_TIMESTAMP(1643212345),50,'t',
 
     # Dump lease4 to output_file
     run_command \
-        "${kea_admin}" lease-dump pgsql -4 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
+        "${kea_admin}" lease-dump pgsql -y -4 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -4 failed, expected exit code %d, actual %d"
 
     # Compare the dump output to reference file, they should be identical
@@ -624,7 +624,7 @@ insert into lease6 values('::12',E'\\\\x3232',30,TO_TIMESTAMP(1643212345),40,50,
 
     # Dump lease6 to output_file
     run_command \
-        "${kea_admin}" lease-dump pgsql -6 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
+        "${kea_admin}" lease-dump pgsql -y -6 -u "${db_user}" -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" -o $output_file
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -6 failed, expected exit code %d, actual %d"
 
     # Compare the dump output to reference file, they should be identical
@@ -662,14 +662,14 @@ pgsql_lease4_upload_test() {
 
     # Upload leases.
     run_command \
-        "${kea_admin}" lease-upload pgsql -4 -u "${db_user}" \
+        "${kea_admin}" lease-upload pgsql -y -4 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -i "${input_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-upload -4 failed, expected exit code %d, actual %d"
 
     # Dump leases.
     run_command \
-        "${kea_admin}" lease-dump pgsql -4 -u "${db_user}" \
+        "${kea_admin}" lease-dump pgsql -y -4 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -o "${output_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -4 failed, expected exit code %d, actual %d"
@@ -709,14 +709,14 @@ pgsql_lease6_upload_test() {
 
     # Upload leases.
     run_command \
-        "${kea_admin}" lease-upload pgsql -6 -u "${db_user}" \
+        "${kea_admin}" lease-upload pgsql -y -6 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -i "${input_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-upload -6 failed, expected exit code %d, actual %d"
 
     # Dump leases.
     run_command \
-        "${kea_admin}" lease-dump pgsql -6 -u "${db_user}" \
+        "${kea_admin}" lease-dump pgsql -y -6 -u "${db_user}" \
             -p "${db_password}" -n "${db_name}" -d "${db_scripts_dir}" \
             -o "${output_file}"
     assert_eq 0 "${EXIT_CODE}" "kea-admin lease-dump -6 failed, expected exit code %d, actual %d"