Skip to content

Add FPGA, GRUB, ONIE platform types #1334

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

Open
wants to merge 17 commits into
base: master
Choose a base branch
from

Conversation

mrevang
Copy link

@mrevang mrevang commented Jul 9, 2025

Change Scope

  • Adds a new hardware component type: FPGA. This type will compliment INTEGRATED_CIRCUIT, which is widely used to represent a switching ASIC.
  • Adds two new software component types: BOOT_LOADER_ONIE and BOOT_LOADER_GRUB. Given the generic BOOT_LOADER type already exists, adding a boot-loader-subtype leaf was considered. Ultimately that approach was rejected since it requires an additional leaf, and boot loader types aren't expected to proliferate.
  • This change is backwards compatible.

Platform Implementations

@mrevang mrevang requested a review from a team as a code owner July 9, 2025 17:50
@dplore
Copy link
Member

dplore commented Jul 9, 2025

/gcbrun

@dplore dplore moved this to Ready to discuss in OC Operator Review Jul 9, 2025
@OpenConfigBot
Copy link

OpenConfigBot commented Jul 9, 2025

No major YANG version changes in commit 7039d25

@dplore
Copy link
Member

dplore commented Jul 10, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 10, 2025

With only one leaf for component/bootloader (type), it's redundant to /components/component/state/type. If we had bootloader specific leaves, then I would strongly favor adding /components/component/bootloader. The only other leaf I can think to add is also covered as generic component leaves (/components/component/state/firmware-version)

What if we add the additional/more specific bootloader identities as children of OPENCONFIG_SOFTWARE_COMPONENT ?
ie:

identity BOOT_LOADER_GRUB {
    base OPENCONFIG_SOFTWARE_COMPONENT;

I think this is slightly simpler as it maintains the existing, single, flat identity tree for OPENCONFIG_SOFTWARE_COMPONENT. (I acknowledge @mrevang originally suggested this)

If we expected a large number (10+ ?) of bootloaders then a new, nested bootloader identity seems better. But there just aren't that many bootloaders for network devices and they are not rapidly changing.

On the whole, I don't see any of these suggestions as wrong. But I would like to not spend too much energy on this issue as I think this is a low impact change. 😉

@earies
Copy link
Contributor

earies commented Jul 10, 2025

With only one leaf for component/bootloader (type), it's redundant to /components/component/state/type. If we had bootloader specific leaves, then I would strongly favor adding /components/component/bootloader. The only other leaf I can think to add is also covered as generic component leaves (/components/component/state/firmware-version)

What if we add the additional/more specific bootloader identities as children of OPENCONFIG_SOFTWARE_COMPONENT ? ie:

identity BOOT_LOADER_GRUB {
    base OPENCONFIG_SOFTWARE_COMPONENT;

I think this is slightly simpler as it maintains the existing, single, flat identity tree for OPENCONFIG_SOFTWARE_COMPONENT. (I acknowledge @mrevang originally suggested this)

If we expected a large number (10+ ?) of bootloaders then a new, nested bootloader identity seems better. But there just aren't that many bootloaders for network devices and they are not rapidly changing.

On the whole, I don't see any of these suggestions as wrong. But I would like to not spend too much energy on this issue as I think this is a low impact change. 😉

uboot, syslinux, lilo.... all additionals so now we are getting into flavors - so far identities have been mostly generic so if we choose to take this approach vs. put the detail within distinct leafs under a new container such as bootloader we will get into the semantics of potentially overloading the generic BOOT_LOADER identity until trying to propose another identity into the model set.

To draw another correlation, we could have all sorts of "flavors" of controller cards or linecards but we would find another means (another leaf) to describe the flavor of the generic types of CONTROLLER_CARD or LINECARD

@mrevang
Copy link
Author

mrevang commented Jul 10, 2025

With only one leaf for component/bootloader (type), it's redundant to /components/component/state/type. If we had bootloader specific leaves, then I would strongly favor adding /components/component/bootloader. The only other leaf I can think to add is also covered as generic component leaves (/components/component/state/firmware-version)
What if we add the additional/more specific bootloader identities as children of OPENCONFIG_SOFTWARE_COMPONENT ? ie:

identity BOOT_LOADER_GRUB {
    base OPENCONFIG_SOFTWARE_COMPONENT;

I think this is slightly simpler as it maintains the existing, single, flat identity tree for OPENCONFIG_SOFTWARE_COMPONENT. (I acknowledge @mrevang originally suggested this)
If we expected a large number (10+ ?) of bootloaders then a new, nested bootloader identity seems better. But there just aren't that many bootloaders for network devices and they are not rapidly changing.
On the whole, I don't see any of these suggestions as wrong. But I would like to not spend too much energy on this issue as I think this is a low impact change. 😉

uboot, syslinux, lilo.... all additionals so now we are getting into flavors - so far identities have been mostly generic so if we choose to take this approach vs. put the detail within distinct leafs under a new container such as bootloader we will get into the semantics of potentially overloading the generic BOOT_LOADER identity until trying to propose another identity into the model set.

To draw another correlation, we could have all sorts of "flavors" of controller cards or linecards but we would find another means (another leaf) to describe the flavor of the generic types of CONTROLLER_CARD or LINECARD

I've introduced /components/component/boot-loader/state/type, to keep the component/type leaf generic.

@dplore
Copy link
Member

dplore commented Jul 10, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 11, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 14, 2025

/gcbrun

1 similar comment
@dplore
Copy link
Member

dplore commented Jul 15, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 15, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 15, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 15, 2025

/gcbrun

@dplore
Copy link
Member

dplore commented Jul 16, 2025

/gcbrun

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Ready to discuss
Development

Successfully merging this pull request may close these issues.

5 participants