add 'subvariant' image property, create live/appliance names
This adds the new 'subvariant' property to all images produced by Pungi. For most image types this is the same as the variant, for now. For live_images and livemedia_phase, the image config may specify 'subvariant' and the value will be used if present, otherwise the variant name will be used. We also now synthesize the Koji image 'name' for live and appliance images if the image config doesn't specify it, and use a name that complies better with the naming policy for ARM disk images (partially resolving https://pagure.io/pungi-fedora/issue/7 ). This is completely untested as yet, just bashing stuff out on a Sunday, will work more on it tomorrow. Signed-off-by: Adam Williamson <awilliam@redhat.com>
This commit is contained in:
parent
2fd117367e
commit
254bfb8ca4
@ -364,6 +364,7 @@ def link_boot_iso(compose, arch, variant):
|
|||||||
img.disc_number = 1
|
img.disc_number = 1
|
||||||
img.disc_count = 1
|
img.disc_count = 1
|
||||||
img.bootable = True
|
img.bootable = True
|
||||||
|
img.subvariant = variant.name
|
||||||
img.implant_md5 = implant_md5
|
img.implant_md5 = implant_md5
|
||||||
try:
|
try:
|
||||||
img.volume_id = iso.get_volume_id(new_boot_iso_path)
|
img.volume_id = iso.get_volume_id(new_boot_iso_path)
|
||||||
|
@ -299,6 +299,7 @@ class CreateIsoThread(WorkerThread):
|
|||||||
img.disc_number = cmd["disc_num"]
|
img.disc_number = cmd["disc_num"]
|
||||||
img.disc_count = cmd["disc_count"]
|
img.disc_count = cmd["disc_count"]
|
||||||
img.bootable = cmd["bootable"]
|
img.bootable = cmd["bootable"]
|
||||||
|
img.subvariant = str(cmd['variant'])
|
||||||
img.implant_md5 = iso.get_implanted_md5(cmd["iso_path"])
|
img.implant_md5 = iso.get_implanted_md5(cmd["iso_path"])
|
||||||
try:
|
try:
|
||||||
img.volume_id = iso.get_volume_id(cmd["iso_path"])
|
img.volume_id = iso.get_volume_id(cmd["iso_path"])
|
||||||
|
@ -229,6 +229,7 @@ class CreateImageBuildThread(WorkerThread):
|
|||||||
img.disc_number = 1 # We don't expect multiple disks
|
img.disc_number = 1 # We don't expect multiple disks
|
||||||
img.disc_count = 1
|
img.disc_count = 1
|
||||||
img.bootable = False
|
img.bootable = False
|
||||||
|
img.subvariant = cmd["image_conf"]["image-build"]["variant"]
|
||||||
compose.im.add(variant=cmd["image_conf"]["image-build"]["variant"].uid,
|
compose.im.add(variant=cmd["image_conf"]["image-build"]["variant"].uid,
|
||||||
arch=image_info['arch'],
|
arch=image_info['arch'],
|
||||||
image=img)
|
image=img)
|
||||||
|
@ -122,6 +122,7 @@ class LiveImagesPhase(PhaseBase):
|
|||||||
for variant in self.compose.variants.values():
|
for variant in self.compose.variants.values():
|
||||||
for arch in variant.arches + ["src"]:
|
for arch in variant.arches + ["src"]:
|
||||||
for data in get_arch_variant_data(self.compose.conf, "live_images", arch, variant):
|
for data in get_arch_variant_data(self.compose.conf, "live_images", arch, variant):
|
||||||
|
subvariant = data.get('subvariant', variant.uid)
|
||||||
type = data.get('type', 'live')
|
type = data.get('type', 'live')
|
||||||
|
|
||||||
if type == 'live':
|
if type == 'live':
|
||||||
@ -136,7 +137,7 @@ class LiveImagesPhase(PhaseBase):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
cmd = {
|
cmd = {
|
||||||
"name": data.get("name", None),
|
"name": data.get('name'),
|
||||||
"version": data.get("version", None),
|
"version": data.get("version", None),
|
||||||
"release": self._get_release(data),
|
"release": self._get_release(data),
|
||||||
"dest_dir": dest_dir,
|
"dest_dir": dest_dir,
|
||||||
@ -153,6 +154,7 @@ class LiveImagesPhase(PhaseBase):
|
|||||||
"sign": False,
|
"sign": False,
|
||||||
"type": type,
|
"type": type,
|
||||||
"label": "", # currently not used
|
"label": "", # currently not used
|
||||||
|
"subvariant": subvariant,
|
||||||
}
|
}
|
||||||
|
|
||||||
if 'ksurl' in data:
|
if 'ksurl' in data:
|
||||||
@ -217,12 +219,18 @@ class CreateLiveImageThread(WorkerThread):
|
|||||||
self.basename = '%(name)s-%(version)s-%(release)s' % cmd
|
self.basename = '%(name)s-%(version)s-%(release)s' % cmd
|
||||||
log_file = compose.paths.log.log_file(arch, "liveimage-%s" % self.basename)
|
log_file = compose.paths.log.log_file(arch, "liveimage-%s" % self.basename)
|
||||||
|
|
||||||
|
subvariant = cmd.pop('subvariant')
|
||||||
|
|
||||||
|
imgname = "%s-%s-%s-%s" % (compose.ci_base.release.short, subvariant,
|
||||||
|
'Live' if cmd['type'] == 'live' else 'Disk',
|
||||||
|
arch)
|
||||||
|
|
||||||
msg = "Creating ISO (arch: %s, variant: %s): %s" % (arch, variant, self.basename)
|
msg = "Creating ISO (arch: %s, variant: %s): %s" % (arch, variant, self.basename)
|
||||||
self.pool.log_info("[BEGIN] %s" % msg)
|
self.pool.log_info("[BEGIN] %s" % msg)
|
||||||
|
|
||||||
koji_wrapper = KojiWrapper(compose.conf["koji_profile"])
|
koji_wrapper = KojiWrapper(compose.conf["koji_profile"])
|
||||||
name, version = compose.compose_id.rsplit("-", 1)
|
_, version = compose.compose_id.rsplit("-", 1)
|
||||||
name = cmd["name"] or name
|
name = cmd["name"] or imgname
|
||||||
version = cmd["version"] or version
|
version = cmd["version"] or version
|
||||||
archive = False
|
archive = False
|
||||||
if cmd["specfile"] and not cmd["scratch"]:
|
if cmd["specfile"] and not cmd["scratch"]:
|
||||||
@ -278,11 +286,11 @@ class CreateLiveImageThread(WorkerThread):
|
|||||||
# ISO manifest only makes sense for live images
|
# ISO manifest only makes sense for live images
|
||||||
self._write_manifest(destination)
|
self._write_manifest(destination)
|
||||||
|
|
||||||
self._add_to_images(compose, variant, arch, cmd['type'], self._get_format(image_path), destination)
|
self._add_to_images(compose, variant, subvariant, arch, cmd['type'], self._get_format(image_path), destination)
|
||||||
|
|
||||||
self.pool.log_info("[DONE ] %s" % msg)
|
self.pool.log_info("[DONE ] %s" % msg)
|
||||||
|
|
||||||
def _add_to_images(self, compose, variant, arch, type, format, path):
|
def _add_to_images(self, compose, variant, subvariant, arch, type, format, path):
|
||||||
"""Adds the image to images.json"""
|
"""Adds the image to images.json"""
|
||||||
img = Image(compose.im)
|
img = Image(compose.im)
|
||||||
img.type = 'raw-xz' if type == 'appliance' else type
|
img.type = 'raw-xz' if type == 'appliance' else type
|
||||||
@ -294,6 +302,7 @@ class CreateLiveImageThread(WorkerThread):
|
|||||||
img.disc_number = 1 # We don't expect multiple disks
|
img.disc_number = 1 # We don't expect multiple disks
|
||||||
img.disc_count = 1
|
img.disc_count = 1
|
||||||
img.bootable = True
|
img.bootable = True
|
||||||
|
img.subvariant = subvariant
|
||||||
compose.im.add(variant=variant.uid, arch=arch, image=img)
|
compose.im.add(variant=variant.uid, arch=arch, image=img)
|
||||||
|
|
||||||
def _is_image(self, path):
|
def _is_image(self, path):
|
||||||
|
@ -127,8 +127,10 @@ class LiveMediaPhase(PhaseBase):
|
|||||||
def run(self):
|
def run(self):
|
||||||
for variant in self.compose.get_variants():
|
for variant in self.compose.get_variants():
|
||||||
arches = set([x for x in variant.arches if x != 'src'])
|
arches = set([x for x in variant.arches if x != 'src'])
|
||||||
|
|
||||||
for image_conf in get_variant_data(self.compose.conf, self.name, variant):
|
for image_conf in get_variant_data(self.compose.conf, self.name, variant):
|
||||||
|
subvariant = image_conf.get('subvariant', variant.uid)
|
||||||
|
name = image_conf.get(
|
||||||
|
'name', "%s-%s-Live" % (self.compose.ci_base.release.short, subvariant))
|
||||||
config = {
|
config = {
|
||||||
'target': self._get_config(image_conf, 'target'),
|
'target': self._get_config(image_conf, 'target'),
|
||||||
'arches': self._get_arches(image_conf, arches),
|
'arches': self._get_arches(image_conf, arches),
|
||||||
@ -138,7 +140,8 @@ class LiveMediaPhase(PhaseBase):
|
|||||||
'scratch': image_conf.get('scratch', False),
|
'scratch': image_conf.get('scratch', False),
|
||||||
'release': self._get_release(image_conf),
|
'release': self._get_release(image_conf),
|
||||||
'skip_tag': image_conf.get('skip_tag'),
|
'skip_tag': image_conf.get('skip_tag'),
|
||||||
'name': image_conf['name'],
|
'name': name,
|
||||||
|
'subvariant': subvariant,
|
||||||
'title': image_conf.get('title'),
|
'title': image_conf.get('title'),
|
||||||
'repo': self._get_repos(image_conf, variant),
|
'repo': self._get_repos(image_conf, variant),
|
||||||
'install_tree': self._get_install_tree(image_conf, variant),
|
'install_tree': self._get_install_tree(image_conf, variant),
|
||||||
@ -189,6 +192,7 @@ class LiveMediaThread(WorkerThread):
|
|||||||
' '.join(config['arches']),
|
' '.join(config['arches']),
|
||||||
variant.uid)
|
variant.uid)
|
||||||
self.pool.log_info('[BEGIN] %s' % msg)
|
self.pool.log_info('[BEGIN] %s' % msg)
|
||||||
|
subvariant = config.pop('subvariant')
|
||||||
|
|
||||||
koji_wrapper = KojiWrapper(compose.conf['koji_profile'])
|
koji_wrapper = KojiWrapper(compose.conf['koji_profile'])
|
||||||
cmd = self._get_cmd(koji_wrapper, config)
|
cmd = self._get_cmd(koji_wrapper, config)
|
||||||
@ -236,6 +240,7 @@ class LiveMediaThread(WorkerThread):
|
|||||||
img.disc_number = 1 # We don't expect multiple disks
|
img.disc_number = 1 # We don't expect multiple disks
|
||||||
img.disc_count = 1
|
img.disc_count = 1
|
||||||
img.bootable = True
|
img.bootable = True
|
||||||
|
img.subvariant = subvariant
|
||||||
compose.im.add(variant=variant.uid, arch=image_info['arch'], image=img)
|
compose.im.add(variant=variant.uid, arch=image_info['arch'], image=img)
|
||||||
|
|
||||||
self.pool.log_info('[DONE ] %s' % msg)
|
self.pool.log_info('[DONE ] %s' % msg)
|
||||||
|
Loading…
Reference in New Issue
Block a user