fix: v0.3.3 — delete_container params (error 114) + delete_project orphan guard
Bug 1 — delete_container (DSM error 114):
SYNO.Docker.Container/delete requires three parameters: name
(JSON-encoded), force=false, and preserve_profile=false. Previously
only a bare `name` string was sent, causing DSM to reject the call
with error 114. Added the two missing fields and JSON-encode name to
match the DSM convention. The connector-side running-container guard
is unchanged; force stays hard-coded to false.
Bug 2 — delete_project orphan containers:
Production test revealed that DSM does NOT reject Project/delete on a
running project — it silently removes the registration and leaves the
containers running without any project context. The previous
implementation tried to handle this via a caught SynologyError that
never actually fires. Fix: check the project status from _find_project
connector-side before issuing any DSM call; if RUNNING, return an
error pointing at stop_project. The delete request is never sent for
a running project.
The corresponding unit test (test_delete_project_running_returns_stop_hint)
was a false positive — it mocked a DSM rejection that real DSM never
produces. Replaced with test_delete_project_running_blocked_connector_side
which asserts that client.request("delete") is never called when the
project is RUNNING.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+20
-1
@@ -2,7 +2,26 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [0.3.2] - 2026-05-18
|
||||
## [0.3.3] - 2026-05-18
|
||||
|
||||
### Fixed
|
||||
|
||||
- `delete_container`: `SYNO.Docker.Container/delete` requires three
|
||||
parameters — `name` (JSON-encoded), `force=false`, and
|
||||
`preserve_profile=false`. Previously only `name` was sent (without
|
||||
JSON-encoding), causing DSM to reject the call with error 114.
|
||||
- `delete_project`: DSM does **not** reject `Project/delete` on a
|
||||
running project — it silently removes the registration and leaves
|
||||
the containers running as orphans. The connector now blocks the call
|
||||
itself when the project status is `RUNNING`, before issuing any DSM
|
||||
request, and tells the user to `stop_project` first. The previous
|
||||
implementation relied on a DSM-level rejection that never occurs in
|
||||
practice; the corresponding unit test was a false positive (mocked
|
||||
an error that real DSM never returns) and has been replaced with a
|
||||
test that asserts `Project/delete` is never called for a `RUNNING`
|
||||
project.
|
||||
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
|
||||
Reference in New Issue
Block a user