Data

CDN definitions

This dataset contains placeholder/reference data.

It is also available in raw JSON or YAML format at URLs:

---
# 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:

---
# 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