Skip to content

Commit 1e67896

Browse files
committed
Introduce new oldgeneric os_purpose. Stabilize 0102-v2.
As discussed on SIG Std/Cert on 2026-05-07. This PR does three things: - Introduce a new os_purpose oldgeneric. As only the generic images have the uniqueness requirements, we don't need a catch-all "old" nor do we need oldXXXX at this point. - By consequence, change the standard to v2.1. - Stabilize it. Signed-off-by: Kurt Garloff <kurt@garloff.de>
1 parent 66d034b commit 1e67896

2 files changed

Lines changed: 11 additions & 7 deletions

File tree

Standards/scs-0102-v2-image-metadata.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
title: SCS Image Metadata
33
type: Standard
4-
status: Draft
4+
status: Stable
55
track: IaaS
66
description: |
7-
This is version 2 of the SCS-0102 Image Metadata Standard.
7+
This is version 2.1 of the SCS-0102 Image Metadata Standard.
88
It outlines how to categorize and manage metadata for cloud-based operating
99
system images to ensure usability and clarity. The standard encompasses naming conventions, technical requirements,
1010
image handling protocols including updating and origin, and licensing/support details. These guidelines ensure
@@ -60,6 +60,7 @@ require an additional field:
6060
| `os_purpose` value | Intention |
6161
|--------------------|-----------------------------------------------------------|
6262
| `generic` | A general purpose image, (mostly) vanilla from upstream |
63+
| `oldgeneric` | A general purpose image, replaced by a newer one |
6364
| `minimal` | A much more barebones general purpose image |
6465
| `k8snode` | Node image built for k8s with CRI and kubelet |
6566
| `gpu` | Image with GPU drivers e.g. for HPC or AI |
@@ -70,8 +71,8 @@ require an additional field:
7071
of doubt. Talk to the SCS standardization bodies if you'd like to see this list extended which is
7172
likely the case if you fall back to `custom`.
7273

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

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

115118
The update handling by the provider is described via the properties `replace_frequency`,
116119
`uuid_validity`, `provided_until`, and `hotfix_hours`.
@@ -271,4 +274,5 @@ A boolean property that is not present is considered to be `false`.
271274
- Reference OpenStack image spec for standard values of `os_distro`, `architecture` and `hypervisor_type`.
272275
- Recommendation on `os_version` to be a version number (if such a value exists).
273276
- Recommended field `os_purpose`.
274-
- Version 2.0 (this one) makes the field `os_purpose` mandatory.
277+
- Version 2.0 makes the field `os_purpose` mandatory.
278+
- Version 2.1 added an `os_purpose` of `oldgeneric`.

Tests/iaas/scs_0102_image_metadata/image_metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
HW_DISK_BUSES = ("virtio", "scsi", None) # FIXME why None?
1313
HYPERVISOR_TYPES = ("qemu", "kvm", "xen", "hyper-v", "esxi", None)
1414
HW_RNG_MODELS = ("virtio", None)
15-
OS_PURPOSES = ("generic", "minimal", "k8snode", "gpu", "network", "custom")
15+
OS_PURPOSES = ("generic", "oldgeneric", "minimal", "k8snode", "gpu", "network", "custom")
1616
# Auxiliary mapping for `freq2secs` (note that values are rounded up a bit on purpose)
1717
FREQ_TO_SEC = {
1818
"never": 0,

0 commit comments

Comments
 (0)