add support for subvariants
Signed-off-by: Dennis Gilmore <dennis@ausil.us>
This commit is contained in:
parent
d8f514fdb4
commit
8fd8e1958d
126
e0e360766b8e3882f7a947ba00c82ae59f392d80.patch
Normal file
126
e0e360766b8e3882f7a947ba00c82ae59f392d80.patch
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
From e0e360766b8e3882f7a947ba00c82ae59f392d80 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Williamson <awilliam@redhat.com>
|
||||||
|
Date: Sun, 28 Feb 2016 12:48:42 -0800
|
||||||
|
Subject: [PATCH] add 'subvariant' property to images
|
||||||
|
|
||||||
|
This is to solve a problem we have with the Fedora composes.
|
||||||
|
There are 'Spins' and 'Labs' variants which produce several
|
||||||
|
live images and ARM appliances with differing content. With the
|
||||||
|
current metadata, there is no good way to tell the KDE live
|
||||||
|
image from the Xfce or LXDE live images; the only property
|
||||||
|
which indicates this is the 'path', but that has lots of other
|
||||||
|
information in it and is not trivially parseable (as image
|
||||||
|
names don't really strictly follow the naming policy you
|
||||||
|
cannot strictly tell what element of the image file name is
|
||||||
|
the 'subvariant').
|
||||||
|
|
||||||
|
Thus we add a 'subvariant' property which Pungi will populate as
|
||||||
|
appropriate. For many images the 'subvariant' will be the variant,
|
||||||
|
but for Spins and Labs it will indicate the actual content of
|
||||||
|
each image.
|
||||||
|
|
||||||
|
The image metadata version should probably change with this,
|
||||||
|
but I couldn't see the right way to do that (surely I don't
|
||||||
|
just universally bump it to 1, 1 in common.py?) Pungi will
|
||||||
|
also need a few corresponding changes, I will send a Pagure
|
||||||
|
PR for those.
|
||||||
|
---
|
||||||
|
doc/images-1.0.rst | 1 +
|
||||||
|
productmd/images.py | 7 +++++++
|
||||||
|
tests/test_images.py | 12 +++++++-----
|
||||||
|
3 files changed, 15 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/doc/images-1.0.rst b/doc/images-1.0.rst
|
||||||
|
index fa04ad3..6ac36b7 100644
|
||||||
|
--- a/doc/images-1.0.rst
|
||||||
|
+++ b/doc/images-1.0.rst
|
||||||
|
@@ -40,6 +40,7 @@ in order to read and diff images.json files easily.
|
||||||
|
"implant_md5": <str|null>, # md5 checksum implanted directly on media (see implantisomd5 and checkisomd5 commands)
|
||||||
|
"mtime": <int>, # mtime of the image stored as a decimal unix timestamp
|
||||||
|
"path": <str>, # relative path to the image
|
||||||
|
+ "subvariant": <str>, # image content (e.g. 'Workstation' or 'KDE')
|
||||||
|
"size": <int>, # file size of the image
|
||||||
|
"type": <str>, # see productmd.images.SUPPORTED_IMAGE_TYPES
|
||||||
|
"volume_id": <str|null> # volume ID; null if not available/applicable
|
||||||
|
diff --git a/productmd/images.py b/productmd/images.py
|
||||||
|
index ca8fbd4..df825bb 100644
|
||||||
|
--- a/productmd/images.py
|
||||||
|
+++ b/productmd/images.py
|
||||||
|
@@ -119,6 +119,7 @@ def __init__(self, parent):
|
||||||
|
self.checksums = {} #: (*str*) -- Release name, for example: "Fedora", "Red Hat Enterprise Linux"
|
||||||
|
self.implant_md5 = None #: (*str* or *None*) -- value of implanted md5
|
||||||
|
self.bootable = False #: (*bool=False*) --
|
||||||
|
+ self.subvariant = None #: (*str*) -- image contents, may be same as variant or e.g. 'KDE', 'LXDE'
|
||||||
|
|
||||||
|
def _validate_path(self):
|
||||||
|
self._assert_type("path", list(six.string_types))
|
||||||
|
@@ -166,6 +167,10 @@ def _validate_implant_md5(self):
|
||||||
|
def _validate_bootable(self):
|
||||||
|
self._assert_type("bootable", [bool])
|
||||||
|
|
||||||
|
+ def _validate_subvariant(self):
|
||||||
|
+ self._assert_type("subvariant", list(six.string_types))
|
||||||
|
+ self._assert_not_blank("subvariant")
|
||||||
|
+
|
||||||
|
def serialize(self, parser):
|
||||||
|
data = parser
|
||||||
|
self.validate()
|
||||||
|
@@ -182,6 +187,7 @@ def serialize(self, parser):
|
||||||
|
"checksums": self.checksums,
|
||||||
|
"implant_md5": self.implant_md5,
|
||||||
|
"bootable": self.bootable,
|
||||||
|
+ "subvariant": self.subvariant,
|
||||||
|
}
|
||||||
|
data.append(result)
|
||||||
|
|
||||||
|
@@ -198,6 +204,7 @@ def deserialize(self, data):
|
||||||
|
self.checksums = data["checksums"]
|
||||||
|
self.implant_md5 = data["implant_md5"]
|
||||||
|
self.bootable = bool(data["bootable"])
|
||||||
|
+ self.subvariant = data["subvariant"]
|
||||||
|
self.validate()
|
||||||
|
|
||||||
|
def add_checksum(self, root, checksum_type, checksum_value):
|
||||||
|
diff --git a/tests/test_images.py b/tests/test_images.py
|
||||||
|
index 614ab21..603297f 100755
|
||||||
|
--- a/tests/test_images.py
|
||||||
|
+++ b/tests/test_images.py
|
||||||
|
@@ -72,7 +72,7 @@ def test_fedora_20(self):
|
||||||
|
im.compose.respin = 0
|
||||||
|
|
||||||
|
i = Image(im)
|
||||||
|
- i.path = "Fedora/x86_64/iso/Fedora-20-x86_64-DVD.iso"
|
||||||
|
+ i.path = "Fedora/x86_64/iso/Fedora-Server-dvd-x86_64-20.iso"
|
||||||
|
i.mtime = 1410855216
|
||||||
|
i.size = 4603248640
|
||||||
|
i.arch = "x86_64"
|
||||||
|
@@ -80,7 +80,8 @@ def test_fedora_20(self):
|
||||||
|
i.format = "iso"
|
||||||
|
i.disc_number = 1
|
||||||
|
i.disc_count = 1
|
||||||
|
- i.volume_id = "Fedora 20 x86_64"
|
||||||
|
+ i.volume_id = "Fedora-S-dvd-x86_64-20"
|
||||||
|
+ i.subvariant = "Server"
|
||||||
|
|
||||||
|
# checksums
|
||||||
|
i.add_checksum(root=None, checksum_type="sha256", checksum_value="f2eeed5102b8890e9e6f4b9053717fe73031e699c4b76dc7028749ab66e7f917")
|
||||||
|
@@ -98,15 +99,16 @@ def test_fedora_20(self):
|
||||||
|
im.add("Fedora", "x86_64", i)
|
||||||
|
|
||||||
|
i = Image(im)
|
||||||
|
- i.path = "Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso"
|
||||||
|
+ i.path = "Fedora/x86_64/iso/Fedora-Server-boot-x86_64-20.iso"
|
||||||
|
i.mtime = 1410855243
|
||||||
|
i.size = 336592896
|
||||||
|
i.arch = "x86_64"
|
||||||
|
- i.type = "netinst"
|
||||||
|
+ i.type = "boot"
|
||||||
|
i.format = "iso"
|
||||||
|
i.disc_number = 1
|
||||||
|
i.disc_count = 1
|
||||||
|
- i.volume_id = "Fedora 20 x86_64"
|
||||||
|
+ i.volume_id = "Fedora-S-boot-x86_64-20"
|
||||||
|
+ i.subvariant = "Server"
|
||||||
|
|
||||||
|
# checksums
|
||||||
|
i.add_checksum(root=None, checksum_type="sha256", checksum_value="376be7d4855ad6281cb139430606a782fd6189dcb01d7b61448e915802cc350f")
|
@ -23,6 +23,7 @@ License: LGPLv2+
|
|||||||
URL: https://github.com/release-engineering/productmd
|
URL: https://github.com/release-engineering/productmd
|
||||||
Source0: productmd-%{version}.tar.bz2
|
Source0: productmd-%{version}.tar.bz2
|
||||||
Patch0: 0001-update-the-other-two-_validate_version-functions-to-.patch
|
Patch0: 0001-update-the-other-two-_validate_version-functions-to-.patch
|
||||||
|
Patch1: e0e360766b8e3882f7a947ba00c82ae59f392d80.patch
|
||||||
|
|
||||||
Obsoletes: productmd <= %{version}-%{release}
|
Obsoletes: productmd <= %{version}-%{release}
|
||||||
Provides: productmd = %{version}-%{release}
|
Provides: productmd = %{version}-%{release}
|
||||||
@ -57,6 +58,7 @@ and installation media.
|
|||||||
%setup -qc -n productmd-%{version}
|
%setup -qc -n productmd-%{version}
|
||||||
pushd productmd-%{version}
|
pushd productmd-%{version}
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
popd
|
popd
|
||||||
mv productmd-%{version} python2
|
mv productmd-%{version} python2
|
||||||
|
|
||||||
@ -113,6 +115,9 @@ popd
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Mar 11 2016 Dennis Gilmore <dennsi@ausil.us> - 1.0-13
|
||||||
|
- add patch for supporting subvariant
|
||||||
|
|
||||||
* Thu Feb 18 2016 Dennis Gilmore <dennis@ausil.us> - 1.0-12
|
* Thu Feb 18 2016 Dennis Gilmore <dennis@ausil.us> - 1.0-12
|
||||||
- add a patch to make rawhide as a version consistently an option
|
- add a patch to make rawhide as a version consistently an option
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user