Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add architecture for INBM v5 #629

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft

Conversation

pillaiabhishek
Copy link

PULL DESCRIPTION

INBM v5 architecture

Impact Analysis

Info Please fill out this column
Root Cause Specifically for bugs, empty in case of no variants
Jira ticket Add the name to the Jira ticket eg: "NEXMANAGE-622". Automation will do the linking to Jira

CODE MAINTAINABILITY

  • Added required new tests relevant to the changes
  • Updated Documentation as relevant to the changes
  • PR change contains code related to security
  • PR introduces changes that break compatibility with other modules/services (If YES, please provide description)
  • Run go fmt or format-python.sh as applicable
  • Update Changelog
  • Integration tests are passing
  • If Cloudadapter changes, check Azure connectivity manually

Code must act as a teacher for future developers

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say the platform TPM is only accessed by a pre-exec shell script run by systemd before the inbm-daemon starts up.

1. #### inbm-daemon
- **Function**: Main manageability application which runs in the background
- **Main Tasks**:
- Spawns other `persistant` or `long-living` threads like `cloud-client`, `dispatcher-queue`, `telemetry-reporter` and `aggregator`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if this is necessary to mention at this level, but cloud client for example may spawn its own additional threads to deal with processing grpc or mqtt requests

- **Function**: Management command queue
- **Main Tasks**:
- implements a simple queue of size `1` for device management commands
- invokes `updater` thread based on the type of update command e.g. firmware or os or application
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also handles post-reboot tasks by launching 'updater' thread a second time if we have the appropriate entry in our metadata. also: we could keep a metadata file like platform update agent does, similar to our existing dispatcher_state

3. **Stage 3: Output**:
- Example: Execution of workloads, generation of results, or API responses.

Extensibility
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thought: with this architecture, modifying by third parties would require changes at source code level, so our focus there would be to provide clean interfaces to do so.

Things a third party might want to add:

  • extra clouds
  • extra telemetry
  • new update types?
  • new commands?

Deployment
----------

[Content of Deployment]
Copy link
Contributor

@gblewis1 gblewis1 Feb 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be similar to existing Turtle Creek. Possibilities:

  • Yocto recipe if desired
  • .debs maybe with installer script
  • Tiber packages
  • udm-bootstrap -- although perhaps this is something that belongs to UDM and doesn't need to be mentioned here

Would also mention installed vs. provisioned, and decommissioning.


Security
--------

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Topics: unix domain socket, TPM, LUKS, AppArmor, filesystem privileges.


Authentication
~~~~~~~~~~~~~~

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

authentication for this design is simple: clouds and inbc users have identity root or system administrator and can execute any valid command/manifest


Scalability
-----------

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scalability is n/a as scope of INBM is single node; not much runs in parallel, small footprint

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants