MOS RPM repositories: URLs, metadata, and other interface details

Improve the API (URLs and metadata) of MOS RPM repositories

Problem description

Currently the codename is bound to the MOS release number, that is, the repo URLs look like (as documented in separate_mos_from_linux)

http://${mirror_host}/mos/centos-6/proposed
http://${mirror_host}/mos/centos-6/security
http://${mirror_host}/mos/centos-6/updates
This stucture yields several issues:
  • it’s impossible to distinguish between repositories targeted for different CentOS versions
  • it’s difficult to support per customer repositories

Proposed changes

Add change the codename mos${mos_release}-${distro_codename}, so the URLs are

http://${mirror_host}/mos-repos/${distro}/mos${mos_release}-${distro}${distro_version}/os/x86_64/
http://${mirror_host}/mos-repos/${distro}/mos${mos_release}-${distro}${distro_version}/updates/x86_64/
http://${mirror_host}/mos-repos/${distro}/mos${mos_release}-${distro}${distro_version}/security/x86_64/
http://${mirror_host}/mos-repos/${distro}/mos${mos_release}-${distro}${distro_version}/holdback/x86_64/
http://${mirror_host}/mos-repos/${distro}/mos${mos_release}-${distro}${distro_version}/cr/x86_64/

Example: MOS 9.0/centos7

http://${mirror_host}/mos-repos/centos/mos9.0-centos7/os/x86_64/
http://${mirror_host}/mos-repos/centos/mos9.0-centos7/updates/x86_64/
http://${mirror_host}/mos-repos/centos/mos9.0-centos7/security/x86_64/
http://${mirror_host}/mos-repos/centos/mos9.0-centos7/holdback/x86_64/
http://${mirror_host}/mos-repos/centos/mos9.0-centos7/cr/x86_64/

Advantages:

  • MOS release can target arbitrary number of Centos versions (limited only by available resources).
  • It’s possible to create arbitrary number of per customer (or per team) RPM repositories using codenames and custom url, but still keeping the overall structure.
  • It’s possible to maintain a separate set of repositories which are not intended for OpenStack nodes (say, packages relevant for Fuel master node only).

Web UI

None

Nailgun

None

Data model

Default set of RPM repositories for OpenStack and FUEL nodes should be changed.

REST API

None

Orchestration

None

RPC Protocol

None

Fuel Client

None

Plugins

None

Fuel Library

None

Alternatives

None

Upgrade impact

None

Security impact

None

Notifications impact

None

End user impact

None

Performance impact

None

Deployment impact

None

Developer impact

None

Infrastructure impact

CI jobs should be configured to consume packages from the correct mirrors

Documentation impact

New RPM URLs and repo metadata should be documented so people can create their repositories the right way.

Implementation

Assignee(s)

Primary assignee:
Sergey Kulanov
Other contributors:
Dmitry Burmistrov
Mandatory design review:

Work Items

  • Fix repo path in related fuel projects:
    • fuel-main;
    • fuel-mirror;
    • fuel-web;
  • Fix repo path in related CI jobs:
    • packaging-ci;
    • fuel-ci with deployment tests;

Dependencies

Testing, QA

Acceptance criteria

  • RPM Packages build jobs should consume new mirror;
  • Deployment tests should consume new mirror;
  • Related changes should be reflected in nailgun fixtures;

References