Skip to content

Commit b6620cd

Browse files
authored
EIM API design (#1308)
1 parent eb37d78 commit b6620cd

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Design: Modularized EIM API in context of modular EMF deployments in 2026.02 release
2+
3+
Author(s): Edge Infrastructure Manager Team
4+
5+
Last updated: 22/12/2025
6+
7+
## Abstract
8+
9+
In 2026.2 release of the EMF the requirement is to decompose the EIM API to deliver multiple streamlined
10+
workflows. This design follows up the
11+
[Scenario-Specific Northbound APIs and CLI Commands for EIM Decomposition ADR](https://github.com/open-edge-platform/edge-manageability-framework/blob/57f234a08eb83b320b31cd8db34c7c7ea4837973/design-proposals/eim-nbapi-cli-decomposition.md)
12+
created for this specific topic with a more detailed design considering specific workflows.
13+
14+
## Workflows
15+
16+
### Full EMF/Standalone full EIM (2026.0)
17+
18+
This is the standard deployment of EIM, in both cases, that is if the full EMF is deployed (EIM/CO/AO) or if
19+
the full EIM is deployed without the CO/AO in standalone, the full set of EIM APIs is exposed.
20+
21+
The modular EIM will be deployed with the following services:
22+
23+
- Onboarding service APIs
24+
- Provisioning service APIs
25+
- Maintenance service APIs
26+
- Workload service APIs*
27+
- Observability APIs
28+
29+
In both cases there will be a microservice running on the Orchestrator exposing the list of available features.
30+
In the case of full EMF this microservice will report all features related to all APIs, in the case of full EIM in
31+
standalone the microservice will report only the EIM features and the full list of services exposed by the EIM API.
32+
33+
### EIM - Observability (2026?)
34+
35+
This is a scenario where observability stack is subtracted from standard EIM deployment. All other EIM APIs are exposed.
36+
37+
The modular EIM will be deployed with the following services:
38+
39+
- Onboarding service APIs
40+
- Provisioning service APIs
41+
- Maintenance service APIs
42+
- Workload service APIs*
43+
44+
### EIM - vPRO only (2026.0)
45+
46+
In this deployment only the minimum viable EIM API stack will be deployed along with the vPRO related APIs and
47+
resource managers and agents. In this scenario the EIM API will only expose the host services used to manage the
48+
host resource - since only the host resource is needed to onboard the EN, activate vPRO and do power management
49+
of the EN via vPRO.
50+
51+
This version of modular EIM API will be deployed with the following service:
52+
53+
- Onboarding service APIs
54+
55+
It is assumed that provisioning/instance creation and creation of associated resources related to provisioning is
56+
not needed.
57+
58+
API and Inventory interactions (Non CLI steps/flows subject to change /implementation - this flow is only to
59+
demonstrate the interactions between API/Inventory/CLI).
60+
61+
1. User pre-registers host via the orch-cli using the *host service* EIM API (by providing the UUID and/or
62+
Serial No.) - there is no need to create an instance, or allocate EN to site since there is no EN management
63+
outside of vPRO related actions.
64+
2. User provisions own OS onto the EN manually and installs the Device Activation Agent (DAA), the agent
65+
communicates with the scaled back version of Onboarding Manager.
66+
3. If the information from ENs DAA matches the information provided at pre-registration (Serial/UUID) the scaled
67+
back version of the Onboarding Manager changes the status of the EN to onboarded in the *host resource*
68+
(host_status) in the inventory and creates/responds to the DAA on the EN with credentials for the PMA agent.
69+
4. User installs the PMA agent, and PMA agent waits for credentials. Remote Provisiong Client (RPC) is also
70+
installed.
71+
5. Once the PMA receives credentials it establishes connection with the Device Management Manager (DMM) on the
72+
EN. The PMA checks the device support status with RPC.
73+
6. PMA shares the RPC device support status to DMM, the DMM updates the status of the device in inventory, the
74+
status is updated in the *host resource* (amt_status* (double check if that the right field)).
75+
7. At this stage via the orch-cli the EIM API *host service* can be queried to see the AMT/vPRO information for
76+
the host if the EN supports vPRO (amt_status* (double check if that the right field)).
77+
8. User will create CIRA configuration and Domain profile via the orch-cli using the Remote Provisioning Server
78+
APIs. This information is stored within the Out-Of-Band service (RPS/MPS)
79+
9. User activates the AMT/vPRO via the orch-cli once again using the *host service* EIM API (desired_amt_state).
80+
The DMM observes the *host resource* (desired_amt) for the activation details, the PMA on EN periodically
81+
checks in with DMM to obtain the same status. Once the status is obtained by PMA it sends activation command
82+
to RPC.
83+
10. RPC on the EN starts the device activation by reaching out to RPS. RPS and and RPC exchange information
84+
(including the previously created CIRA config and Domain Profile). Once activated the PMA on the EN reports
85+
the status back to the DMM, the DMM changes the status in the *host_resource* in the inventory
86+
(current_amt_state).
87+
11. At this stage via the orch-cli the EIM API *host service* can be queried to see the AMT/vPRO activation
88+
status.
89+
12. Once the EN's AMT/vPRO is activated the user can power cycle the EN via the orch-cli using the EIM API "host
90+
service" by toggling the desired_power_state. The power status can be queried via the orch-cli by using the
91+
*host service's* power_status.
92+
13. The DMM watches the power state and updated through RPS, once updated the RPS/PRC manages the power cycle
93+
94+
![vPRO decomp](./images/eim-api-decomp-vpro-only.png)
95+
96+
*NOTE:* Not all relationships between CLI/API/Inventory are shown in diagram above for the sake of keeping it
97+
readable. I.e assume that anything to do with listing/getting/deleting a host is in place and the relevant
98+
path/APIs/fields in inventory are used.
99+
100+
## EIM API modularity
101+
102+
The EIM APIv2 modularity will be achieved by enabling only necessary
103+
services based on required functionality by registering only necessary service handlers.
104+
Services are grouped
105+
together in manifests, forming API sets tailored for a given workflow.
106+
107+
The services/APIs will be categorized into the following buckets:
108+
109+
![APIv2 modular buckets](./images/eim-api-decomp-buckets.png)
110+
111+
The APIv2 will then be built based on a manifest files calling out the required services. Once built it will be
112+
composed into a docker image that can be used to deploy the APIv2 for a given workflow.
113+
114+
![APIv2 modular manifests](./images/eim-api-decomp-manifests.png)
115+
116+
## Opens
117+
118+
- In EIM + vPRO only workflow, is there any sort of onboarding? If not how does the EN get involved with the
119+
orchestrator?
120+
- The vPRO only ADR does not include onboarding from Orchestrator PoV or any agent that would do this from EN
121+
side:
122+
[vpro-eim-modular-decomposition](https://github.com/open-edge-platform/edge-manageability-framework/blob/557752e210cf0a34fd8fddef3f2a07b8c9206728/design-proposals/vpro-eim-modular-decomposition.md)
123+
- The onboarding/provisioning decomposition assumes that the device activation agent is moved from uOS to Agent
124+
and that the provisioning phase is split - ie. the OS provisioning does not happen and Agent provisioning is
125+
manual - but in each case there is still onboarding manager on the Orchestrator and all the resources must be
126+
available in API:
127+
[separation-of-onboard-and-provisioning](https://github.com/open-edge-platform/edge-manageability-framework/blob/6889486cb05cbc6ffee3fc370b519ab30fbe34e0/design-proposals/separation-of-onboard-and-provisioning.md)
128+
- In essence vPRO ADR does not consider onboarding at all, and the second ADR considers that the API/Inventory
129+
will always be overloaded with resources that are not needed for vPRO only scenario.
130+
131+
**Answer**: There will be some sort of onboarding, should be minimal, we should not have the overload of API with
132+
provisioning related resources in this workflow.
133+
134+
- What is the goal of the EIM+vPRO only workflow, is it only to enable vPRO activation and power management and
135+
the Edge Node will not be provisioned inside the Orchestrator?
136+
137+
**Answer**: Yes, the goal is to onboard the EN - manually install the Agents on EN and establish communication,
138+
then activate vPRO and power cycle the machine, we do not expect any Orchestrator management of the device apart
139+
from vPRO/powercycle - therefore we do not need to have APIs related to any instance and instance related
140+
resources.
141+
142+
- What is the look and feel of a vPRO only EN when enrolled to the Orchestrator?
143+
- Is it supposed to show up as a register or onboarded node?
144+
- Can the user decide to install their own OS and manually provision by installing agents?
145+
- Should the user be able to assign the vPRO only EN to a site? Or we do not care about locations in this workflow?
146+
- If the provisioning is not a part of this workflow can we assume instance creation and anything associated
147+
with the instance is not needed (osprofile,localaccount,customconfig)?
148+
149+
**Answer**: EN is onboarded, user must install their own OS to install DAA and PMA, there is no need to assign
150+
the ENs to sites as we can assume they are managed outside of EMF, anything to do with provisioning can be
151+
disregarded in this scenario
87 KB
Loading
26.3 KB
Loading
242 KB
Loading

0 commit comments

Comments
 (0)