Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions Standards/scs-0102-v2-image-metadata.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: SCS Image Metadata
type: Standard
status: Draft
status: Stable
track: IaaS
description: |
This is version 2 of the SCS-0102 Image Metadata Standard.
Expand Down Expand Up @@ -60,6 +60,7 @@ require an additional field:
| `os_purpose` value | Intention |
|--------------------|-----------------------------------------------------------|
| `generic` | A general purpose image, (mostly) vanilla from upstream |
| `oldgeneric` | A general purpose image, replaced by a newer one |
| `minimal` | A much more barebones general purpose image |
| `k8snode` | Node image built for k8s with CRI and kubelet |
| `gpu` | Image with GPU drivers e.g. for HPC or AI |
Expand All @@ -70,8 +71,8 @@ require an additional field:
of doubt. Talk to the SCS standardization bodies if you'd like to see this list extended which is
likely the case if you fall back to `custom`.

The usage of standardized `os_distro`, `os_version`, `architecture`, and `os_purpose` help cloud users to create
automation that works across clouds without requiring image names to be standardized.
The usage of standardized `os_distro`, `os_version`, `architecture`, and `os_purpose` helps cloud users
to create automation that works across clouds without requiring image names to be standardized.

_Uniqueness requirement_: For every assignment of values for `os_distro`, `os_version`,
and `architecture`, there MUST be at most one public (`visibility=public`),
Expand Down Expand Up @@ -110,7 +111,9 @@ level).
Technically, the thus updated image is a new image and will thus carry a new UUID.
It is recommended that the old image gets renamed (e.g. build date or patch level attached)
and hidden (`os_hidden=True`), but remains accessible via its (unchanged) UUID for some
time.
time. If an old image with `os_purpose` setting of `generic` is kept that way, we recommend
to change `os_purpose` to `oldgeneric`. If it is not hidden, this is mandatory to meet
the uniqueness requirement.

The update handling by the provider is described via the properties `replace_frequency`,
`uuid_validity`, `provided_until`, and `hotfix_hours`.
Expand Down Expand Up @@ -271,4 +274,5 @@ A boolean property that is not present is considered to be `false`.
- Reference OpenStack image spec for standard values of `os_distro`, `architecture` and `hypervisor_type`.
- Recommendation on `os_version` to be a version number (if such a value exists).
- Recommended field `os_purpose`.
- Version 2.0 (this one) makes the field `os_purpose` mandatory.
- Version 2.0 makes the field `os_purpose` mandatory.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
- Version 2.0 makes the field `os_purpose` mandatory.
- Version 2.0 makes the field `os_purpose` mandatory and adds a new value `oldgeneric`.

- Version 2.1 added an `os_purpose` of `oldgeneric`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
- Version 2.1 added an `os_purpose` of `oldgeneric`.

Related to comment above.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We shouldn't omit the change though. It should be included in line 277.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Agree with @mbuechse

Copy link
Copy Markdown
Contributor

@depressiveRobot depressiveRobot May 20, 2026

Choose a reason for hiding this comment

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

You are right. I'll create an additional suggestion.

2 changes: 1 addition & 1 deletion Tests/iaas/scs_0102_image_metadata/image_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
HW_DISK_BUSES = ("virtio", "scsi", None) # FIXME why None?
HYPERVISOR_TYPES = ("qemu", "kvm", "xen", "hyper-v", "esxi", None)
HW_RNG_MODELS = ("virtio", None)
OS_PURPOSES = ("generic", "minimal", "k8snode", "gpu", "network", "custom")
OS_PURPOSES = ("generic", "oldgeneric", "minimal", "k8snode", "gpu", "network", "custom")
# Auxiliary mapping for `freq2secs` (note that values are rounded up a bit on purpose)
FREQ_TO_SEC = {
"never": 0,
Expand Down
Loading