Skip to content
Merged
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
11 changes: 7 additions & 4 deletions Standards/scs-0102-v2-image-metadata.md
Original file line number Diff line number Diff line change
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,4 @@ 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 and adds a new value `oldgeneric`.
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