summaryrefslogtreecommitdiff
path: root/docs/development/architecture.md
diff options
context:
space:
mode:
authorRoberto Bertó <463349+robertoberto@users.noreply.github.com>2026-05-19 03:15:55 -0300
committerGitHub <noreply@github.com>2026-05-19 03:15:55 -0300
commit294d060ac1557ed70cab7a12f97d930f9dc4baf9 (patch)
tree25e03a160fb1dc05a27a9118a7a6f573f0ffd123 /docs/development/architecture.md
parentffd5ba16eb1ada42a582db4ac8bdaf29f66a868f (diff)
parent6071528289e4a8b11a772433c33851136d30f133 (diff)
downloadpyvyos-294d060ac1557ed70cab7a12f97d930f9dc4baf9.tar.gz
pyvyos-294d060ac1557ed70cab7a12f97d930f9dc4baf9.zip
Merge pull request #31 from vyos-contrib/release/v0.4.0-cleanupv0.4.0
Release v0.4.0 — cleanup and consolidation
Diffstat (limited to 'docs/development/architecture.md')
-rw-r--r--docs/development/architecture.md77
1 files changed, 0 insertions, 77 deletions
diff --git a/docs/development/architecture.md b/docs/development/architecture.md
deleted file mode 100644
index aceda08..0000000
--- a/docs/development/architecture.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Development Architecture (Proposed)
-
-## Goals
-- Strong separation of concerns (transport, domain, specs, utils)
-- Backward compatibility for 0.3.0 via shims
-- Clear public API surface and internal boundaries
-- Minimal maintenance burden for a public, official SDK
-
-## Source Layout (file tree)
-```
-pyvyos/
- __init__.py # public API exports (VyDevice, ApiResponse)
- core/ # internal, stable layers
- __init__.py
- rest_client.py # RestClient, ApiResponse (transport layer)
- device.py # VyDevice (domain layer)
- specs/ # optional Pydantic models (validation)
- __init__.py
- models.py # base models (ApiRequest/Response)
- commands/ # split by responsibility
- __init__.py
- configure.py # set, delete, multiple_op
- retrieve.py # show_config, return_values
- config_file.py # save, load (path: [])
- show.py # show
- generate.py # generate
- reset.py # reset
- system.py # reboot, poweroff
- image.py # add, delete
- utils/ # reusable helpers (no side effects)
- __init__.py
- json.py # safe_json, redact_key
- http.py # timeouts, retries (future)
- paths.py # path builder helpers
- ids.py # request_id helpers
- exceptions.py # typed exceptions (SDKError, HttpError, ApiError)
- types.py # public typing aliases if needed
- device.py # shim re-export (compat)
- rest.py # shim re-export (compat)
- vyos_api/ # JSON specs (docs/reference, optional at runtime)
-```
-
-## Layers & Responsibilities
-- Transport (core.rest_client): HTTP, payload assembly, response validation
-- Domain (core.device): high-level methods (configure, show, reset, etc.)
-- Specs (specs.*): optional Pydantic models to validate requests/answers
-- Utils: pure helpers (formatting, ids, path building)
-- Shims (device.py, rest.py): ensure 0.3.0 compatibility
-
-## Public API Surface
-- `from pyvyos import VyDevice, ApiResponse`
-- Stable imports; internal moves hidden by shims
-
-## Compatibility Strategy
-- Keep shims until 1.0.0
-- Deprecation policy: warn after N minors, remove at next major
-- Document migration path (import from `pyvyos.core` for new code)
-
-## Data Validation Flow (optional)
-- App builds `path` with utils.paths
-- If validation enabled, use `specs.commands.*` models
-- RestClient serializes payload and executes request
-- Response validated (structure: success/data/error)
-
-## Testing Strategy
-- Unit: core.rest_client and core.device isolated via monkeypatch
-- Contract: JSON fixtures mirror VyOS responses
-- E2E (future): optional with test VyOS VM
-
-## Packaging
-- Include `vyos_api/` only if needed at runtime
-- Otherwise treat it as docs/reference, not required by the package
-
-## Naming & Conventions
-- Use underscores `_` in file and module names
-- One responsibility per module (keep files small)
-- Typed public APIs, specific exceptions, no prints (only logging)