fix(admin,api): honor STORAGE_IMPL when surfacing file_store backend (closes #17294) (#17441)

## Summary

When `STORAGE_IMPL=AWS_S3`, the Admin Service status page keeps showing
MinIO. Three things conspire:

1. `admin/server/config.py::load_configurations` only knows the
   `minio` and `minio_0` config keys. An `s3` block lands on the
   `case _:` branch and logs `Unknown configuration key: s3`
   (issue #17294).
2. `admin/server/services.py::ServiceMgr.get_all_services` filters
   retrieval services by `DOC_ENGINE` but has no equivalent filter
   for `file_store` services by `STORAGE_IMPL`. A stale MinIO block
   is returned regardless of the active backend.
3. The wired health check is hardcoded to `check_minio_alive`, which
   calls `settings.MINIO['host']`. With `STORAGE_IMPL=AWS_S3` that
   block is uninitialized, so the check always times out.


Fixes #17294
This commit is contained in:
Harsh Kashyap
2026-07-29 08:43:20 +05:30
committed by GitHub
parent ee388b0fa5
commit 404a5cc33b
7 changed files with 612 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
#
# Copyright 2025 The InfiniFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""
Conftest for admin unit tests.
The admin package is invoked as a script (`python admin/server/admin_server.py`)
and its internal modules use top-level imports like `from config import
SERVICE_CONFIGS`. To make those modules importable from pytest, we prepend
``admin/server`` to ``sys.path`` for the duration of the test session.
"""
import os
import sys
_ADMIN_SERVER = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
"..",
"..",
"..",
"admin",
"server",
)
_ADMIN_SERVER = os.path.normpath(_ADMIN_SERVER)
if _ADMIN_SERVER not in sys.path:
sys.path.insert(0, _ADMIN_SERVER)