From 2221ebc88de6dd68bfee2fcb90a3ca7b85b72021 Mon Sep 17 00:00:00 2001 From: Sebastian Kalinowski Date: Fri, 20 Feb 2015 14:28:33 +0100 Subject: [PATCH] Fix flake8 errors in pmanager.py script Change-Id: I09ba90728c106a0ee4fe7b71e2a3aa9d9f7d79bc --- .../cobbler/templates/scripts/pmanager.py | 317 ++++++++++-------- 1 file changed, 173 insertions(+), 144 deletions(-) diff --git a/deployment/puppet/cobbler/templates/scripts/pmanager.py b/deployment/puppet/cobbler/templates/scripts/pmanager.py index 3f908cda82..b7b4dbd70f 100644 --- a/deployment/puppet/cobbler/templates/scripts/pmanager.py +++ b/deployment/puppet/cobbler/templates/scripts/pmanager.py @@ -1,10 +1,10 @@ #!/usr/bin/env python -# flake8: noqa import json import math import re + class PManager(object): def __init__(self, pm_data): if isinstance(pm_data, (str, unicode)): @@ -125,18 +125,20 @@ class PManager(object): return "primary" def _getsize(self, vol): - """Anaconda has hard coded limitation in 16TB + """Get volume size. + + Anaconda has hard coded limitation in 16TB for ext3/4 and xfs filesystems (the only filesystems we are supposed to use). Besides there is no stable 64-bit ext4 implementation at the moment, so the limitation in 16TB for ext4 is not only - anaconda limitation.""" - - """Root partition can not be located on xfs file system + anaconda limitation. + Root partition can not be located on xfs file system therefore we check if root filesystem is larger than 16TB and set it size into 16TB if it is larger. It is necessary to note that to format 16TB - volume on ext4 it is needed about 1G memory.""" + volume on ext4 it is needed about 1G memory. + """ if vol["size"] > 16777216 and vol["mount"] == "/": return 16777216 return vol["size"] @@ -164,23 +166,21 @@ class PManager(object): self.pre("parted -s {0} mklabel gpt".format(self._disk_dev(disk))) def bootable(self, disk): - """Create and mark Bios Boot partition to which grub will - embed its code later, useable for legacy boot. + """Create and mark Bios Boot partition + + Grub will embed its code later, useable for legacy boot. May be way smaller, but be aware that the parted may - shrink 1M partition to zero at some disks and versions.""" + shrink 1M partition to zero at some disks and versions. + """ self.pre("parted -a optimal -s {0} " "unit {3} mkpart primary {1} {2}".format( self._disk_dev(disk), self.psize(disk["id"]), self.psize(disk["id"], 24 * self.factor), - self.unit - ) - ) + self.unit)) self.pre("parted -s {0} set {1} bios_grub on".format( - self._disk_dev(disk), - self.pcount(disk["id"], 1) - ) - ) + self._disk_dev(disk), + self.pcount(disk["id"], 1))) """Create partition for the EFI boot, minimum size is 100M, recommended is 200M, with fat32 and @@ -192,14 +192,10 @@ class PManager(object): self._disk_dev(disk), self.psize(disk["id"]), self.psize(disk["id"], 200 * self.factor), - self.unit - ) - ) + self.unit)) self.pre("parted -s {0} set {1} boot on".format( - self._disk_dev(disk), - self.pcount(disk["id"], 1) - ) - ) + self._disk_dev(disk), + self.pcount(disk["id"], 1))) def boot(self): self.plains(volume_filter=lambda x: x["mount"] == "/boot") @@ -211,7 +207,7 @@ class PManager(object): def plains(self, volume_filter=None): if not volume_filter: - volume_filter = lambda x: True + volume_filter = default_volume_filter ceph_osds = self.num_ceph_osds() journals_left = ceph_osds @@ -225,10 +221,12 @@ class PManager(object): if part.get('name') == 'cephjournal': # We need to allocate a journal partition for each ceph OSD - # Determine the number of journal partitions we need on each device + # Determine the number of journal partitions we need on + # each device ratio = math.ceil(float(ceph_osds) / ceph_journals) - # No more than 10GB will be allocated to a single journal partition + # No more than 10GB will be allocated to a single + # journal partition size = part["size"] / ratio if size > 10240: size = 10240 @@ -251,12 +249,14 @@ class PManager(object): disk["id"], self._parttype(pcount), self.psize(disk["id"]), - self.psize(disk["id"], size * self.factor), + self.psize(disk["id"], + size * self.factor), self.unit)) self.post("chroot /mnt/sysimage sgdisk " "--typecode={0}:{1} /dev/{2}".format( - pcount, part["partition_guid"],disk["id"])) + pcount, part["partition_guid"], + disk["id"])) continue pcount = self.pcount(disk["id"], 1) @@ -265,10 +265,10 @@ class PManager(object): self._disk_dev(disk), self._parttype(pcount), self.psize(disk["id"]), - self.psize(disk["id"], part["size"] * self.factor), + self.psize(disk["id"], + part["size"] * self.factor), self.unit)) - fstype = self._getfstype(part) size = self._getsize(part) tabmount = part["mount"] if part["mount"] != "swap" else "none" tabfstype = self._gettabfstype(part) @@ -283,9 +283,9 @@ class PManager(object): self.kick("partition {0} " "--onpart={2}" "{3}{4}".format(part["mount"], size, - self._disk_dev(disk), - self._pseparator(disk["id"]), - pcount)) + self._disk_dev(disk), + self._pseparator(disk["id"]), + pcount)) else: if part["mount"] != "swap" and tabfstype != "none": @@ -312,7 +312,7 @@ class PManager(object): def raids(self, volume_filter=None): if not volume_filter: - volume_filter = lambda x: True + volume_filter = default_volume_filter raids = {} raid_info = {} phys = {} @@ -325,9 +325,10 @@ class PManager(object): pcount = self.pcount(disk["id"], 1) if not phys.get(raid["mount"]): phys[raid["mount"]] = [] - phys[raid["mount"]].append("{0}{1}{2}". - format(self._disk_dev(disk), - self._pseparator(disk["id"]), pcount)) + phys[raid["mount"]].append( + "{0}{1}{2}".format( + self._disk_dev(disk), + self._pseparator(disk["id"]), pcount)) rname = "raid.{0:03d}".format(self.rcount(1)) begin_size = self.psize(disk["id"]) end_size = self.psize(disk["id"], raid["size"] * self.factor) @@ -355,24 +356,26 @@ class PManager(object): if len(rnames) == 1: phys[mount].append('missing') self.post("mdadm --create /dev/md{0} --run --level=1 " - "--raid-devices={1} {2}".format(self.raid_count, - len(phys[mount]), ' '.join(phys[mount]))) + "--raid-devices={1} {2}".format( + self.raid_count, len(phys[mount]), + ' '.join(phys[mount]))) self.post("mkfs.{0} {1} {2} /dev/md{3}".format( fstype, fsoptions, self._getlabel(label), self.raid_count)) self.post("mdadm --detail --scan | grep '\/dev\/md{0}'" ">> /mnt/sysimage/etc/mdadm.conf".format( - self.raid_count)) + self.raid_count)) self.post("mkdir -p /mnt/sysimage{0}".format(mount)) self.post("echo \\\"UUID=\$(blkid -s UUID -o value " "/dev/md{0}) " "{1} {2} defaults 0 0\\\"" " >> /mnt/sysimage/etc/fstab".format( - self.raid_count, mount, fstype)) + self.raid_count, mount, fstype)) else: self.kick("raid {0} --device md{1} --fstype {3} " - "--level=RAID1 {2}".format(mount, self.raid_count, - " ".join(rnames), fstype)) + "--level=RAID1 {2}".format( + mount, self.raid_count, + " ".join(rnames), fstype)) self.raid_count += 1 def pvs(self): @@ -401,7 +404,6 @@ class PManager(object): for vg, pvnames in pvs.iteritems(): self.kick("volgroup {0} {1}".format(vg, " ".join(pvnames))) - def lvs(self): for vg in [g for g in self.data if g["type"] == "vg"]: for lv in vg["volumes"]: @@ -449,8 +451,8 @@ class PManager(object): if devs: self.kick("bootloader --location=mbr --driveorder={0} " "--append=' {1} '".format( - ",".join(devs), - self.kernel_params)) + ",".join(devs), + self.kernel_params)) for dev in devs: self.post("echo -n > /tmp/grub.script") @@ -473,8 +475,7 @@ class PManager(object): def expose(self, kickfile="/tmp/partition.ks", - postfile="/tmp/post_partition.ks" - ): + postfile="/tmp/post_partition.ks"): result = "" for pre in self.pre(): result += "{0}\n".format(pre) @@ -604,24 +605,26 @@ class PreseedPManager(object): self.late("umount /target/proc") self.late("umount /target/boot") self.late("umount /target") - self.late("umount {0}{1}3".format(self.os_disk, - self._pseparator(self.os_disk))) - self.late("swapoff {0}{1}4".format(self.os_disk, - self._pseparator(self.os_disk))) + self.late("umount {0}{1}3".format( + self.os_disk, self._pseparator(self.os_disk))) + self.late("swapoff {0}{1}4".format( + self.os_disk, self._pseparator(self.os_disk))) def _mount_target(self): - self.late("mount {0}{1}3 /target".format(self.os_disk, - self._pseparator(self.os_disk))) - self.late("mount {0}{1}2 /target/boot".format(self.os_disk, - self._pseparator(self.os_disk))) + self.late("mount {0}{1}3 /target".format( + self.os_disk, self._pseparator(self.os_disk))) + self.late("mount {0}{1}2 /target/boot".format( + self.os_disk, self._pseparator(self.os_disk))) self.late("mount -t proc none /target/proc") self.late("mount -o bind /dev /target/dev") self.late("mount -o bind /sys /target/sys") - self.late("swapon {0}{1}4".format(self.os_disk, - self._pseparator(self.os_disk))) + self.late("swapon {0}{1}4".format( + self.os_disk, self._pseparator(self.os_disk))) def _long_logger(self): - """This method puts script which splits + """Create script for logging long lines. + + This method puts script which splits long line and sends them to logger #!/bin/sh chunk=80 @@ -634,16 +637,21 @@ class PreseedPManager(object): i=$(( i + 1 )); done; done; """ return ( - """echo '#!/bin/sh' > /tmp/long_logger.sh;""", - """echo 'chunk=80;' >> /tmp/long_logger.sh;""", - """echo 'while read string; do' >> /tmp/long_logger.sh;""", - """echo 'iterations=`expr ${#string} / $chunk + 1`; i=0;' >> /tmp/long_logger.sh;""", - """echo 'while [ $i -le $(( iterations - 1)) ]; do' >> /tmp/long_logger.sh;""", - """echo 'start_sym=$(( $i * ${chunk} + 1 ))' >> /tmp/long_logger.sh;""", - """echo 'end_sym=$(( $(( $i + 1 )) * ${chunk}))' >> /tmp/long_logger.sh;""", - """echo 'echo $string | cut -c ${start_sym}-${end_sym} | logger' >> /tmp/long_logger.sh;""", - """echo 'i=$(( i + 1 )); done; done;' >> /tmp/long_logger.sh;""", - """chmod +x /tmp/long_logger.sh;""" + "echo '#!/bin/sh' > /tmp/long_logger.sh;", + "echo 'chunk=80;' >> /tmp/long_logger.sh;", + "echo 'while read string; do' >> /tmp/long_logger.sh;", + ("echo 'iterations=`expr ${#string} / $chunk + 1`; i=0;' " + ">> /tmp/long_logger.sh;"), + ("echo 'while [ $i -le $(( iterations - 1)) ]; do' " + ">> /tmp/long_logger.sh;"), + ("echo 'start_sym=$(( $i * ${chunk} + 1 ))' " + ">> /tmp/long_logger.sh;"), + ("echo 'end_sym=$(( $(( $i + 1 )) * ${chunk}))' " + ">> /tmp/long_logger.sh;"), + ("echo 'echo $string | cut -c ${start_sym}-${end_sym} | logger' " + ">> /tmp/long_logger.sh;"), + "echo 'i=$(( i + 1 )); done; done;' >> /tmp/long_logger.sh;", + "chmod +x /tmp/long_logger.sh;" ) def non_boot_partitions(self, volumes): @@ -712,15 +720,16 @@ class PreseedPManager(object): self.pcount(self.os_disk, 1) self.late("parted -s $(readlink -f {0}) set {1} bios_grub on".format( - self.os_disk, - self.pcount(self.os_disk) + self.os_disk, + self.pcount(self.os_disk) ) ) - self.recipe("200 200 200 ext3 $primary{ } " - "$gptonly{ } " - "$bootable{ } method{ format } format{ } use_filesystem{ } " - "filesystem{ ext3 } mountpoint{ /boot } .") + self.recipe( + "200 200 200 ext3 $primary{ } " + "$gptonly{ } " + "$bootable{ } method{ format } format{ } use_filesystem{ } " + "filesystem{ ext3 } mountpoint{ /boot } .") self.pcount(self.os_disk, 1) self.psize(self.os_disk, 200 * self.factor) @@ -772,32 +781,31 @@ class PreseedPManager(object): for part in self.non_boot_partitions(disk["volumes"]): if self.pcount(self._disk_dev(disk)) == 0: - self.late("parted -s {0} mklabel gpt" - "".format(self._disk_dev(disk)), udev_settle=True) + self.late("parted -s {0} mklabel gpt".format( + self._disk_dev(disk)), udev_settle=True) self.late("parted -a optimal -s {0} " - "unit {3} mkpart primary {1} {2}".format( - self._disk_dev(disk), - self.psize(self._disk_dev(disk)), - self.psize(self._disk_dev(disk), - 24 * self.factor), - self.unit - ), - udev_settle=True - ) + "unit {3} mkpart primary {1} {2}".format( + self._disk_dev(disk), + self.psize(self._disk_dev(disk)), + self.psize(self._disk_dev(disk), + 24 * self.factor), + self.unit), + udev_settle=True) self.late("parted -s {0} set {1} " "bios_grub on".format( self._disk_dev(disk), - self.pcount(self._disk_dev(disk), 1) - ), - udev_settle=True - ) - self.late("parted -s {0} print free".format(self._disk_dev(disk))) + self.pcount(self._disk_dev(disk), 1)), + udev_settle=True) + self.late("parted -s {0} print free".format( + self._disk_dev(disk))) if part.get('name') == 'cephjournal': # We need to allocate a journal partition for each ceph OSD - # Determine the number of journal partitions we need on each device + # Determine the number of journal partitions we need on + # each device ratio = math.ceil(float(ceph_osds) / ceph_journals) - # No more than 10GB will be allocated to a single journal partition + # No more than 10GB will be allocated to a single + # journal partition size = part["size"] / ratio if size > 10240: size = 10240 @@ -826,10 +834,11 @@ class PreseedPManager(object): self.unit), udev_settle=True ) - # We don't want to append late command right here because - # we need sgdisk to be run in-target so the target must be mounted. - # Instead of additional mounting and unmounting we just - # collect all those commands and them run them all at once. + # We don't want to append late command right here + # because we need sgdisk to be run in-target so + # the target must be mounted. Instead of additional + # mounting and unmounting we just collect all those + # commands and them run them all at once. cephjournal_guid_commands.append( "sgdisk --typecode={0}:{1} {2}".format( pcount, @@ -837,7 +846,8 @@ class PreseedPManager(object): self._disk_dev(disk) ) ) - self.late("parted -s {0} print free".format(self._disk_dev(disk))) + self.late("parted -s {0} print free".format( + self._disk_dev(disk))) continue pcount = self.pcount(self._disk_dev(disk), 1) @@ -845,18 +855,20 @@ class PreseedPManager(object): tabmount = part["mount"] if part["mount"] != "swap" else "none" self.late("parted -a optimal -s {0} " "unit {4} mkpart {1} {2} {3}".format( - self._disk_dev(disk), - self._parttype(pcount), - self.psize(self._disk_dev(disk)), - self.psize(self._disk_dev(disk), - part["size"] * self.factor), - self.unit), + self._disk_dev(disk), + self._parttype(pcount), + self.psize(self._disk_dev(disk)), + self.psize(self._disk_dev(disk), + part["size"] * self.factor), + self.unit), udev_settle=True) self.late("sleep 10") self.late("hdparm -z {0}" "".format(self._disk_dev(disk))) - self.late("parted -s {0} print free".format(self._disk_dev(disk))) - self.late("find /dev \( -type l -o -type b \) -exec ls -l {} \;") + self.late("parted -s {0} print free".format( + self._disk_dev(disk))) + self.late( + "find /dev \( -type l -o -type b \) -exec ls -l {} \;") self.late("mount") self.late("cat /proc/swaps") self.late("cat /proc/mdstat") @@ -868,21 +880,24 @@ class PreseedPManager(object): self._pseparator(disk["id"]), pcount)) - if part.get("file_system", "xfs") not in ("swap", None, "none"): + fs = part.get("file_system", "xfs") + if fs not in ("swap", None, "none"): disk_label = self._getlabel(part.get("disk_label")) - self.late("mkfs.{0} {1} {2}{3}{4} {5}" - "".format(part.get("file_system", "xfs"), - self._fsoptions(part.get("file_system", "xfs")), - self._disk_dev(disk), - self._pseparator(disk["id"]), - pcount, disk_label)) + self.late("mkfs.{0} {1} {2}{3}{4} {5}".format( + part.get("file_system", "xfs"), + self._fsoptions(part.get("file_system", "xfs")), + self._disk_dev(disk), + self._pseparator(disk["id"]), + pcount, disk_label)) self._mount_target() - # Partition guids must be set in-target, which requires target to be mounted. - # But for cephjournal we have a separate collection of late commands. + # Partition guids must be set in-target, which requires target to be + # mounted. But for cephjournal we have a separate collection of + # late commands. for disk in self.iterdisks(): for part in self.non_boot_partitions(disk["volumes"]): - if part.get("partition_guid") and part.get("name") != "cephjournal": + if (part.get("partition_guid") and + part.get("name") != "cephjournal"): self.late("sgdisk --typecode={0}:{1} {2}" "".format(part["pcount"], part["partition_guid"], self._disk_dev(disk)), True) @@ -910,7 +925,7 @@ class PreseedPManager(object): part["pcount"], tabmount, part.get("file_system", "xfs"), ("defaults" if part["mount"] != "swap" - else "sw" ))) + else "sw"))) def lv(self): self.log_lvm("before creating lvm", False) @@ -927,24 +942,23 @@ class PreseedPManager(object): continue if self.pcount(self._disk_dev(disk)) == 0: # this gonna wait until udev event queue is handled - self.late("parted -s {0} mklabel gpt" - "".format(self._disk_dev(disk)), udev_settle=True) + self.late("parted -s {0} mklabel gpt".format( + self._disk_dev(disk)), udev_settle=True) self.late("parted -a optimal -s {0} " - "unit {3} mkpart primary {1} {2}".format( - self._disk_dev(disk), - self.psize(self._disk_dev(disk)), - self.psize(self._disk_dev(disk), - 24 * self.factor), - self.unit - ), - udev_settle=True - ) + "unit {3} mkpart primary {1} {2}".format( + self._disk_dev(disk), + self.psize(self._disk_dev(disk)), + self.psize(self._disk_dev(disk), + 24 * self.factor), + self.unit), + udev_settle=True) self.late("parted -s {0} set {1} " "bios_grub on".format( self._disk_dev(disk), self.pcount(self._disk_dev(disk), 1)), udev_settle=True) - self.late("parted -s {0} print free".format(self._disk_dev(disk))) + self.late("parted -s {0} print free".format( + self._disk_dev(disk))) pcount = self.pcount(self._disk_dev(disk), 1) begin_size = self.psize(self._disk_dev(disk)) @@ -953,19 +967,22 @@ class PreseedPManager(object): self.late("parted -a optimal -s {0} " "unit {4} mkpart {1} {2} {3}".format( - self._disk_dev(disk), - self._parttype(pcount), - begin_size, - end_size, - self.unit), udev_settle=True) + self._disk_dev(disk), + self._parttype(pcount), + begin_size, + end_size, + self.unit), + udev_settle=True) self.late("sleep 10") self.log_lvm("after creating partition", False) self.erase_lvm_metadata(False) self.late("hdparm -z {0}" "".format(self._disk_dev(disk))) - self.late("parted -s {0} print free".format(self._disk_dev(disk))) - self.late("find /dev \( -type l -o -type b \) -exec ls -l {} \;") + self.late("parted -s {0} print free".format( + self._disk_dev(disk))) + self.late( + "find /dev \( -type l -o -type b \) -exec ls -l {} \;") self.late("mount") self.late("cat /proc/swaps") self.late("cat /proc/mdstat") @@ -1009,8 +1026,12 @@ class PreseedPManager(object): self.late("lvscan") tabmount = lv["mount"] if lv["mount"] != "swap" else "none" - if ((not lv.get("file_system", "xfs") in ("swap", None, "none")) - and (not lv["mount"] in ("swap", "/"))): + if ( + (lv.get("file_system", "xfs") not in + ("swap", None, "none")) + and + (lv["mount"] not in ("swap", "/")) + ): self.late("mkfs.{0} {1} /dev/mapper/{2}-{3}".format( lv.get("file_system", "xfs"), self._fsoptions(lv.get("file_system", "xfs")), @@ -1027,7 +1048,7 @@ class PreseedPManager(object): tabmount, lv.get("file_system", "xfs"), ("defaults" if lv["mount"] != "swap" - else "sw" ))) + else "sw"))) def eval(self): self.log_lvm("before early lvm cleaning") @@ -1040,16 +1061,19 @@ class PreseedPManager(object): self.erase_lvm_metadata() self.lv() self.late("apt-get install -y grub-pc", True) - self.late("sed -i " - "-e '$a\ ' " - "-e '$a\#Disable the waiting for user input if the last boot failed' " - "-e '$a\GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT' /etc/default/grub", True) + self.late( + "sed -i " + "-e '$a\ ' " + "-e '$a\#Disable the waiting " + "for user input if the last boot failed' " + "-e '$a\GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT' /etc/default/grub", + True) self.late("sed -i " "-e 's/.*GRUB_TERMINAL.*/GRUB_TERMINAL=console/g' " "-e 's/.*GRUB_GFXMODE.*/#GRUB_GFXMODE=640x480/g' " "-e 's/.*GRUB_CMDLINE_LINUX.*/" "GRUB_CMDLINE_LINUX=\" {0} \"/g' /etc/default/grub".format( - self.kernel_params), + self.kernel_params), True) self._umount_target() self._mount_target() @@ -1204,3 +1228,8 @@ example = """ # pmanager = PreseedPManager(example) # pmanager.eval() # print pmanager.expose_late() + + +def default_volume_filter(volume): + """Default volume filter. Always return True.""" + return True