This page provides a high-level roadmap for implementing the Is_anaconda_broken_proposal project. More detailed tasks can be found in autoqa TRAC roadmap. We follow these steps to define the methods by which we initiate testing
Step 1: Identify boot methods, retrieve files and check file sanity
Method | Files | Sanity | Implementation |
---|---|---|---|
DVD | DVD.iso | size,sha256sum, md5sum | /autoinstall/dvd_install/dvd_sanity.py |
CD | 4 CDs | size,sha256sum, md5sum | /autoinstall/cd_install/cd_sanity.py |
Minimal Boot Media | boot.iso | size,sha256sum, md5sum | /autoinstall/bootiso_install/bootiso_sanity.py |
PXE | initrd.img, vmlinuz | /autoinstall/url_install/url_sanity.py |
Step 2: Write kick start file to cover test cases
Most of the test cases can be covered by configure different kick start files. Below is a basic kick start template, more options in the kick start options table can be inserted into it.
#Basic kickstart file for RATS install url --url=REAL_URL_GOES_HERE lang en_US.UTF-8 keyboard us network --device eth0 --mtu=1500 --bootproto dhcp # "autoqa" rootpw --iscrypted $1$Cuh1FaJT$ogG37tqIhVDeq27uvfAYK1 timezone --utc America/New_York # partitioning - nuke and start fresh zerombr clearpart --all --initlabel autopart bootloader --location=mbr reboot # packages should be a superset of critpath %packages @base @base-x %end
The kick start options are below [1]:
Kick start options | ||||||
---|---|---|---|---|---|---|
Options | Values | Description | Install Required | Typical Install Options | Upgrade Required | Typical Upgrade Options |
install | cdrom | yes | install | no | ||
harddrive | ||||||
nfs | ||||||
url | ||||||
upgrade | --root-device=<root> (optional) | no | yes | upgrade | ||
mode | text | yes | text or graphical | yes | text or graphical | |
graphical | ||||||
halt | halt | no | halt | no | halt | |
keyboard | yes | yes | ||||
lang | yes | yes | ||||
clearpart | --all | no | no | |||
--drives | ||||||
--initlabel | ||||||
--linux | ||||||
--none | ||||||
autopart | --encrypted | |||||
--passphrase | ||||||
part or partition | --size | yes | no | |||
--grow | ||||||
--maxsize | ||||||
--noformat | ||||||
--onpart= or --usepart= | ||||||
--ondisk= or --ondrive= | ||||||
--asprimary | ||||||
--fsprofile= | ||||||
--fstype= | ||||||
--fsoptions= | ||||||
--label= | ||||||
--recommended | ||||||
--onbiosdisk= | ||||||
--encrypted | ||||||
--passphrase= | ||||||
--escrowcert=<url> | ||||||
--backuppassphrase | ||||||
ignoredisk | ignoredisk --drives=[disk1,disk2,...] | no | no | |||
ignoredisk --only-use=[disk1,disk2,...] | ||||||
zerombr | zerombr | |||||
autostep | --autoscreenshot | no | no | |||
bootloader | --append | yes | yes | |||
--driveorder | ||||||
--location | ||||||
--password | ||||||
--md5pass | ||||||
--upgrade | ||||||
--timeout | ||||||
comdline | ||||||
device | --opts | |||||
dmraid | dmraid --name= --dev= | |||||
firewall | --enabled or --enable | no | no | |||
--disabled or --disable | ||||||
--trust= | ||||||
<incoming> | ||||||
--port= | ||||||
--service= | ||||||
firstboot | --enable or --enabled | no | no | |||
--disable or --disabled | ||||||
--reconfig | ||||||
group | group --name=<name> [--gid=<gid>] | |||||
logging | --host= | no | no | |||
--port= | ||||||
--level= | ||||||
poweroff | poweroff | no | poweroff | no | poweroff | |
raid | --level | no | no | |||
--device | ||||||
--spares= | ||||||
--fstype | ||||||
--fsoptions | ||||||
--label= | ||||||
--noformat | ||||||
--useexisting | ||||||
--encrypted | ||||||
--passphrase= | ||||||
--escrowcert=<url> | ||||||
--backuppassphrase | ||||||
reboot | --reject | |||||
shutdown | shutdown | |||||
repo | --name= | no | no | |||
--baseurl= | ||||||
--mirrorlist= | ||||||
--cost= | ||||||
--excludepkgs= | ||||||
--includepkgs= | ||||||
--proxy=[protocol://][username[:password]@]host[:port] | ||||||
--ignoregroups=true | ||||||
--noverifyssl | ||||||
rescue | --romount] | no | no | |||
rootpw | --plaintext | yes | ||||
--lock | ||||||
selinux | --disabled | no | no | |||
--enforcing | ||||||
--permissive | ||||||
services | --enabled= | no | no | |||
--disabled= | ||||||
sshpw | --username | no | no | |||
--plaintext | ||||||
--lock | ||||||
skipx | skipx | no | skipx | no | skipx | |
timezone | --utc | yes | ||||
updates | updates [URL] | |||||
user | --name= | no | no | |||
--gecos= | ||||||
--groups= | ||||||
--homedir= | ||||||
--lock | ||||||
--password= | ||||||
--plaintext | ||||||
--shell= | ||||||
--uid= | ||||||
vnc | --host= | no | no | |||
--port= | ||||||
--password= | ||||||
volgroup | <name> | no | no | |||
--noformat | ||||||
--useexiting | ||||||
--pesize | ||||||
xconfig | --defaultdesktop= | |||||
--startxonboot | ||||||
zfcp | --devnum= | |||||
--fcplun= | ||||||
--wwpn= |
List test scenarios,it will make clear that which suite needs to
support.
Test Scenarios | ||||||
---|---|---|---|---|---|---|
Boot Method [2] | ||||||
Test | DVD | CD | boot.iso | PXE images | efidisk.img | Live Image |
Installation Method [3][4] | ||||||
autodetect cdrom | yes | yes | yes | yes | yes | no |
repo=cdrom | yes | yes | yes | yes | yes | no |
repo=http://host/path | yes | yes | yes | yes | yes | no |
repo=ftp://[user:passwd@]server/path | yes | yes | yes | yes | yes | no |
repo=nfs:server:/path | yes | yes | yes | yes | yes | no |
repo=nfsiso:server:/path | yes | yes | yes | yes | yes | no |
repo=hd:device/path | yes | yes | yes | yes | yes | no |
repo=hdiso: | yes | yes | yes | yes | yes | no |
repo=livecd: | no | no | no | no | no | yes |
Methods to locate kickstart file [4] | ||||||
ks (autodetect from dhcp ???(default is nfs)) | yes | yes | yes | yes | yes | unknown |
ks=http://server/path | yes | yes | yes | yes | yes | unknown |
ks=ftp://[user:passwd@]server/path | yes | yes | yes | yes | yes | unknown |
ks=nfs:server:/path | yes | yes | yes | yes | yes | unknown |
ks=file:/path | yes | yes | yes | yes | yes | unknown |
ks=hd:device:/path | yes | yes | yes | yes | yes | unknown |
ks=bd:biosdevice:/path | yes | yes | yes | yes | yes | unknown |
ks=floppy | yes | yes | yes | yes | yes | unknown |
ks=cdrom | yes | yes | yes | yes | yes | unknown |
Methods to locate updates.img | ||||||
updates | yes | yes | yes | yes | yes | no |
updates=http | yes | yes | yes | yes | yes | no |
images/updates.img | no | no | no | yes | yes | no |
RHUpdates | no | no | no | yes | yes | no |
Methods to determine display device | ||||||
graphical | yes | yes | yes | yes | yes | yes |
text | yes | yes | yes | yes | yes | yes |
vnc | yes | yes | yes | yes | yes | no |
cmdline | yes | yes | yes | yes | yes | no |
serial console=ttyS0 | yes | yes | yes | yes | yes | no |
telnet | yes | yes | yes | yes | yes | no |
Methods to choose kickstart network device [4] | ||||||
ksdevice=link | yes | yes | yes | yes | yes | no |
ksdevice=bootif | yes | yes | yes | yes | yes | no |
ksdevice=eth0 | yes | yes | yes | yes | yes | no |
ksdevice=AA:BB:CC:DD:EE:FF | yes | yes | yes | yes | yes | no |
Methods to activate network device | ||||||
ip=dhcp | yes | yes | yes | yes | yes | no |
ip=a.b.c.d | yes | yes | yes | yes | yes | no |
dns= | yes | yes | yes | yes | yes | no |
gateway= | yes | yes | yes | yes | yes | no |
netmask= | yes | yes | yes | yes | yes | no |
Step 3: Install Fedora with virt-install
from virtguest import VirtGuest, the method to initialize a guest for both tree compose and iso image are there.
step 4
Identify potential test drivers that trigger off of those events.
- URL install source available (typically, http://download.fedoraproject.org/pub/fedora/linux/development/13/i386/os)
- url_install.py
- iso_sanity.py (for provided
images/boot.iso
) - bootiso_install.py
- pxe_install.py (kind of silly, but a possible future test)
- DVD image(s) available (typically, somewhere on http://serverbeach1.fedoraproject.org/pub/alt/stage/)
- iso_sanity.py
- dvd_install.py
- hdiso_install.py
- nfsiso_install.py
- CD image(s) available (typically, somewhere on http://serverbeach1.fedoraproject.org/pub/alt/stage/)
- iso_sanity.py
- cd_install.py
- hdiso_install.py
- nfsiso_install.py
Step 5
Write test drivers using requirements gathered in steps #2,#3,#4
Step 6
Write kickstart files to exercise the tests identified in step#2
Key
Set priorities for each test. The test drivers will support the tests with high priority.
Colour | Explanation |
---|---|
yes | supported and default (high priority) |
yes | supported (medium priority) |
yes | supported (low priority) |
no | unsupported configuration |
unknown | unknown |
References
- ↑ Kick start options: http://fedoraproject.org/wiki/Anaconda/Kickstart
- ↑ Boot Method: http://docs.fedoraproject.org/en-US/Fedora/14/html/Installation_Guide/ch04s06.html
- ↑ Installation Method: http://docs.fedoraproject.org/en-US/Fedora/14/html/Installation_Guide/s1-installmethod-x86.html
- ↑ 4.0 4.1 4.2 Anaconda Boot Options: http://fedoraproject.org/wiki/Anaconda/Options