Service Resource Manager (SRM)¶
The brains of the platform.
The Service Resource Manager (SRM) is the platform’s internal fulfilment engine. It receives requests from the Open Exposure Gateway (OEG) and the Federation Manager (FM), decides whether the target is local or a partner’s, and either fulfils locally through TF-SDK adapters or hands the request to FM. It keeps the authoritative catalog, topology and runtime inventory. It offers no API to App Providers: OEG and FM reach it inside the platform over the DataBus and an internal HTTP API that checks no token.
For a detailed overview of the SRM architecture, its internals, and how it interacts with other platform services, see the Overview & Architecture documentation.
What it does¶
- Fulfils lifecycle commands from OEG and FM and reports outcomes on the DataBus.
- Places each request on the topology (from pins when given, otherwise the first active zone and domain that offer the capability), or hands a non-local zone to FM.
- Runs local fulfilment through TF-SDK adapters (in-process).
- Serves catalog, topology and runtime inventory (plus synchronous queries) over internal HTTP.
Read in the specs¶
The SRM specification is four documents. Start from the question that matches what you need:
| Question | Where to read |
|---|---|
| What does SRM own, and who may call it? | Overview & Architecture › Scope and Ownership, Overview & Architecture › Boundaries |
| How does a deploy run end to end? | Requirements & Design › Deploy |
| How does placement choose a zone and domain? | Requirements & Design › Deploy Placement |
| How do device-targeted capabilities pick a control path? | Requirements & Design › Device-Targeted Control-Path Resolution |
| What happens when the zone is a partner’s? | Requirements & Design › Federated Hand-off |
| What is catalog / topology / runtime inventory? | Requirements & Design › Layers and Entities, Interface Contract › Database Schema |
| What are the commands, events and internal HTTP APIs? | Interface Contract › DataBus Command Contracts, Interface Contract › Events Published by SRM, Interface Contract › Internal HTTP API |
| How does SRM talk to TF-SDK? | Requirements & Design › TF-SDK |
Code and deployment¶
Code. The implementation lives in the service-resource-manager repository. SRM is an async web service built with FastAPI; it keeps catalog, topology and runtime inventory in PostgreSQL, carries commands and events on the DataBus, and answers synchronous queries over internal HTTP. The codebase follows a hexagonal architecture (domain → application → adapters / api). Layout, settings and common changes are described in Implementation & Delivery › Code Layout.
Deployment. SRM ships with the oop-platform Helm umbrella chart (subchart srm). It depends on PostgreSQL and NATS, and on Federation Manager when federation is enabled. Topology and control paths are declared in srm.topology — see how to define zones and the SRM chart README. Platform install is covered in Deploy with Helm; build, image and startup order are in Implementation & Delivery › Build and Deployment. On the kind install from the provided script, SRM’s OpenAPI docs are at http://localhost:32415/docs; the port is published for development only, since the API has no login.