From 418f381b492cc9c0f3ede008e72e1d2eb1a611a8 Mon Sep 17 00:00:00 2001 From: lujoh Date: Fri, 20 Oct 2023 15:31:55 -0400 Subject: [PATCH] made age a required argument for the -clean-deleted command --- docs/admin/Maintenance.md | 9 ++++----- nominatim/clicmd/admin.py | 8 ++------ nominatim/clicmd/args.py | 3 +-- test/python/cli/test_cmd_admin.py | 5 ++--- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/docs/admin/Maintenance.md b/docs/admin/Maintenance.md index 758ede65..325e6f8f 100644 --- a/docs/admin/Maintenance.md +++ b/docs/admin/Maintenance.md @@ -60,14 +60,13 @@ to finish the recomputation. ## Removing large deleted objects -Command: `nominatim admin --clean-deleted --age ` +Command: `nominatim admin --clean-deleted ` Nominatim refuses to delete very large areas because often these deletions are accidental and are reverted within hours. Instead the deletions are logged in the `import_polygon_delete` table and left to the administrator to clean up. -To run this command you will need to pass a PostgreSQL time interval to the age -parameter. For example to delete any objects that have been deleted more than a -month ago you would run: -`nominatim admin --clean-deleted --age '1 month'` +To run this command you will need to pass a PostgreSQL time interval. For example to +delete any objects that have been deleted more than a month ago you would run: +`nominatim admin --clean-deleted '1 month'` diff --git a/nominatim/clicmd/admin.py b/nominatim/clicmd/admin.py index 9a7b92e6..d1ce5ccc 100644 --- a/nominatim/clicmd/admin.py +++ b/nominatim/clicmd/admin.py @@ -42,7 +42,7 @@ class AdminFuncs: help='Print performance analysis of the indexing process') objs.add_argument('--collect-os-info', action="store_true", help="Generate a report about the host system information") - objs.add_argument('--clean-deleted', action='store_true', + objs.add_argument('--clean-deleted', action='store', metavar='AGE', help='Clean up deleted relations') group = parser.add_argument_group('Arguments for cache warming') group.add_argument('--search-only', action='store_const', dest='target', @@ -58,8 +58,6 @@ class AdminFuncs: mgroup.add_argument('--place-id', type=int, help='Analyse indexing of the given Nominatim object') group = parser.add_argument_group('Arguments for cleaning deleted') - group.add_argument('--age', type=str, - help='Delete relations older than the given PostgreSQL time interval') def run(self, args: NominatimArgs) -> int: @@ -90,11 +88,9 @@ class AdminFuncs: return 0 if args.clean_deleted: - if not args.age: - self.parser.error('Age is required for --clean-deleted command') LOG.warning('Cleaning up deleted relations') from ..tools import admin - admin.clean_deleted_relations(args.config, age=args.age) + admin.clean_deleted_relations(args.config, age=args.clean_deleted) return 0 return 1 diff --git a/nominatim/clicmd/args.py b/nominatim/clicmd/args.py index 5b4beb40..e632e4c7 100644 --- a/nominatim/clicmd/args.py +++ b/nominatim/clicmd/args.py @@ -72,12 +72,11 @@ class NominatimArgs: check_database: bool migrate: bool collect_os_info: bool - clean_deleted: bool + clean_deleted: str analyse_indexing: bool target: Optional[str] osm_id: Optional[str] place_id: Optional[int] - age: str # Arguments to 'import' osm_file: List[str] diff --git a/test/python/cli/test_cmd_admin.py b/test/python/cli/test_cmd_admin.py index 0fe6e327..45104ea6 100644 --- a/test/python/cli/test_cmd_admin.py +++ b/test/python/cli/test_cmd_admin.py @@ -36,14 +36,13 @@ def test_admin_migrate(cli_call, mock_func_factory): def test_admin_clean_deleted_relations(cli_call, mock_func_factory): mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations') - assert cli_call('admin', '--clean-deleted', '--age', '1 month') == 0 + assert cli_call('admin', '--clean-deleted', '1 month') == 0 assert mock.called == 1 def test_admin_clean_deleted_relations_no_age(cli_call, mock_func_factory): mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations') - with pytest.raises(SystemExit): - cli_call('admin', '--clean-deleted') + assert cli_call('admin', '--clean-deleted') == 1 class TestCliAdminWithDb: -- 2.39.5