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
|
||||
Source0: productmd-%{version}.tar.bz2
|
||||
Patch0: 0001-update-the-other-two-_validate_version-functions-to-.patch
|
||||
Patch1: e0e360766b8e3882f7a947ba00c82ae59f392d80.patch
|
||||
|
||||
Obsoletes: productmd <= %{version}-%{release}
|
||||
Provides: productmd = %{version}-%{release}
|
||||
@ -57,6 +58,7 @@ and installation media.
|
||||
%setup -qc -n productmd-%{version}
|
||||
pushd productmd-%{version}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
popd
|
||||
mv productmd-%{version} python2
|
||||
|
||||
@ -113,6 +115,9 @@ popd
|
||||
%endif
|
||||
|
||||
%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
|
||||
- add a patch to make rawhide as a version consistently an option
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user