Add beta support to createhdds.py (#12)

* add ability to point at stg or pub baseurl

* add support for building 8.7-Beta virt-install images

* differentiate guestfs and virtInstall
This commit is contained in:
Trevor Cooper 2022-10-13 16:35:51 -07:00 committed by GitHub
parent 4108a7ac16
commit d64b0a2fcb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 128 additions and 7 deletions

View File

@ -238,7 +238,7 @@ class VirtInstallImage(object):
logger.debug("Using kickstart %s", cand) logger.debug("Using kickstart %s", cand)
return cand return cand
def create(self, textinst, retries=3): def create(self, baseurl, textinst, retries=3):
"""Create the image.""" """Create the image."""
if self.arch not in supported_arches(): if self.arch not in supported_arches():
logger.info("Won't create %s image on %s host. This is normal, don't worry. If you " logger.info("Won't create %s image on %s host. This is normal, don't worry. If you "
@ -282,15 +282,15 @@ class VirtInstallImage(object):
memsize = '4096' memsize = '4096'
try: try:
locbase = "https://download.rockylinux.org/{0}/rocky".format(baseurl)
# loctmp is the Distribution tree installation source. Point at the good location # loctmp is the Distribution tree installation source. Point at the good location
#loctmp = "https://download.rockylinux.org/stg/rocky/{0}/BaseOS/{1}/os" loctmp = "{0}/{1}/BaseOS/{2}/os"
loctmp = "https://download.rockylinux.org/pub/rocky/{0}/BaseOS/{1}/os"
ksfile = self.kickstart_file ksfile = self.kickstart_file
xargs = "inst.ks=file:/{0}".format(ksfile) xargs = "inst.ks=file:/{0}".format(ksfile)
args = ["virt-install", "--disk", "size={0},path={1}".format(self.size, tmpfile), args = ["virt-install", "--disk", "size={0},path={1}".format(self.size, tmpfile),
"--os-variant", shortid, "-x", xargs, "--initrd-inject", "--os-variant", shortid, "-x", xargs, "--initrd-inject",
"{0}/{1}".format(SCRIPTDIR, ksfile), "--location", "{0}/{1}".format(SCRIPTDIR, ksfile), "--location",
loctmp.format(str(self.release), arch), "--name", "createhdds", loctmp.format(locbase, str(self.release), arch), "--name", "createhdds",
"--memory", memsize, "--noreboot", "--wait", "-1"] "--memory", memsize, "--noreboot", "--wait", "-1"]
if logger.getEffectiveLevel() == logging.DEBUG: if logger.getEffectiveLevel() == logging.DEBUG:
# let's get virt-install debug logs too # let's get virt-install debug logs too
@ -333,7 +333,7 @@ class VirtInstallImage(object):
os.remove(tmpfile) os.remove(tmpfile)
if retries: if retries:
logger.info("Retrying: %s retries remain after this", str(retries)) logger.info("Retrying: %s retries remain after this", str(retries))
return self.create(textinst, retries=retries-1) return self.create(baseurl, textinst, retries=retries-1)
else: else:
sys.exit("Image creation timed out too many times!") sys.exit("Image creation timed out too many times!")
if ret > 0: if ret > 0:
@ -607,7 +607,10 @@ def cli_all(args, hdds):
missing.extend(outdated) missing.extend(outdated)
for (num, img) in enumerate(missing, 1): for (num, img) in enumerate(missing, 1):
logger.info("Creating image %s...[%s/%s]", img.filename, str(num), str(len(missing))) logger.info("Creating image %s...[%s/%s]", img.filename, str(num), str(len(missing)))
if img.filename.endswith(".img"):
img.create(args.textinst) img.create(args.textinst)
else:
img.create(args.baseurl, args.textinst)
def cli_check(args, hdds): def cli_check(args, hdds):
"""Function for the CLI 'check' subcommand. Basically just calls """Function for the CLI 'check' subcommand. Basically just calls
@ -685,7 +688,10 @@ def cli_image(args, *_):
for (num, img) in enumerate(imgs, 1): for (num, img) in enumerate(imgs, 1):
logger.info("Creating image %s...[%s/%s]", img.filename, str(num), str(len(imgs))) logger.info("Creating image %s...[%s/%s]", img.filename, str(num), str(len(imgs)))
if imgtype == 'guestfs':
img.create(args.textinst) img.create(args.textinst)
else:
img.create(args.baseurl, args.textinst)
def parse_args(hdds): def parse_args(hdds):
"""Parse arguments with argparse.""" """Parse arguments with argparse."""
@ -698,6 +704,10 @@ def parse_args(hdds):
parser.add_argument( parser.add_argument(
'-t', '--textinst', help="For any virt-install images, run the install in text mode " '-t', '--textinst', help="For any virt-install images, run the install in text mode "
"and show details on stdout", action='store_true') "and show details on stdout", action='store_true')
parser.add_argument(
'-b', '--baseurl', help="For any virt-install images, support alt baseurl for initrd and vmlinuz.",
choices=('pub', 'stg'),
default='pub')
# This is a workaround for a somewhat infamous argparse bug # This is a workaround for a somewhat infamous argparse bug
# in Python 3. See: # in Python 3. See:

21
desktop-8.7-Beta.ks Normal file
View File

@ -0,0 +1,21 @@
bootloader --location=mbr
network --bootproto=dhcp
url --url="https://download.rockylinux.org/stg/rocky/8.7-Beta/BaseOS/x86_64/os/"
lang en_US.UTF-8
keyboard us
timezone --utc America/New_York
clearpart --all
autopart
rootpw --plaintext weakpassword
user --name=test --password=weakpassword --plaintext
firstboot --enable
poweroff
%packages
@^workstation-product-environment
-selinux-policy-minimum
%end
%post
touch $INSTALL_ROOT/home/home_preserved
%end

View File

@ -0,0 +1,17 @@
bootloader --location=mbr
network --bootproto=dhcp
url --url="https://download.rockylinux.org/stg/rocky/8.7-Beta/BaseOS/x86_64/os/"
lang en_US.UTF-8
keyboard us
timezone --utc America/New_York
clearpart --all
autopart --encrypted --passphrase=weakpassword
rootpw --plaintext weakpassword
user --name=test --password=weakpassword --plaintext
firstboot --enable
poweroff
%packages
@^workstation-product-environment
-selinux-policy-minimum
%end

View File

@ -155,6 +155,7 @@
"name" : "minimal", "name" : "minimal",
"releases" : { "releases" : {
"8" : ["x86_64", "aarch64"], "8" : ["x86_64", "aarch64"],
"8.7-Beta" : ["x86_64"],
"9" : ["x86_64", "aarch64"] "9" : ["x86_64", "aarch64"]
}, },
"size" : "15" "size" : "15"
@ -163,6 +164,7 @@
"name" : "minimal-uefi", "name" : "minimal-uefi",
"releases" : { "releases" : {
"8" : ["x86_64", "aarch64"], "8" : ["x86_64", "aarch64"],
"8.7-Beta" : ["x86_64"],
"9" : ["x86_64", "aarch64"] "9" : ["x86_64", "aarch64"]
}, },
"size" : "15", "size" : "15",
@ -172,6 +174,7 @@
"name" : "desktop", "name" : "desktop",
"releases" : { "releases" : {
"8": ["x86_64", "aarch64"], "8": ["x86_64", "aarch64"],
"8.7-Beta" : ["x86_64"],
"9" : ["x86_64", "aarch64"] "9" : ["x86_64", "aarch64"]
}, },
"size" : "20" "size" : "20"
@ -180,6 +183,7 @@
"name" : "desktopencrypt", "name" : "desktopencrypt",
"releases" : { "releases" : {
"8" : ["x86_64", "aarch64"], "8" : ["x86_64", "aarch64"],
"8.7-Beta" : ["x86_64"],
"9" : ["x86_64", "aarch64"] "9" : ["x86_64", "aarch64"]
}, },
"size" : "20" "size" : "20"
@ -188,6 +192,7 @@
"name" : "server", "name" : "server",
"releases" : { "releases" : {
"8" : ["x86_64", "aarch64"], "8" : ["x86_64", "aarch64"],
"8.7-Beta" : ["x86_64"],
"9" : ["x86_64", "aarch64"] "9" : ["x86_64", "aarch64"]
}, },
"size" : "9" "size" : "9"
@ -196,6 +201,7 @@
"name" : "support", "name" : "support",
"releases" : { "releases" : {
"8" : ["x86_64", "aarch64"], "8" : ["x86_64", "aarch64"],
"8.7-Beta" : ["x86_64"],
"9" : ["x86_64", "aarch64"] "9" : ["x86_64", "aarch64"]
}, },
"size" : "30" "size" : "30"

14
minimal-8.7-Beta.ks Normal file
View File

@ -0,0 +1,14 @@
bootloader --location=mbr
network --bootproto=dhcp
url --url="https://download.rockylinux.org/stg/rocky/8.7-Beta/BaseOS/x86_64/os/"
lang en_US.UTF-8
keyboard us
timezone --utc America/New_York
clearpart --all
autopart
rootpw weakpassword
poweroff
%packages
@core
%end

18
minimal-uefi-8.7-Beta.ks Normal file
View File

@ -0,0 +1,18 @@
bootloader --location=mbr
network --bootproto=dhcp
url --url="https://download.rockylinux.org/stg/rocky/8.7-Beta/BaseOS/x86_64/os/"
lang en_US.UTF-8
keyboard us
timezone --utc America/New_York
clearpart --all
autopart
rootpw weakpassword
poweroff
%packages
@core
%end
%post
touch $INSTALL_ROOT/home/home_preserved
%end

16
server-8.7-Beta.ks Normal file
View File

@ -0,0 +1,16 @@
bootloader --location=mbr
network --bootproto=dhcp
url --url="https://download.rockylinux.org/stg/rocky/8.7-Beta/BaseOS/x86_64/os/"
lang en_US.UTF-8
keyboard us
timezone --utc America/New_York
clearpart --all
autopart
rootpw weakpassword
user --name=test --password=weakpassword --plaintext
poweroff
%packages
@^server-product-environment
plymouth-system-theme
%end

19
support-8.7-Beta.ks Normal file
View File

@ -0,0 +1,19 @@
bootloader --location=mbr
network --bootproto=dhcp
url --url="https://download.rockylinux.org/stg/rocky/8.7-Beta/BaseOS/x86_64/os/"
#repo --name="epel" --baseurl="http://mirrors.kernel.org/fedora-epel/8/Everything/x86_64/"
# use epel to keep scsi-target-utils instead of targetcli
lang en_US.UTF-8
keyboard us
timezone --utc America/New_York
clearpart --all
autopart
rootpw weakpassword
poweroff
%packages
@core
targetcli
nfs-utils
dnsmasq
%end