#!/usr/bin/env python3 """Attrappe der Storage-Schicht. pvesnap ruft `perl -e "" ` auf, um an PVE::Storage zu kommen. Hier wird nur der Teil beantwortet, den die Bildschirmfotos brauchen - Groessen und Pfade. Nichts wird angelegt oder geloescht. """ import sys # Groessen der Datentraeger in der Kulisse, in Byte. GROESSEN = { "vm-100-disk-0": 60, "vm-101-disk-0": 400, "vm-102-disk-0": 2048, "vm-105-disk-0": 250, "vm-130-disk-0": 80, "vm-120-disk-0": 120, "subvol-110-disk-0": 16, "subvol-111-disk-0": 64, "vm-9101-disk-0": 400, "vm-9102-disk-0": 250, } RAM = 32 * 1024 ** 3 # der gespeicherte Arbeitsspeicher von db01 def main(argv): # argv: -e rest = argv[2:] if len(argv) > 2 and argv[0] == "-e" else argv if not rest: return 1 op, args = rest[0], rest[1:] if op == "size": volid = args[0] if args else "" name = volid.split(":", 1)[-1] if "-state-" in name: print("RESULT %d raw" % RAM) else: gigabyte = GROESSEN.get(name, 32) print("RESULT %d raw" % (gigabyte * 1024 ** 3)) return 0 if op == "path": volid = args[0] if args else "" storage, _, name = volid.partition(":") print("RESULT /dev/rbd/%s/%s" % (storage, name)) return 0 if op in ("activate", "deactivate", "free"): print("RESULT ok") return 0 if op == "clone": volid = args[0] if args else "" storage = volid.split(":", 1)[0] print("RESULT %s:vm-%s-disk-0" % (storage, args[1] if len(args) > 1 else "0")) return 0 if op == "alloc": print("RESULT %s:vm-%s-disk-9" % (args[0], args[1])) return 0 print("unbekannte Operation: %s" % op, file=sys.stderr) return 1 if __name__ == "__main__": sys.exit(main(sys.argv[1:]))