Data¶
CDN definitions¶
This dataset contains placeholder/reference data.
It is also available in raw JSON or YAML format at URLs:
https://release-engineering.github.io/cdn-definitions/data.json
https://release-engineering.github.io/cdn-definitions/data.yaml
---
# Version of this data structure's format.
# Version string is maintained in accordance with SemVer.
version: "1.3.0"
# Aliases between paths used for consuming content under RHUI entitlements.
#
# Each item defines a "src" (a path accessible under RHUI entitlements)
# and a "dest" (a path where identical content is accessible under non-RHUI entitlements).
# For example, /content/dist/rhel/rhui/X should be an alias for /content/dist/rhel/X.
#
# For some of these aliases, certain content is filtered under the /rhui/ paths
# (mainly architectures). This is currently not expressed in the dataset here.
rhui_alias:
- src: /content/aus/rhel8/rhui
dest: /content/aus/rhel8
- src: /content/aus/rhel/rhui
dest: /content/aus/rhel
- src: /content/beta/rhel8/rhui
dest: /content/beta/rhel8
- src: /content/beta/rhel-alt/rhui
dest: /content/beta/rhel-alt
- src: /content/beta/rhel/rhui
dest: /content/beta/rhel
- src: /content/beta/rhs/rhui
dest: /content/beta/rhs
- src: /content/dist/layered/rhui
dest: /content/dist/layered
- src: /content/dist/middleware/rhui
dest: /content/dist/middleware
- src: /content/dist/rhel8/rhui
dest: /content/dist/rhel8
- src: /content/dist/rhel-alt/rhui
dest: /content/dist/rhel-alt
- src: /content/dist/rhel/rhui
dest: /content/dist/rhel
- src: /content/dist/rhes/rhui
dest: /content/dist/rhes
- src: /content/dist/rhs/rhui
dest: /content/dist/rhs
- src: /content/e4s/rhel8/rhui
dest: /content/e4s/rhel8
- src: /content/e4s/rhel/rhui
dest: /content/e4s/rhel
- src: /content/els/rhel/rhui
dest: /content/els/rhel
- src: /content/eus/rhel8/rhui
dest: /content/eus/rhel8
- src: /content/eus/rhel/rhui
dest: /content/eus/rhel
- src: /content/rc/rhel/rhui
dest: /content/rc/rhel
# Aliases between paths relating to the origin area of CDN.
origin_alias:
# Top-level of origin is accessible also under "content".
#
# Original rationale: relative symlinks from Packages to origin were shared between rhui
# and non-rhui repos, but paths for rhui repos are one level deeper than non-rhui repos.
#
# That means a relative link starting with a sequence of "../../.." reaching up to
# /origin for a non-rhui repo would only reach up to /content/origin for a rhui repo;
# hence for the same link to work in both cases, this alias must exist.
- src: /content/origin
dest: /origin
# "rpm" and "rpms" mean the same thing under origin.
#
# This was originally introduced due to a bug in publishing tools, where some code
# was designed for "rpms" while other code was designed for "rpm". Rather than fixing
# it properly, it was worked around by a symlink, and the workaround is now effectively
# permanent.
- src: /origin/rpm
dest: /origin/rpms
# Aliases between two RHEL-X repositories, both of which contain the latest RHEL-X release.
releasever_alias:
# Each item defines a "src" (a floating RHEL-X repository that always contains the latest content
# for a major RHEL release) and a "dest" (a RHEL-X.Y repository, containing the published content
# for the latest minor release version of RHEL-X).
#
# For example, /content/dist/rhelX/X should be an alias for /content/dist/rhelX/X.Y, where X is a
# major version of RHEL and X.Y is a minor version of RHEL.
#
# These aliases are intended for use with product versions no longer receiving releases, i.e. those
# not covered by rhel_open_dist. For currently active versions, aliases are instead derived from
# other fields such as env_to_releasever_mappings.
- src: /content/dist/rhel0/0
dest: /content/dist/rhel0/0.9
- src: /content/dist/rhel1/1
dest: /content/dist/rhel1/1.11
# Content set prefixes which should be using symlinks at the $releasever level
# according to normal business logic, but for historical reasons are exempt
# and instead do not use symlinks.
symlink_exceptions:
- "/this/is/an/example/"
release_stream_mappings:
aus:
- "0.0"
eus:
- "0.0"
tus:
- "0.0"
e4s:
- "0.0"
other:
- "0.0"
# Maps an environment to its current and latest dist and beta RHEL releasevers.
env_to_releasever_mappings:
qa:
current_rhel0_beta: "0.0"
current_rhel0_dist: "0.0"
latest_rhel0_beta: "0.0"
latest_rhel0_dist: "0.0"
stage:
current_rhel0_beta: "0.0"
current_rhel0_dist: "0.0"
latest_rhel0_beta: "0.0"
latest_rhel0_dist: null
prod:
current_rhel0_beta: "0.0"
current_rhel0_dist: "0.0"
latest_rhel0_beta: "0.0"
latest_rhel0_dist: "0.0"
# Workaround used to override cf-me's platform_full_version.
cfme_version_mappings:
"0.0": "0.0"
# Maps a RHEL variant substring to an expected TPS string.
tps_variant_mappings:
"example-arch": "Example-Variant"
# Workaround used to override the initial RHEL version
override_initial_rhel_release:
"0": "0.0"
# Workaround used to override the final RHEL version for given content set
override_final_rhel_release:
"cs_label_example": "0.0"
# Maps an architecture to RHEL versions that do not include said architecture.
filter_arches_from_release:
"0":
- example_64
# Add your product ID here if your layered product's content sets identify a
# "layered_product_version", but you do not wish to set the "product_version" field in your
# repo's repo notes to your product's layered_product_version.
# Does not apply to cert, openstack, openstack-director, openstack-optools, ose-3.0, or rhs.
ignore_lp_version_product_ids:
- "000"
# The RHUI product ID. Used to identify RHUI repos that do not contain the 'rhui' substring.
rhui_product_id: "000"
# Maps a major RHEL version (platform_major_version), a layered product, or a platform to a list
# of acceptable GA signing keys (ga_keys) and (optional) beta signing keys (beta_keys). The
# default mapping is used to define default signing keys.
signing_keys_mappings:
platform:
example_platform:
ga_keys:
- "FFFFFFFF"
beta_keys:
- "BBBBBBBB"
example_none:
ga_keys: []
layered_product:
example-lp:
ga_keys:
- "00000000"
major_version:
"0":
ga_keys:
- "00000000"
beta_keys:
- "BBBBBBBB"
default:
ga_keys:
- "00000000"
beta_keys:
- "BBBBBBBB"
# A list of RHEL releasevers (minor versions) that should be excluded from listing files
exclude_from_listings:
- "0.0"
# Major RHEL versions which are still expecting new minor releases in
# future. Versions not listed here are exempt from various tooling.
rhel_open_dist:
- 0
# If set to False, ubi_population repo note will be set False for all ubi DOT repos and
# no ubi DOT repo will be populated.
populate_ubi_dot_repos: True
# repo_overrides can be used to define mappings between certain criteria matching CDN repos
# and configuration which should be set on those repos. The intended usage is to allow
# for fine-grained and (usually) temporary deviations from the baseline configuration.
# Allowed value types are boolean, string, integer or float.
repo_overrides:
stage:
# everything is flagged by default
- if_match_id: .
key: example
value: true
# but let's keep at least some e2e repos without the flag so the
# old behavior continues to be tested
- if_match_id: e2e.*rhel-8
key: example
value: false
prod:
# rhel9 content identified by subtree should be flagged
- if_match_path: /content/dist/rhel9/
key: example
value: true
# rhel8 content identified by pulp repo ID created after a certain date
# should be flagged
- if_match_id: rhel-8
if_created_after: "2023-06-01T14:00:00Z"
key: example
value: true
CDN definitions schema¶
This dataset contains the JSON schema declaring the structure of the CDN definitions.
It is also available in raw JSON or YAML format at URLs:
https://release-engineering.github.io/cdn-definitions/schema.json
https://release-engineering.github.io/cdn-definitions/schema.yaml
---
# Schema for CDN definitions dataset.
#
# This schema is used within autotests to ensure that every published
# revision of the dataset matches the expected structure.
#
# Check the dataset itself for explanatory comments on each field.
$schema: http://json-schema.org/draft-07/schema#
$id: http://release-engineering.github.io/cdn-definitions/schema.json
definitions:
arch:
type: string
arch_list:
type: array
items:
$ref: "#/definitions/arch"
uniqueItems: true
release_version:
type: string
pattern: "^[0-9]+\\.[0-9]+$"
major_version:
type: integer
major_version_list:
type: array
items:
$ref: "#/definitions/major_version"
uniqueItems: true
major_version_string:
type: string
pattern: "^[0-9]+$"
signing_key:
type: string
pattern: "^[A-F0-9]{8}$"
product_id:
type: string
pattern: "^[0-9]+$"
content_set_label:
type: string
pattern: "^[A-Za-z0-9_\\-]{1,200}$"
product_id_list:
type: array
items:
$ref: "#/definitions/product_id"
uniqueItems: true
signing_key_list:
type: array
items:
$ref: "#/definitions/signing_key"
uniqueItems: true
release_version_list:
type: array
items:
$ref: "#/definitions/release_version"
uniqueItems: true
major_or_release_version:
type: string
pattern: "^[0-9]+(\\.[0-9]+)*$"
# various product definition mappings
version_to_arch_list_mapping:
type: object
propertyNames:
$ref: "#/definitions/major_version_string"
patternProperties:
".*":
$ref: "#/definitions/arch_list"
additionalProperties: false
major_to_release_version_mapping:
type: object
propertyNames:
$ref: "#/definitions/major_version_string"
patternProperties:
".*":
$ref: "#/definitions/release_version"
additionalProperties: false
content_set_to_release_version_mapping:
type: object
propertyNames:
$ref: "#/definitions/content_set_label"
patternProperties:
".*":
$ref: "#/definitions/release_version"
additionalProperties: false
release_stream_mapping:
type: object
patternProperties:
".*":
$ref: "#/definitions/release_version_list"
additionalProperties: false
current_latest_rhel_versions:
type: object
propertyNames:
type: string
pattern: "^(current|latest)\\_rhel[0-9]+\\_(beta|dist)$"
patternProperties:
".*":
anyOf:
- type: "null"
- $ref: "#/definitions/release_version"
additionalProperties: false
env_to_releasever_mapping:
type: object
patternProperties:
".*":
$ref: "#/definitions/current_latest_rhel_versions"
additionalProperties: false
# TPS stream configuration
tps_variant_mapping:
type: object
patternProperties:
".*":
type: string
additionalProperties: false
# signing keys mappings
beta_and_ga_keys_mapping:
type: object
properties:
beta_keys:
$ref: "#/definitions/signing_key_list"
ga_keys:
$ref: "#/definitions/signing_key_list"
required:
- ga_keys
additionalProperties: false
major_version_to_signing_keys_mapping:
propertyNames:
$ref: "#/definitions/major_version_string"
patternProperties:
".*":
$ref: "#/definitions/beta_and_ga_keys_mapping"
additionalProperties: false
string_to_signing_keys_mapping:
patternProperties:
".*":
$ref: "#/definitions/beta_and_ga_keys_mapping"
additionalProperties: false
signing_keys_mapping:
type: object
properties:
default:
$ref: "#/definitions/beta_and_ga_keys_mapping"
layered_product:
$ref: "#/definitions/string_to_signing_keys_mapping"
platform:
$ref: "#/definitions/string_to_signing_keys_mapping"
major_version:
$ref: "#/definitions/major_version_to_signing_keys_mapping"
required:
- layered_product
- platform
- major_version
additionalProperties: false
# misc workarounds
exclude_versions_from_listings:
type: array
items:
$ref: "#/definitions/release_version"
uniqueItems: true
cfme_version_mappings_list:
type: object
propertyNames:
$ref: "#/definitions/major_or_release_version"
patternProperties:
".*":
$ref: "#/definitions/major_or_release_version"
additionalProperties: false
# cdn configuration
absolute_path:
type: string
pattern: "^/"
path_alias:
type: object
properties:
src:
$ref: "#/definitions/absolute_path"
dest:
$ref: "#/definitions/absolute_path"
required:
- src
- dest
additionalProperties: false
path_alias_list:
type: array
items:
$ref: "#/definitions/path_alias"
uniqueItems: true
symlink_exception_list:
type: array
items:
$ref: "#/definitions/absolute_path"
uniqueItems: true
iso8601_datetime:
type: string
anyOf:
- format: date
- format: date-time
repo_override:
type: object
properties:
if_match_id:
type: string
if_match_path:
$ref: "#/definitions/absolute_path"
if_created_before:
$ref: "#/definitions/iso8601_datetime"
if_created_after:
$ref: "#/definitions/iso8601_datetime"
key:
type: string
minLength: 1
value:
type:
- string
- boolean
- number
allOf:
- required:
- key
- value
- anyOf:
- required:
- if_match_id
- required:
- if_match_path
- required:
- if_created_before
- required:
- if_created_after
additionalProperties: false
repo_overrides:
type: object
patternProperties:
".*":
type: array
items:
$ref: "#/definitions/repo_override"
additionalProperties: false
type: object
properties:
version:
type: string
pattern: "^[0-9]+\\.[0-9]+\\.[0-9]+$"
rhui_alias:
$ref: "#/definitions/path_alias_list"
origin_alias:
$ref: "#/definitions/path_alias_list"
releasever_alias:
$ref: "#/definitions/path_alias_list"
symlink_exceptions:
$ref: "#/definitions/symlink_exception_list"
release_stream_mappings:
$ref: "#/definitions/release_stream_mapping"
env_to_releasever_mappings:
$ref: "#/definitions/env_to_releasever_mapping"
cfme_version_mappings:
$ref: "#/definitions/cfme_version_mappings_list"
tps_variant_mappings:
$ref: "#/definitions/tps_variant_mapping"
override_initial_rhel_release:
$ref: "#/definitions/major_to_release_version_mapping"
override_final_rhel_release:
$ref: "#/definitions/content_set_to_release_version_mapping"
filter_arches_from_release:
$ref: "#/definitions/version_to_arch_list_mapping"
signing_keys_mappings:
$ref: "#/definitions/signing_keys_mapping"
rhel_open_dist:
$ref: "#/definitions/major_version_list"
rhui_product_id:
$ref: "#/definitions/product_id"
ignore_lp_version_product_ids:
$ref: "#/definitions/product_id_list"
exclude_from_listings:
$ref: "#/definitions/exclude_versions_from_listings"
populate_ubi_dot_repos:
type: boolean
repo_overrides:
$ref: "#/definitions/repo_overrides"
additionalProperties: false