Skip to content

Commit 1644fbb

Browse files
authored
Unify serve edge services (#135)
* build: unify serve targets across edge services * fix: camera service — config IDs, output_dir path resolution, loosen Pillow pin
1 parent 9c1a74d commit 1644fbb

7 files changed

Lines changed: 24 additions & 20 deletions

File tree

edge_camera/camera_config.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Camera service configuration for local development.
2+
# Camera IDs must match the camera_id values in the orchestrator station config.
3+
#
4+
# Backend options: fake | opencv | picamera2 | basler
5+
# - fake: returns a blank JPEG, no hardware required
6+
# - opencv: USB/webcam via OpenCV (requires edge-camera[usb])
7+
# - picamera2: Raspberry Pi camera (requires edge-camera[pi])
8+
# - basler: Basler GigE camera (requires edge-camera[basler])
9+
10+
cameras:
11+
camera_1:
12+
backend: fake
13+
camera_2:
14+
backend: fake

edge_camera/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ description = "vio-edge: camera service — standalone HTTP capture service"
99
requires-python = ">=3.9"
1010
dependencies = [
1111
"fastapi[all]==0.115.6",
12-
"Pillow==9.4.0",
12+
"Pillow>=9.4.0",
1313
"pyyaml>=6.0",
1414
]
1515

edge_camera/src/edge_camera/interface/api/_paths.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ def output_dir(camera_id: str) -> Path:
99
"""
1010
shm = Path("/dev/shm")
1111
default = shm / "vio" if shm.is_dir() else Path("/tmp/vio")
12-
base = Path(os.getenv("CAMERA_OUTPUT_DIR", "")) or default
12+
env = os.getenv("CAMERA_OUTPUT_DIR")
13+
base = Path(env) if env else default
1314
return base / camera_id

edge_camera/tests/unit_tests/interface/api/test_push_mode.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ async def fake_run_push_task(backend, camera_id, push_url, out_dir):
6868
await asyncio.sleep(float("inf"))
6969

7070
app = create_app()
71+
app.state.backends = {"cam_1": FakeCameraBackend()}
7172

7273
with patch("edge_camera.interface.api.app._run_push_task", side_effect=fake_run_push_task):
7374
async with app.router.lifespan_context(app):

edge_model_serving/tflite_serving/Makefile

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,6 @@ install:
4242
tflite_tests:
4343
pytest -v --cov=src --junitxml=reports/tests-report.xml tests/
4444

45-
.PHONY: run_tflite_serving ## ✅ Launch the tflite serving app
46-
run_tflite_serving:
45+
.PHONY: serve ## 🚀 Run the model server locally (port 8501)
46+
serve:
4747
uvicorn tflite_serving.tflite_server:app --reload --port 8501 --host 0.0.0.0
48-
49-
.PHONY: start_edge_model_serving ## 🕵 Start edge_model_serving service (Docker container)
50-
start_edge_model_serving:
51-
BUILDOS=${BUILDOS} docker compose --file edge_model_serving.yml up edge_model_serving -d --build
52-
53-
.PHONY: stop_edge_model_serving ## 🕵 Stop edge_model_serving service (Docker container)
54-
stop_edge_model_serving:
55-
docker compose --file edge_model_serving.yml down edge_model_serving

edge_orchestrator/Makefile

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ pyramid:
8181
pyramid_and_badges:
8282
python tests/tests_pyramid.py --badges-generation
8383

84-
.PHONY: start_edge_orchestrator ## 🕵 Start edge_orchestrator service (Docker container)
85-
start_edge_orchestrator:
86-
BUILDOS=${BUILDOS} docker compose --file edge_orchestrator.yml up edge_orchestrator -d --build
87-
88-
.PHONY: stop_edge_orchestrator ## 🕵 Stop edge_orchestrator service (Docker container)
89-
stop_edge_orchestrator:
90-
docker compose --file edge_orchestrator.yml down edge_orchestrator
84+
.PHONY: serve ## 🚀 Run the orchestrator locally (port 8000)
85+
serve:
86+
uvicorn edge_orchestrator.interface.api.main:app --host 0.0.0.0 --port 8000 --reload

edge_orchestrator/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies = [
2727
"fastapi[all]==0.115.6",
2828
"numpy==1.24.2",
2929
"opencv_python==4.11.0.86",
30-
"Pillow==9.4.0",
30+
"Pillow>=9.4.0",
3131
"smart-open[all]==7.1.0",
3232
"tenacity==9.0.0",
3333
]

0 commit comments

Comments
 (0)