Add the Implementation section
Change-Id: I331f0d4b59096073528860697a826846f0720263
This commit is contained in:
parent
bbea8cdfa9
commit
24655a832b
@ -24,11 +24,11 @@ URLs look like (as documented in separate_mos_from_linux_)
|
||||
|
||||
::
|
||||
|
||||
deb http://${mirror_host}/mos/ubuntu mos${mos_release} main restricted
|
||||
deb http://${mirror_host}/mos/ubuntu mos${mos_release}-security main restricted
|
||||
deb http://${mirror_host}/mos/ubuntu mos${mos_release}-updates main restricted
|
||||
deb http://${mirror_host}/mos/ubuntu mos${mos_release}-proposed main restricted
|
||||
deb http://${mirror_host}/mos/ubuntu mos${mos_release}-holdback main restricted
|
||||
deb http://${host}/mos/ubuntu mos${version} main
|
||||
deb http://${host}/mos/ubuntu mos${version}-security main
|
||||
deb http://${host}/mos/ubuntu mos${version}-updates main
|
||||
deb http://${host}/mos/ubuntu mos${version}-proposed main
|
||||
deb http://${host}/mos/ubuntu mos${version}-holdback main
|
||||
|
||||
This stucture yields several issues:
|
||||
- it's impossible to distinguish between repositories targeted for different
|
||||
@ -42,76 +42,94 @@ This stucture yields several issues:
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Change the codename to mos${mos_release}-${distro_codename}, so the URLs are
|
||||
Change the codename to mos${version}[-${distro_codename}], so the URLs are
|
||||
|
||||
::
|
||||
|
||||
deb http://${mirror_host}/mos-repos/${distro} mos${mos_release}-${distro_codename} main
|
||||
deb http://${mirror_host}/mos-repos/${distro} mos${mos_release}-${distro_codename}-security main
|
||||
deb http://${mirror_host}/mos-repos/${distro} mos${mos_release}-${distro_codename}-updates main
|
||||
deb http://${mirror_host}/mos-repos/${distro} mos${mos_release}-${distro_codename}-proposed main
|
||||
deb http://${mirror_host}/mos-repos/${distro} mos${mos_release}-${distro_codename}-holdback main
|
||||
deb http://${host}/mos-repos/${distro}/{version} mos${version} main
|
||||
deb http://${host}/mos-repos/${distro}/{version} mos${version}-security main
|
||||
deb http://${host}/mos-repos/${distro}/{version} mos${version}-updates main
|
||||
deb http://${host}/mos-repos/${distro}/{version} mos${version}-proposed main
|
||||
deb http://${host}/mos-repos/${distro}/{version} mos${version}-holdback main
|
||||
|
||||
and the repository metadata is
|
||||
|
||||
Origin: Mirantis
|
||||
Codename: mos${mos_release}-${distro_codename}
|
||||
Label: mos${mos_release}-${distro_codename}
|
||||
Suite: mos${mos_release}-${distro_codename}${component}
|
||||
Codename: mos${version}
|
||||
Label: mos${version}
|
||||
Suite: mos${version}-${component}
|
||||
|
||||
Example: MOS 7.0/trusty
|
||||
Example: MOS 7.0
|
||||
-------------------------
|
||||
|
||||
::
|
||||
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-security main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-updates main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-proposed main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-holdback main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0 main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-security main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-updates main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-proposed main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-holdback main
|
||||
|
||||
The Release files are:
|
||||
|
||||
Origin: Mirantis
|
||||
Codename: mos7.0-trusty
|
||||
Label: mos7.0-trusty
|
||||
Suite: mos7.0-trusty{,-security,-updates,-proposed,-holdback}
|
||||
Codename: mos7.0
|
||||
Label: mos7.0
|
||||
Suite: mos7.0{,-security,-updates,-proposed,-holdback}
|
||||
|
||||
Example: MOS 7.0/trusty-fuel
|
||||
----------------------------
|
||||
Example: MOS 7.0/vivid
|
||||
-------------------------
|
||||
|
||||
::
|
||||
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-fuel main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-fuel-security main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-fuel-updates main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-fuel-proposed main
|
||||
deb http://${mirror_host}/mos-repos/ubuntu mos7.0-trusty-fuel-holdback main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-security main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-updates main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-proposed main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-holdback main
|
||||
|
||||
The Release files are:
|
||||
|
||||
Origin: Mirantis
|
||||
Codename: mos7.0-trusty-fuel
|
||||
Label: mos7.0-trusty-fuel
|
||||
Suite: mos7.0-trusty-fuel{,-security,-updates,-proposed,-holdback}
|
||||
Codename: mos7.0-vivid
|
||||
Label: mos7.0-vivid
|
||||
Suite: mos7.0-vivid{,-security,-updates,-proposed,-holdback}
|
||||
|
||||
Example: Customer 7.0/trusty
|
||||
Example: MOS 7.0/vivid-fuel
|
||||
----------------------------
|
||||
|
||||
::
|
||||
|
||||
deb http://${mirror_host}/customer/ubuntu customer7.0-trusty main
|
||||
deb http://${mirror_host}/customer/ubuntu customer7.0-trusty-security main
|
||||
deb http://${mirror_host}/customer/ubuntu customer7.0-trusty-updates main
|
||||
deb http://${mirror_host}/customer/ubuntu customer7.0-trusty-proposed main
|
||||
deb http://${mirror_host}/customer/ubuntu customer7.0-trusty-holdback main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-fuel main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-fuel-security main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-fuel-updates main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-fuel-proposed main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 mos7.0-vivid-fuel-holdback main
|
||||
|
||||
The Release files are:
|
||||
|
||||
Origin: Mirantis
|
||||
Codename: mos7.0-vivid-fuel
|
||||
Label: mos7.0-vivid-fuel
|
||||
Suite: mos7.0-vivid-fuel{,-security,-updates,-proposed,-holdback}
|
||||
|
||||
Example: Customer 7.0
|
||||
----------------------------
|
||||
|
||||
::
|
||||
|
||||
deb http://${host}/customer/ubuntu/7.0 customer7.0 main
|
||||
deb http://${host}/customer/ubuntu/7.0 customer7.0-security main
|
||||
deb http://${host}/customer/ubuntu/7.0 customer7.0-updates main
|
||||
deb http://${host}/customer/ubuntu/7.0 customer7.0-proposed main
|
||||
deb http://${host}/customer/ubuntu/7.0 customer7.0-holdback main
|
||||
|
||||
The Release files are:
|
||||
|
||||
Origin: Customer
|
||||
Codename: customer7.0-trusty
|
||||
Label: customer7.0-trusty
|
||||
Suite: customer7.0-trusty{,-security,-updates,-proposed,-holdback}
|
||||
Codename: customer7.0
|
||||
Label: customer7.0
|
||||
Suite: customer7.0{,-security,-updates,-proposed,-holdback}
|
||||
|
||||
Advantages:
|
||||
- MOS release can target arbitrary number of Ubuntu/Debian versions
|
||||
@ -129,7 +147,7 @@ Alternatives
|
||||
Decouple the codename from the MOS release number and use the OpenStack
|
||||
release codename instead, i.e
|
||||
|
||||
deb http://${mirror_host}/mos-repos/ubuntu kilo-trusty main
|
||||
deb http://${host}/mos-repos/ubuntu/7.0 kilo-trusty main
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
@ -190,6 +208,64 @@ Infrastructure impact
|
||||
Implementation
|
||||
==============
|
||||
|
||||
We need to update every release in transaction way.
|
||||
Each release should be a symlink to particular snapshot:
|
||||
|
||||
mos-repos/ubuntu/{version} -> snapshots/{version}-{datetime}
|
||||
mos-repos/ubuntu/snapshots/{version}-{datetime}
|
||||
|
||||
Each snapshot should contain all the data related to corresponding relese
|
||||
|
||||
::
|
||||
|
||||
mos-repos/ubuntu/snapshots/{version}-{datetime}/
|
||||
├─ dists
|
||||
│ ├─ mos7.0
|
||||
│ │ ├─ main
|
||||
│ │ ├─ resticted
|
||||
│ │ ├─ Release
|
||||
│ │ └─ Release.gpg
|
||||
│ └─ mos7.0-updates
|
||||
│ ├─ main
|
||||
│ ├─ resticted
|
||||
│ ├─ Release
|
||||
│ └─ Release.gpg
|
||||
└─ pool
|
||||
|
||||
Updating steps:
|
||||
|
||||
- create new snapshot:
|
||||
snapshots/{version}-{newdatetime}/{dists,pool} based on previous one
|
||||
(in order to reduce uploading traffic, all unchanged files will be
|
||||
linked from previous snapshot with ``rsync --link-dest`` option)
|
||||
|
||||
- update {version} symlink to new snapshot
|
||||
{version} -> snapshots/{version}-{newdatetime}
|
||||
|
||||
As far as current development suite is updating very often (up to ten times
|
||||
per minute), we need a way to freeze its state for all CI processes.
|
||||
We could use snapshots as freezed suite state. Just dereference current
|
||||
suite symlink to actual snapshot.
|
||||
In order to get the actual target of symlink we need to have a kind of
|
||||
dereference mechanism. It can be plain text file in the same directory:
|
||||
|
||||
- mos-repos/ubuntu/{version}.target.txt
|
||||
|
||||
which contains target of {version} symlink:
|
||||
|
||||
- ``snapshots/{version}-{timestamp}``
|
||||
|
||||
We could use this value instead of symlink:
|
||||
|
||||
- current repository string:
|
||||
deb {host}/mos-repos/ubuntu/{version} {suite} main
|
||||
|
||||
- dereference suite symlink:
|
||||
{version} -> snapshots/{version}-{datetime}
|
||||
|
||||
- new repository string:
|
||||
deb {host}/mos-repos/ubuntu/snapshots/{version}-{datetime} {suite} main
|
||||
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
Loading…
Reference in New Issue
Block a user