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

Introduce Instance field in Hardware resource #39

Open
jacobweinstock opened this issue Jun 21, 2024 · 0 comments
Open

Introduce Instance field in Hardware resource #39

jacobweinstock opened this issue Jun 21, 2024 · 0 comments
Labels
status/discussion The scope and kind of work is still in discussion

Comments

@jacobweinstock
Copy link
Member

jacobweinstock commented Jun 21, 2024

I propose we introduce a new top level field in the Hardware CR, instance. An Instance would be data that changes more frequently than the physical characteristics of a machine. This data would generally correspond to information the current operating system on the Hardware uses to configure and identify itself. Or information that is used in the provisioning process of the Hardware. This is in contrast to the facts about Hardware which would/should describe the physical characteristics of a machine and change very infrequently. These facts would move to a field named, attributes. As part of this we should move all state fields to the status part of the CRD.

Why

Currently the v1alpha1 API for Hardware holds facts and some instance data and state about a machine. This means that when state is defined (CAPT uses this, for example), some things like GitOps for Hardware becomes tricky and sometimes infeasible. While state for a Hardware object, or any CR object, is not implicitly bad, this state most often should be in the "status" of an object, not in the "spec".

Examples

The following are example of what could be in "spec" for each category.

Instance data

  • Userdata
  • operatingSystem
  • sshKeys
  • IPAM {vlans,}
  • DHCPEnabled
  • Netboot {enabled,ipxeScript,ipxeURL,osie,kernelParams,}*
  • tags
  • partitions
  • filesystems
  • logical volumes
  • bonding
  • routing {bgp peers, etc}
  • secrets
  • plan
  • facility
  • custom data (user defined key/value pairs)

Attribute data

  • Nics
  • Disks
  • Memory
  • CPU
  • GPU
  • TPU
  • PCI
  • Chassis
  • BIOS
  • Baseboard
  • Product
  • TPM
  • StorageControllers
  • PSU
@jacobweinstock jacobweinstock added the status/discussion The scope and kind of work is still in discussion label Jun 21, 2024
@jacobweinstock jacobweinstock changed the title Introduce Instance resource Introduce Instance field in Hardware resource Jun 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status/discussion The scope and kind of work is still in discussion
Projects
None yet
Development

No branches or pull requests

1 participant