Name: fingertip Version: 0.3.8 Release: 79.g98ad3d4%{?dist} Summary: Control VMs, containers and other machines with Python, leverage live snapshots License: GPLv3+ URL: https://github.com/t184256/fingertip Source0: https://github.com/t184256/fingertip/archive/98ad3d45f14326e31b563d815e2d28753ca4b2aa/t184256-fingertip-98ad3d4.tar.gz BuildArch: noarch BuildRequires: python3 BuildRequires: python3-devel BuildRequires: systemd-rpm-macros Requires: ansible-core Requires: git-core Requires: nmap-ncat Requires: openssh-clients Requires: python3 Requires: python3-CacheControl Requires: python3-GitPython Requires: python3-cloudpickle Requires: python3-colorama Requires: python3-fasteners Requires: python3-inotify_simple Requires: python3-lockfile Requires: python3-paramiko Requires: python3-pexpect Requires: python3-pyxdg Requires: python3-rangehttpserver Requires: python3-requests Requires: python3-requests-mock Requires: python3-ruamel-yaml Requires: qemu-kvm Requires: qemu-img Requires: rsync Requires: util-linux Requires: xfsprogs %ifarch aarch64 # aarch64 VMs must be booted with UEFI; require the package that provides the UEFI firmware Requires: edk2-aarch64 %endif Recommends: duperemove Recommends: createrepo_c Recommends: podman # ansible-collection-community-general contains ini_file Recommends: ansible-collection-community-general %description This program/library aims to be a way to: * fire up VMs and containers in mere seconds using live VM snapshots * uniformly control machines from Python by writing small and neat functions transforming them * compose and transparently cache the results of these functions * build cool apps that exploit live VM snapshots and checkpoints * control other types of machines that are not local VMs All while striving to be intentionally underengineered and imposing as little limits as possible. If you look at it and think that it does nothing in the laziest way possible, that's it. %prep %setup -q -n fingertip-98ad3d45f14326e31b563d815e2d28753ca4b2aa %build # noop %global statedir %{_sharedstatedir}/fingertip %install install -d -m 755 %{buildroot}%{_bindir} install -d -m 755 %{buildroot}%{python3_sitelib} cp -p -r fingertip %{buildroot}%{python3_sitelib}/ cp -p -r ssh_key %{buildroot}%{python3_sitelib}/ cp -p -r kickstart_templates %{buildroot}%{python3_sitelib}/ cp -p __main__.py %{buildroot}%{python3_sitelib}/fingertip/ chmod +x %{buildroot}%{python3_sitelib}/fingertip/__main__.py ln -s %{python3_sitelib}/fingertip/__main__.py %{buildroot}%{_bindir}/fingertip install -d -m 755 %{buildroot}%{_unitdir} install -m 644 rpm/fingertip-shared-cache.service %{buildroot}%{_unitdir}/ install -d -m 755 %{buildroot}%{_sbindir} install -m 755 rpm/fingertip-shared-cache-demolish %{buildroot}%{_sbindir}/ install -m 755 rpm/fingertip-shared-cache-grow %{buildroot}%{_sbindir}/ install -m 755 rpm/fingertip-shared-cache-use %{buildroot}%{_sbindir}/ install -d -m 755 %{buildroot}%{_libexecdir}/fingertip install -m 755 rpm/fingertip-shared-cache-setup %{buildroot}%{_libexecdir}/fingertip/shared-cache-setup install -d -m 755 %{buildroot}%{statedir} install -d -m 2755 %{buildroot}%{statedir}/shared_cache install -d -m 2755 %{buildroot}%{statedir}/shared_cache/saviour %files %license COPYING %doc README.md %{_bindir}/fingertip %dir %{python3_sitelib}/fingertip/ %{python3_sitelib}/fingertip/* %{python3_sitelib}/ssh_key/* %{python3_sitelib}/kickstart_templates/* %package shared-cache Summary: Shared CoW-enabled cache for fingertip Requires: fingertip Requires: procps-ng Requires: systemd Requires: /usr/sbin/losetup Requires: /usr/sbin/semanage Requires: /usr/sbin/restorecon Requires(post): acl %description shared-cache Tools to set up a shared CoW-powered HTTP-exportable cache for fingertip. After installing, you'll have to `systemctl enable --now fingertip-shared-cache`, `fingertip-shared-cache-grow $DESIRED_SIZE` the image (if your FS didn't have CoW), and, lastly, `fingertip-shared-cache-use $YOUR_USERNAME`. %pre shared-cache getent group fingertip >/dev/null || groupadd -r fingertip %files shared-cache %{statedir} %attr(2775,root,fingertip) %{statedir}/shared_cache %attr(2775,root,fingertip) %{statedir}/shared_cache/saviour %{_libexecdir}/fingertip/shared-cache-setup %{_unitdir}/fingertip-shared-cache.service %{_sbindir}/fingertip-shared-cache-demolish %{_sbindir}/fingertip-shared-cache-grow %{_sbindir}/fingertip-shared-cache-use %post shared-cache if [[ $1 == 1 ]]; then chmod -R 2775 %{statedir} chgrp -R fingertip %{statedir} setfacl -dR --set u::rwx,g::rwx,o::- %{statedir} semanage fcontext -a -t httpd_sys_content_t "%{statedir}/shared_cache/saviour(/.*)?" restorecon -v %{statedir}/shared_cache fi # templated from build.sh %changelog * Thu Nov 14 2024 Alexander Sosedkin - 98ad3d4 - backend.qemu: do not attach virtio-scsi to pcie-root * Thu Nov 14 2024 Alexander Sosedkin - 4480421 - backend.qemu: simplify one access to .qemu.efi * Tue Nov 12 2024 Alexander Sosedkin - 85af05b - util.http_cache: implement some url demangling * Tue Nov 12 2024 Alexander Sosedkin - ed0c86c - os.alpine: support more arches * Tue Nov 12 2024 Clemens Lang - c1a2c1f - os.fedora: Support non-x86_64 architectures * Tue Nov 12 2024 Clemens Lang - f9fd657 - backend.qemu: Support aarch64, booted with UEFI * Tue Nov 12 2024 Clemens Lang - ed1806a - backend.qemu: Use a pcie-root-port to attach devices * Tue Nov 12 2024 Alexander Sosedkin - 55bafdd - rpm: depend on qemu-kvm metapackage, not specific arch * Wed Oct 30 2024 Alexander Sosedkin - 59edfe3 - backend.qemu: VMSnapshotWritingException, includes more generic IOError * Mon Sep 02 2024 Alexander Sosedkin - 5e17717 - os.alpine, saviour.example.yml: update to Alpine 3.20.2 * Mon Sep 02 2024 Alexander Sosedkin - 940707e - os.alpine: fix some sins of the past * Fri Aug 30 2024 Clemens Lang - 7e08010 - reboot: Add a simple plugin to reboot a machine * Thu Aug 29 2024 Clemens Lang - ba40e64 - poetry: Update dependencies * Mon Aug 26 2024 Alexander Sosedkin - 0e2e951 - kickstart_templates/fedora40: remove ttyS0 hack * Mon Aug 26 2024 Alexander Sosedkin - 2cd87a1 - os.fedora: fedora 41 support * Mon Jun 17 2024 Alexander Sosedkin - c769462 - kickstart_templates/fedora40: configure serial console * Mon Jun 17 2024 Alexander Sosedkin - d1fa1dc - os.fedora: check mirrors for initrd.img presence as well * Thu Jun 06 2024 Alexander Sosedkin - e1c1442 - backend.qemu: fix monitor.connect() concurrency * Thu Jun 06 2024 Alexander Sosedkin - 8264779 - software.fingertip: depend on sources * Thu Jun 06 2024 Alexander Sosedkin - 5170c0d - rpm/fingertip.template.spec: require acl * Thu Jun 06 2024 Alexander Sosedkin - fabed03 - backend.qemu: cloning to /tmp now unlinks almost immediately * Thu Jun 06 2024 Alexander Sosedkin - 98ea5cb - backend.qemu: minor Monitor changes * Wed Jun 05 2024 Alexander Sosedkin - df86984 - backend.qemu: implement --base-time, mainly for Y2K38 * Mon Jun 03 2024 Alexander Sosedkin - 02940c7 - os.fedora, os.fedora_eln: expiration.cap('2d') * Mon Jun 03 2024 Alexander Sosedkin - d4dc191 - os.fedora_eln: fix both console and network * Mon Jun 03 2024 Alexander Sosedkin - f1a6824 - os.fedora_eln: expect 'Complete!' on install * Mon Jun 03 2024 Alexander Sosedkin - a6aa73f - os.fedora: change hostname during upgrade * Mon Jun 03 2024 Alexander Sosedkin - 0739f6c - os.fedora: use more ram during upgrade * Mon Jun 03 2024 Alexander Sosedkin - 11195fb - os.fedora: workaround disappearing getty@ttyS0 * Tue May 28 2024 Alexander Sosedkin - 41060d5 - os.fedora: add a fedora-release check * Mon May 27 2024 Alexander Sosedkin - e939236 - saviour: add --compatibility so that RHEL-7 doesn't choke over .zst * Thu May 23 2024 Alexander Sosedkin - f503703 - saviour: --dedupe-options=partial * Thu May 23 2024 Alexander Sosedkin - f878e19 - os.common.red_hat_based: proxy_dnf_action: also downgrade copr * Mon May 20 2024 Alexander Sosedkin - 1597939 - util/git_cache: fix ownership problems on upload * Wed May 15 2024 Alexander Sosedkin - f2ef61e - os.fedora: remove update repos on rawhide * Fri May 10 2024 Alexander Sosedkin - 25159f6 - os.fedora, os.common: fix proxying on rawhide, which is DNF5 *again* * Fri May 10 2024 Alexander Sosedkin - fdd7a25 - fedora.upgrade: fix bogus urls in repofiles * Thu May 09 2024 Alexander Sosedkin - 9e36799 - backend.qemu: fixup removing swap * Thu May 09 2024 Alexander Sosedkin - bd70209 - backend.qemu: SwapNamespacedFeatures touches fstab now * Thu May 09 2024 Alexander Sosedkin - 241570c - backend.qemu: fix improper error reporting in SwapNamespacedFeatures * Tue May 07 2024 Alexander Sosedkin - 963d3d6 - os.fedora.upgrade: re-disable metalinks in favor of http baseurls * Fri May 03 2024 Alexander Sosedkin - 258f465 - script.debug: indicate when VM is checkpointed * Fri May 03 2024 Alexander Sosedkin - 7ec81c2 - fingertip/plugins/saviour: remove nofiemap * Tue Apr 30 2024 Alexander Sosedkin - 8e030ba - os.fedora_eln: use dnf4 action again (make up your mind!) * Tue Apr 30 2024 Alexander Sosedkin - 4b18cf9 - os.fedora: f40 is released * Thu Mar 28 2024 Alexander Sosedkin - 4bbec3f - os.fedora: remove Fedora 35 workaround * Mon Mar 25 2024 Alexander Sosedkin - 7ef449b - os.fedora_eln: use red_hat_based.proxy_dnf_action * Mon Mar 25 2024 Alexander Sosedkin - 383fc45 - os.common.red_hat_based: add a hacky proxy_dnf_action for DNF5 * Mon Mar 25 2024 Alexander Sosedkin - c966cc9 - os.common.red_hat_based: remove proxy_copr * Wed Feb 14 2024 Alexander Sosedkin - f534561 - os.fedora.upgrade: no -modular.repo now * Wed Jan 17 2024 Alexander Sosedkin - 37fb3a3 - os.common.red_hat_based: fix SyntaxWarning * Fri Dec 08 2023 Alexander Sosedkin - 0c156a3 - backend.qemu: introduce FINGERTIP_MAX_AUTO_CORES * Wed Nov 15 2023 Alexander Sosedkin - 8166a7e - os.fedora_eln: don't remove Networkmanager-team... * Mon Nov 13 2023 Clemens Lang - 081a61b - os.fedora: Fedora 39 is released * Wed Oct 25 2023 Alexander Sosedkin - 6bb320a - software.fingertip: update * Mon Jun 05 2023 Alexander Sosedkin - f1f21ac - os.cloud_init: supply /cloud-init/vendor-data * Thu May 25 2023 Alexander Sosedkin - 1cb06ea - util/git_cache: fixup * Thu May 25 2023 Alexander Sosedkin - d70360e - util.git_cache: do not ask for passwords * Wed Apr 19 2023 Alexander Sosedkin - 9a10c17 - os.fedora: f38 is released * Wed Apr 05 2023 Alexander Sosedkin - 96f42f5 - os.fedora: avoid future anaconda slowdown * Wed Apr 05 2023 Alexander Sosedkin - efc9cd4 - os.fedora: bump default target RAM to 1536M * Wed Apr 05 2023 Alexander Sosedkin - aeb8445 - os.common.red_hat_based: do not proxy localhost urls in DNF plugin * Tue Feb 14 2023 Alexander Sosedkin - 6a28d58 - util/git_cache: use different separator to avoid UnsafeProtocolError * Fri Feb 10 2023 Alexander Sosedkin - 91988d4 - os.fedora: keep hammering f38 repo configuration into shape * Fri Feb 10 2023 Alexander Sosedkin - ef38708 - os.fedora: fix 38 repositories once again, leave just the basics * Fri Feb 10 2023 Alexander Sosedkin - 3d8d1fd - os.fedora: enable 38 repos * Fri Feb 10 2023 Alexander Sosedkin - 0407484 - os.fedora: disable rawhide for 38 * Fri Feb 10 2023 Alexander Sosedkin - 00fad90 - os.fedora: add unreleased 38 * Fri Feb 10 2023 Alexander Sosedkin - 63061a0 - os.fedora: use released 37 * Fri Feb 10 2023 Alexander Sosedkin - a022a0f - os.fedora: drop support for 33-34 * Wed Feb 01 2023 Alexander Sosedkin - cbc3af0 - os.fedora_eln: enable gpgcheck * Fri Dec 02 2022 Alexander Sosedkin - 82ae0f9 - os.fedora: bump default target RAM to 1280M * Fri Dec 02 2022 Alexander Sosedkin - 64bcbd6 - main: allow combining kwargs into list * Mon Nov 21 2022 Alexander Sosedkin - 1448048 - rpm/fingertip.template.spec: move comment to separate line * Mon Nov 21 2022 Alexander Sosedkin - 2d00f06 - os.fedora: use 37 as latest released * Mon Nov 14 2022 Alexander Sosedkin - 031ec85 - rpm: recommend ansible-collection-community-general for ini_file * Wed Nov 09 2022 Alexander Sosedkin - 49d7d31 - os.fedora: allow upgrades to rawhide by disabling update repos * Mon Nov 07 2022 Alexander Sosedkin - 911770d - backend.qemu: progressive capped backoff when disk isn't detaching * Fri Nov 04 2022 Alexander Sosedkin - 375c044 - backend.qemu: be tolerant of disappearing swap file * Wed Nov 02 2022 Alexander Sosedkin - 9bd1e41 - backend.qemu: add support for dynamically attaching disks, swap * Wed Nov 02 2022 Alexander Sosedkin - 507e58d - os.centos_stream: fix debuginfo repo * Fri Oct 21 2022 Jakub Jelen - fb420b9 - rpm: Do not depend on ansible package, which is replaced by ansible-core * Thu Oct 13 2022 Alexander Sosedkin - d96b0e4 - os.fedora.upgrade: optimize disk usage * Wed Oct 05 2022 Alexander Sosedkin - 655a963 - os.fedora: tweak upgrade * Fri Sep 16 2022 Alexander Sosedkin - 7d1abe8 - os.fedora: limit expiration to 1 day * Fri Sep 16 2022 Alexander Sosedkin - b7cd77e - util.cleanup_job: run hourly * Wed Aug 31 2022 Jakub Jelen - 35aa3e0 - Fedora system upgrade plugin * Mon Aug 29 2022 Alexander Sosedkin - dd7fb56 - os.fedora-eln: add eln-koji-buildroot * Mon Aug 15 2022 Alexander Sosedkin - d9a5bb8 - utils.http_cache: enhance is_cacheable * Tue Jul 26 2022 Alexander Sosedkin - b985764 - os.fedora-eln: stop requiring a disappeared package * Wed Jun 22 2022 Alexander Sosedkin - 09ee257 - os.fedora-eln: fix urls * Wed Jun 08 2022 Alexander Sosedkin - b848aa3 - os.fedora-eln: update workaround set * Thu Jun 02 2022 Alexander Sosedkin - 173c638 - backend.qemu: more careful /tmp offloading * Wed Jun 01 2022 Alexander Sosedkin - 70907a3 - machine: drop machine fast on exceptions... * Wed Jun 01 2022 Clemens Lang - ba0d305 - backend.qemu: Allow setting smp, default to cpus/2 * Fri May 27 2022 Alexander Sosedkin - 4a31d83 - os.common.red_hat_based: improve dnf plugin installation/patching * Tue May 24 2022 Alexander Sosedkin - 5c3f718 - os.fedora-eln: expire faster, repos are very volatile * Mon May 16 2022 Alexander Sosedkin - 791242a - os/centos_stream: enable powertools * Wed May 11 2022 Alexander Sosedkin - aa8b2f2 - os.fedora-eln: remove fedora rawhide repos * Tue May 10 2022 Alexander Sosedkin - e67e3de - os.fedora: f36 has been released * Mon May 09 2022 Alexander Sosedkin - e2ad882 - rpm: work around checkout ownership mismatch * Mon May 09 2022 Alexander Sosedkin - 8b3e8f1 - os.fedora-eln: cap expiration * Thu May 05 2022 Alexander Sosedkin - b54c0f5 - os/fedora_eln: add * Fri Apr 22 2022 Alexander Sosedkin - 7407f69 - os.fedora: no longer pass just `ks` * Wed Feb 02 2022 Alexander Sosedkin - d043e8f - os.fedora: use source/tree instead of SRPM in f35 (what the mirrors have) * Tue Jan 18 2022 Alexander Sosedkin - 8de7ce1 - os.fedora: work around bz2019579 (f35-specific) * Thu Dec 16 2021 Alexander Sosedkin - e095083 - backend.qemu: fix several uses of live as state and not intent * Thu Dec 16 2021 Alexander Sosedkin - 3fd7aeb - backend.qemu: ignore SHUTDOWN event * Tue Dec 14 2021 Alexander Sosedkin - 3ecc858 - backend.qemu: print SSH port when connecting * Tue Dec 14 2021 Alexander Sosedkin - 305fa06 - backend.qemu: fixup broken logging * Tue Dec 14 2021 Alexander Sosedkin - af2f0fa - backend.qemu: fixup usernet spec * Tue Dec 14 2021 Alexander Sosedkin - 794937a - backend.qemu: don't netdev_del on QEMU <6 * Fri Dec 10 2021 Alexander Sosedkin - 4ab3663 - backend.qemu: not-a-fix for QEMU 6 network reconfiguration * Tue Dec 07 2021 Alexander Sosedkin - ba59ddc - cleanup: don't error out on tricky paths we don't remove anyway * Mon Nov 08 2021 Alexander Sosedkin - 2ec0cd2 - os.fedora: 35 has been released * Fri Oct 29 2021 Alexander Sosedkin - 1be9924 - saviour: add excludes option to reposync * Mon Oct 11 2021 Alexander Sosedkin - 661ee76 - script.debug: fix installing bash we need * Mon Oct 11 2021 Alexander Sosedkin - 45589d9 - script.debug: nicer output at the end * Mon Oct 11 2021 Alexander Sosedkin - 564e54e - script.debug: hide interpreter version on terse >more * Mon Oct 11 2021 Alexander Sosedkin - 83f6fb0 - os.alpine: update to 3.14.2 * Fri Oct 08 2021 Alexander Sosedkin - 76bba89 - os.common.redhat_based.proxyall: downgrade gpgkey to http as well * Fri Oct 08 2021 Alexander Sosedkin - 8c23526 - os.common.redhat_based: use shorter patch that also works on 8.1 * Fri Oct 08 2021 Alexander Sosedkin - 2bff21e - os.common.redhat_based: patch dnf copr to downgrade to http * Fri Oct 08 2021 Alexander Sosedkin - 6263216 - saviour: allow terser what entries * Thu Oct 07 2021 Alexander Sosedkin - c27569d - script.debug.REPLPython: halt on uncaught exceptions * Thu Oct 07 2021 Alexander Sosedkin - 427f668 - script.debug: hide ignored output * Thu Oct 07 2021 Alexander Sosedkin - 9b07a1a - script.debug.REPLPython: relax header expectations a bit * Wed Oct 06 2021 Alexander Sosedkin - 19b93ec - saviour: better rpm repository validation * Thu Sep 23 2021 Alexander Sosedkin - 8a4a9b2 - backend.qemu: fix ballooning down on cold boots * Wed Sep 22 2021 Alexander Sosedkin - 9b94aca - os.common.red_hat_based: control proxy / rewrite proto with a dnf plugin * Tue Sep 21 2021 Alexander Sosedkin - 3f364a5 - exec, util.log: tolerate non-UTF-8 output better * Thu Aug 19 2021 Alexander Sosedkin - 3af2482 - kickstart_templates/fedora35: fix source repo path * Thu Aug 19 2021 Alexander Sosedkin - c3565ba - kickstart_templates: add fedora35, remove fedora31 * Thu Jul 01 2021 Alexander Sosedkin - 5676ebe - os.alpine: assorted fixes * Thu Jul 01 2021 Alexander Sosedkin - 310e9ff - os.fedora: unlink kernel+initrd * Thu Jul 01 2021 Alexander Sosedkin - 896ec81 - os.alpine: RAM-related fixes * Thu Jul 01 2021 Alexander Sosedkin - 920efad - cleanup: make periodic a tad more aggressive * Wed Jun 30 2021 Alexander Sosedkin - fcb244d - util.git_cache: allow not specifying path components * Mon May 24 2021 Alexander Sosedkin - 1906354 - backend.qemu: more lax vm state event tolerating * Thu May 13 2021 Alexander Sosedkin - c0a9906 - cleanup: fixup * Thu May 13 2021 Alexander Sosedkin - 1fa3882 - util/http_cache: FINGERTIP_SAVIOUR_WARN_ON_DIRECT * Tue May 11 2021 Alexander Sosedkin - 91d4bed - os.fedora: 34 is released * Thu May 06 2021 Alexander Sosedkin - dc4d3b8 - saviour: = is weaker than config * Thu May 06 2021 Alexander Sosedkin - 762ab32 - saviour: FailureToMirrorError * Thu May 06 2021 Alexander Sosedkin - e37744c - saviour: allow ad-hoc whats... * Fri Apr 30 2021 Alexander Sosedkin - f3fede5 - util.git_cache: add has_rev * Tue Apr 27 2021 Alexander Sosedkin - bb14368 - ssh: fixup * Tue Apr 27 2021 Alexander Sosedkin - 977837d - ssh: hacky but quick way to attach to existing VMs * Tue Apr 27 2021 Alexander Sosedkin - a521cfa - script.debug: fixup * Tue Apr 27 2021 Alexander Sosedkin - e00578e - script.debug: add a way to drop into an interactive session * Tue Apr 27 2021 Alexander Sosedkin - cdc8cba - no_op: add a plugin that does nothing * Tue Apr 27 2021 Alexander Sosedkin - 4a3047d - everything: use underscores in module names * Fri Apr 23 2021 Alexander Sosedkin - 8b3996b - util.http_cache: log less to the info level * Thu Apr 15 2021 Panos Kalorogiannis - ed5590e - os.centos-stream: Added appstream baseos debuginfo repos * Mon Apr 12 2021 Alexander Sosedkin - ac87861 - backend.qemu: configurable UserNet * Wed Apr 07 2021 Panos Kalorogiannis - f409f27 - fingertip: added a contributor * Wed Apr 07 2021 Panos Kalorogiannis - b8b5964 - fingertip: removed empty line, changed expect message on installation completion * Wed Apr 07 2021 Panos Kalorogiannis - 6e501c6 - fingertip: Centos Stream is installable in fingertip, created ks file. * Mon Mar 29 2021 Panos Kalorogiannis - 72f512a - fingertip: print information when executed without args * Tue Mar 23 2021 Alexander Sosedkin - 56ad98e - script/debug: disable bracketed mode in bash * Tue Mar 02 2021 Alexander Sosedkin - d4548be - os.fedora: crude f34 fix * Sat Feb 13 2021 Alexander Sosedkin - ffef33c - os.fedora: fix post-branch-off 34 * Wed Jan 20 2021 Alexander Sosedkin - a10dcac - script.debug: cosmetic logging fixup * Mon Jan 18 2021 Alexander Sosedkin - 21b4577 - backend.qemu: make preloading to /tmp more visible * Mon Dec 21 2020 Alexander Sosedkin - 52fb8c5 - os.fedora: optimize Fedora 33/34 for disk size * Sat Dec 19 2020 Alexander Sosedkin - 4a51f96 - backend.qemu: lazy_refcounts=on * Thu Dec 17 2020 Alexander Sosedkin - 693e534 - saviour: fix usage message * Wed Dec 16 2020 Stanislav Zidek - 6e987cf - python3-rangehttpserver required on Fedora-32 * Fri Dec 04 2020 Alexander Sosedkin - 6a243b7 - backend.qemu: log ssh commands line-by-line * Fri Dec 04 2020 Alexander Sosedkin - 57ee33b - util.http_cache: fixup output in error situation * Thu Dec 03 2020 Alexander Sosedkin - f0fc071 - saviour: chattr +C hashfilesdir * Wed Nov 11 2020 Alexander Sosedkin - 4c4dd78 - os.fedora: fixup fedora33 kickstart * Wed Nov 11 2020 Alexander Sosedkin - 1ff4fc8 - saviour: exclude tempfiles from deduplication * Tue Nov 03 2020 Alexander Sosedkin - 9b2c0be - cleanup: remove on all exceptions * Thu Oct 29 2020 Alexander Sosedkin - c213174 - os.fedora: update as f33 is out * Mon Oct 26 2020 Alexander Sosedkin - cb078dd - cleanup: fix cleaning the wrong dir in tmpfiles * Mon Oct 26 2020 Alexander Sosedkin - 2d4d363 - cleanup: check mtime/atime as well * Thu Oct 22 2020 Alexander Sosedkin - ecc6d71 - util.git_cache: handle local cache corruption better * Tue Oct 20 2020 Alexander Sosedkin - 5149c2d - cleanup: include downloads and logs in periodic * Tue Oct 20 2020 Alexander Sosedkin - 5f5c646 - cleanup: add cleanup tempfiles * Mon Oct 19 2020 Alexander Sosedkin - 2ebc514 - saviour: fixup * Mon Oct 19 2020 Alexander Sosedkin - 1363a2a - saviour: fixup * Mon Oct 19 2020 Alexander Sosedkin - 4b15ad9 - saviour: print which deduplication db is about to be locked * Mon Oct 19 2020 Alexander Sosedkin - eb901e4 - saviour: print which deduplication db was locked * Thu Oct 15 2020 Alexander Sosedkin - f3748b3 - saviour: set deduplication boundaries, default: per-how * Fri Oct 09 2020 Alexander Sosedkin - 1baab60 - backend.qemu: less panicky SharedDirectory umount * Fri Oct 09 2020 Alexander Sosedkin - b0f425e - util.git_cache: add Checkout * Mon Oct 05 2020 Alexander Sosedkin - 42112cd - fingertip-containerized: small fixes * Mon Sep 21 2020 Alexander Sosedkin - dff1b3a - os.fedora: set dist_git_branch * Fri Sep 18 2020 Alexander Sosedkin - 8e41892 - saviour: allow validating a tree of multiple rpm repos * Thu Sep 17 2020 Alexander Sosedkin - acf4eaa - saviour: add validation for rpm repositories * Thu Sep 17 2020 Alexander Sosedkin - 10c2c14 - saviour: throttle duperemove * Wed Sep 16 2020 Alexander Sosedkin - ef13b55 - util.http_cache: tolerate Content-Length-less replies * Wed Sep 16 2020 Alexander Sosedkin - 7e6b84e - saviour: release resource lock for deduplication (again) * Wed Sep 16 2020 Alexander Sosedkin - cf05db3 - saviour: per-how deduplication * Wed Sep 16 2020 Alexander Sosedkin - 79a4cc2 - saviour: overrideable deduplicate option in config * Mon Sep 14 2020 Alexander Sosedkin - df1ca57 - saviour: add --dedupe-options=nofiemap to speed up btrfs * Sat Sep 12 2020 Alexander Sosedkin - 30e163f - saviour: add a config switch to disable mirroring * Sat Sep 12 2020 Alexander Sosedkin - 7014814 - shared-cache: narrow selinux labelling * Sat Sep 12 2020 Alexander Sosedkin - 37d792b - saviour: untangle the symlink mess a bit * Sat Sep 12 2020 Alexander Sosedkin - 07e2dfc - cleanup: more aggressive cleanup * Fri Sep 11 2020 Alexander Sosedkin - 3c6cc82 - fingertip-shared-cache: RemainAfterExit=yes * Thu Sep 10 2020 Alexander Sosedkin - f0b74c3 - packaging: depend on slimmed down qemu * Thu Sep 10 2020 Alexander Sosedkin - 17f7487 - saviour: dedupe outside of a lock * Tue Sep 08 2020 Alexander Sosedkin - 1eef237 - expiration: recursive depend_on * Tue Sep 08 2020 Alexander Sosedkin - bcd340c - saviour: fix condition for metadata downloading * Mon Sep 07 2020 Alexander Sosedkin - 09568c0 - backend.qemu: remove leftover debug logging * Mon Sep 07 2020 Alexander Sosedkin - 26d4c05 - saviour: don't mirror everything on glob failure * Sun Sep 06 2020 Alexander Sosedkin - c31e070 - saviour: fix deduplicate=True to mirror() * Sun Sep 06 2020 Alexander Sosedkin - dcf8096 - saviour: add deduplicate=True to mirror() * Sat Sep 05 2020 Alexander Sosedkin - 4f55662 - util.http_cache: lstrip slashes in urls * Fri Sep 04 2020 Alexander Sosedkin - 0798185 - packaging: assorted updates * Fri Sep 04 2020 Alexander Sosedkin - 897bd5b - backend.qemu: ignore RTC_CHANGE * Fri Sep 04 2020 Alexander Sosedkin - 6aaaae6 - log.util: revert noflush-ing * Fri Sep 04 2020 Alexander Sosedkin - 31397c4 - shared-cache: don't rechmod on upgrades * Fri Sep 04 2020 Alexander Sosedkin - 21263f1 - backend.qemu: always use a fresh port for SSH * Fri Sep 04 2020 Alexander Sosedkin - 21a19cb - backend.qemu: tiny optimization * Fri Sep 04 2020 Alexander Sosedkin - bcd592d - backend.qemu: allow to opt into virtio-scsi * Fri Sep 04 2020 Alexander Sosedkin - 975567a - util.unit: support unsuffixed time interval parsing * Thu Sep 03 2020 Alexander Sosedkin - 8e863d2 - backend.qemu: tweak connecting to QMP * Thu Sep 03 2020 Alexander Sosedkin - 7c3c330 - backend.qemu: log copying to /tmp * Thu Sep 03 2020 Alexander Sosedkin - 06f5d22 - backend.qemu: fix +- ballooning * Thu Sep 03 2020 Alexander Sosedkin - 91ea09c - backend.qemu: more ssh data reading tweaks * Thu Sep 03 2020 Alexander Sosedkin - aa4d386 - backend.qemu: fix 100% CPU utilization on ballooning * Thu Sep 03 2020 Alexander Sosedkin - a45becf - util.log: NoFlushFileHandler * Thu Sep 03 2020 Alexander Sosedkin - dd25186 - packaging: assorted updates * Thu Sep 03 2020 Alexander Sosedkin - 029c436 - util.log: drop colorlog for speed * Thu Sep 03 2020 Alexander Sosedkin - 037d8a9 - backend.qemu: speed up SSH reading * Thu Sep 03 2020 Alexander Sosedkin - d39e192 - step_loader: fix assigner * Thu Sep 03 2020 Alexander Sosedkin - 65a59a1 - test: use cloud-init and ballooning * Thu Sep 03 2020 Alexander Sosedkin - 1c13011 - units: better pretty-printing * Thu Sep 03 2020 Alexander Sosedkin - 3699cc6 - step_loader: allow assignments (`.m.ram.min=2G`) * Thu Sep 03 2020 Alexander Sosedkin - 8075eee - machine: drop on exceptions instead of saving * Thu Sep 03 2020 Alexander Sosedkin - eac6a28 - cleanup: use util.units * Thu Sep 03 2020 Alexander Sosedkin - 6e4187b - backend.qemu: new, rich ballooning interface * Wed Sep 02 2020 Alexander Sosedkin - bfc9635 - backend.qemu: balloonomancy continues * Wed Sep 02 2020 Alexander Sosedkin - 5f7f5bb - everything: initial balloonomancy draft * Wed Sep 02 2020 Alexander Sosedkin - 43f6ead - util.units: add * Tue Sep 01 2020 Alexander Sosedkin - 74412cb - backend.qemu: fix parallel execution regression * Tue Sep 01 2020 Alexander Sosedkin - 3e43762 - update CONTRIBUTORS * Tue Sep 01 2020 Alexander Sosedkin - 3057ff8 - backend.qemu: nuke compression * Tue Sep 01 2020 Alexander Sosedkin - 312c77e - os.cloud-init: add a login method * Tue Sep 01 2020 Alexander Sosedkin - 11dac27 - os.cloud-init: add * Tue Sep 01 2020 Alexander Sosedkin - 8bd6f10 - backend.qemu.ssh: refactoring around key paths * Tue Sep 01 2020 Alexander Sosedkin - 165aee6 - saviour: (re)generate dnf metadata after reposync * Tue Sep 01 2020 Ondrej Moris - 3bcc7ab - os.fedora: extract login * Tue Sep 01 2020 Ondrej Moris - 1790a8d - fingertip-containerized: fix cwd and missing deps * Thu Aug 27 2020 Alexander Sosedkin - 1515ca4 - os.fedora: saviour mirror detection * Tue Aug 25 2020 Alexander Sosedkin - 8b25e57 - software.fingertip: add * Tue Aug 25 2020 Alexander Sosedkin - 8f8630f - os.fedora: accept integer version * Tue Aug 25 2020 Alexander Sosedkin - 55baa46 - os.fedora: accept integer version * Tue Aug 25 2020 Alexander Sosedkin - ef7bc28 - rpm: more build fixing * Tue Aug 25 2020 Alexander Sosedkin - 8c977e2 - rpm: %systemd_requires * Tue Aug 25 2020 Alexander Sosedkin - 6aa7267 - shared-cache: fix mount detection * Mon Aug 24 2020 Alexander Sosedkin - 478e7fa - shared-cache: define selinux context just once * Mon Aug 24 2020 Alexander Sosedkin - bf1813e - shared-cache: misc fixes * Mon Aug 24 2020 Alexander Sosedkin - 76c090d - os.fedora: drop --no-updates support * Mon Aug 24 2020 Alexander Sosedkin - 822a34b - backend.qemu: drop transient images earlier * Mon Aug 24 2020 Alexander Sosedkin - 8bf009a - backend.qemu: fix regression with transient images * Mon Aug 24 2020 Alexander Sosedkin - 1930b3c - backend.podman-criu: fix nonzero retcode detection * Mon Aug 24 2020 Alexander Sosedkin - e5e7a00 - everything: abolish no_-prefixed kwargs * Mon Aug 24 2020 Alexander Sosedkin - c0d3827 - os.fedora: even more thorough mirror checking * Mon Aug 24 2020 Alexander Sosedkin - 8463ef9 - fingertip: shared cache plugin * Fri Aug 21 2020 Alexander Sosedkin - b6f6f74 - util.temp: avoid multiuser-unfriendly tempfile * Fri Aug 21 2020 Alexander Sosedkin - cac8d56 - os.fedora: improve mirror-picking * Fri Aug 21 2020 Alexander Sosedkin - 333370d - backend.qemu: make tmpfs free space check multiuser-ok * Fri Aug 21 2020 Alexander Sosedkin - 8849a1f - expiration: consider missing files as changed * Fri Aug 21 2020 Alexander Sosedkin - 888bf12 - util.reflink: ignre SELinux context setting errors * Thu Aug 20 2020 Alexander Sosedkin - e73ec1c - util.http_cache: make g+w conditional on cache mode * Thu Aug 20 2020 Alexander Sosedkin - 0d4797e - util.http_cache: g+w for sharing cachedir * Wed Aug 19 2020 Alexander Sosedkin - 4e92271 - os.fedora: f33 fixup * Wed Aug 19 2020 Alexander Sosedkin - e90c39b - backend.qemu: reenable VMX * Wed Aug 19 2020 Alexander Sosedkin - 362d8e3 - os.fedora: add a fedora 33 kickstart * Tue Aug 18 2020 Alexander Sosedkin - 04369e6 - util.git_cache: more locking * Fri Aug 14 2020 Alexander Sosedkin - 93ae73b - util.git_cache: fix locking * Wed Aug 12 2020 Alexander Sosedkin - e275c15 - os.fedora: restore fedora mirror autodetection * Wed Aug 12 2020 Alexander Sosedkin - 801a903 - util.http_cache: retries and error reporting * Mon Aug 10 2020 Alexander Sosedkin - 1704e27 - util.http_cache: fix warnings on direct fetches * Fri Aug 07 2020 Alexander Sosedkin - f9bd0ad - INSTALL.md: update CoW setup section * Fri Aug 07 2020 Alexander Sosedkin - 6f88bed - backend.qemu: .forward_host_port(host_port, guest_port) * Fri Aug 07 2020 Alexander Sosedkin - ac04b33 - util.http_cache: HTTPS redirect suppression * Thu Aug 06 2020 Alexander Sosedkin - 753e854 - util.http_cache: actually use RangeRequestServer * Thu Aug 06 2020 Alexander Sosedkin - b9fb919 - util.http_cache: use RangeRequestServer * Thu Aug 06 2020 Alexander Sosedkin - b3ac8cc - saviour: don't skip explicit dedupe * Thu Aug 06 2020 Alexander Sosedkin - 035d24e - saviour: timeout on deduplication locking * Thu Aug 06 2020 Alexander Sosedkin - 75c48b4 - util.lock: timeouts * Thu Aug 06 2020 Alexander Sosedkin - 4a7800b - saviour: inform of deduplication db locking * Thu Aug 06 2020 Alexander Sosedkin - da4c1fb - saviour: lock deduplication db * Thu Aug 06 2020 Alexander Sosedkin - 7cdd813 - saviour: deduplicate along mirroring * Thu Aug 06 2020 Alexander Sosedkin - 8d85725 - saviour: drop duplicate f32 exclude * Thu Aug 06 2020 Alexander Sosedkin - dd7d2a9 - saviour.example.yml: exclude more for f32 * Thu Aug 06 2020 Alexander Sosedkin - 515d390 - util.http_cache: fix unsatiable fetch * Thu Aug 06 2020 Alexander Sosedkin - e03a0b1 - saviour: greatly improve deduplication * Thu Aug 06 2020 Alexander Sosedkin - c13e610 - util.reflink: preserve == --preserve=all * Thu Aug 06 2020 Alexander Sosedkin - 9014eb0 - util.http_cache: use a timeout in is_fetcheable * Thu Aug 06 2020 Alexander Sosedkin - 097dfec - fedora: don't metalink * Thu Aug 06 2020 Alexander Sosedkin - a3585fd - saviour: globbing * Thu Aug 06 2020 Alexander Sosedkin - 9ede308 - saviour: source repo guessing for reposync * Thu Aug 06 2020 Alexander Sosedkin - b2dff82 - saviour: tweak reposync * Thu Aug 06 2020 Alexander Sosedkin - 818d2e4 - saviour: output a 'done' message * Thu Aug 06 2020 Alexander Sosedkin - 0b49946 - saviour: simplify reposync a bit * Thu Aug 06 2020 Alexander Sosedkin - 3178086 - saviour: use sublog more * Thu Aug 06 2020 Alexander Sosedkin - 0504102 - saviour: extra logging * Thu Aug 06 2020 Alexander Sosedkin - e4a9f2a - saviour: use reflink's --preserve * Thu Aug 06 2020 Alexander Sosedkin - 41fec26 - util.reflink: add '--preserve' * Thu Aug 06 2020 Alexander Sosedkin - 9ee3388 - saviour: make rsync preserve times * Thu Aug 06 2020 Alexander Sosedkin - 2a8dcd7 - saviour.example.yml: use http for fedora lookaside * Thu Aug 06 2020 Alexander Sosedkin - 2851d4e - saviour: fix fetching suffixed urls with command * Thu Aug 06 2020 Alexander Sosedkin - f667596 - util.http_cache: report all reasons for direct downloading * Thu Aug 06 2020 Alexander Sosedkin - da864cb - saviour: move deduplication into a separate command * Thu Aug 06 2020 Alexander Sosedkin - ceb3df9 - saviour: mirror some of the resources * Thu Jul 30 2020 Alexander Sosedkin - a80641d - http_cache: fix mocking * Thu Jul 30 2020 Alexander Sosedkin - 242bf7b - saviour.example.yml: mark directories as directories * Thu Jul 30 2020 Alexander Sosedkin - 5b45930 - util.http_cache: misc fetching fixes * Thu Jul 30 2020 Alexander Sosedkin - aa6fa93 - saviour: use --copy-dest in rsync anyway * Thu Jul 30 2020 Alexander Sosedkin - d0b4a4a - saviour: download resumption * Thu Jul 30 2020 Alexander Sosedkin - 6e30a38 - http_cache: prettify streaming message * Thu Jul 30 2020 Alexander Sosedkin - c8be576 - http_cache: fix saviour fetching * Thu Jul 30 2020 Alexander Sosedkin - 34f30b8 - git_cache: remove debug output * Thu Jul 30 2020 Alexander Sosedkin - b24ffb2 - saviour: fix fdupes target * Thu Jul 30 2020 Alexander Sosedkin - c7ab176 - everything: initial draft of saviour * Mon Jul 20 2020 Alexander Sosedkin - 8298f59 - util.path: CoW for whole CACHE, put behind CACHE * Mon Jul 20 2020 Alexander Sosedkin - be7de1a - main: don't mount CoW image on filesystem destroy * Wed Jul 08 2020 Alexander Sosedkin - 7746d4d - CONTRIBUTORS: update * Wed Jul 08 2020 Alexander Sosedkin - 6e7da90 - git_cache: add upload_contents * Wed Jul 08 2020 Alexander Sosedkin - 48bc111 - git_cache: rename cached_clone to upload_clone * Wed Jul 08 2020 Alexander Sosedkin - 3d58446 - script.debug: quieter 'ignored' messages * Wed Jul 08 2020 Alexander Sosedkin - 054d8bb - backend.qemu: ssh.exec quiet flag * Wed Jul 08 2020 Alexander Sosedkin - b123cd1 - ansible: nicer spin-up msg * Thu Jul 02 2020 Alexander Sosedkin - 5a076a1 - qemu, temp: be more cautious about using /tmp * Thu Jul 02 2020 Alexander Sosedkin - 16cd577 - rhts.debug: fix expecting tabs * Wed Jul 01 2020 Alexander Sosedkin - e70887b - script.debug: upload scriptfile once at the start * Wed Jul 01 2020 Alexander Sosedkin - a620a8b - script.debug: better $0 configuration * Wed Jul 01 2020 Alexander Sosedkin - 170c875 - script.debug: don't expect that many newlines * Wed Jul 01 2020 Alexander Sosedkin - b1a4761 - script.debug: set $BASH_SOURCE for bash * Wed Jul 01 2020 Alexander Sosedkin - 9e72352 - script.debug: halting * Mon Jun 29 2020 Alexander Sosedkin - 55fbb3c - script.debug: extract/abstract common highlighting * Mon Jun 29 2020 Alexander Sosedkin - 384fc76 - README: add an example of invoking script.debug * Fri Jun 26 2020 Alexander Sosedkin - 74901bb - script.debug: suppress checkpoint cleanup messages * Fri Jun 26 2020 Alexander Sosedkin - cf5d86b - expiration: invalidate on package updates as well * Fri Jun 26 2020 Alexander Sosedkin - 7e80fc9 - script.debug: assorted changes * Fri Jun 26 2020 Alexander Sosedkin - 193ced4 - util.http_cache: don't warn on direct streaming * Fri Jun 26 2020 Alexander Sosedkin - 5a555bd - util.log, machine: fix fingertip.fingertip in logs * Thu Jun 25 2020 Alexander Sosedkin - 384571c - script.debug: move more to REPLBase * Thu Jun 25 2020 Alexander Sosedkin - 9d24ec6 - http_cache: more mocking, serving local files * Thu Jun 25 2020 Alexander Sosedkin - 1806f8e - main: add workaround for cleanup on full filesystems * Thu Jun 25 2020 Sahana Prasad - 13f4dbd - Enables fips on f32 in fingertip. * Thu Jun 25 2020 Jakub Jelen - f8d9d7b - README: Fix command example * Thu May 28 2020 Alexander Sosedkin - 7881772 - script.debug: extract REPLBase * Thu May 28 2020 Alexander Sosedkin - bb6031e - time_desync: add a way to sync and auto-sync time * Tue May 26 2020 Alexander Sosedkin - 35a4d84 - script.debug: coloring and terseness for Python * Mon May 25 2020 Alexander Sosedkin - a01e716 - script.debug: decolor the header as well * Sat May 23 2020 Alexander Sosedkin - 0b3597d - script.debug: add REPL headers * Sat May 23 2020 Alexander Sosedkin - 70cadb9 - script.debug: more tweaks, Python support * Sat May 23 2020 Alexander Sosedkin - b36a648 - script.debug: assorted improvements * Fri May 22 2020 Alexander Sosedkin - b93e4b9 - script.debug: port to inotify_simple * Thu May 21 2020 Alexander Sosedkin - a4aa41e - packaging: make python3-fsmonitor optional for now * Thu May 21 2020 Alexander Sosedkin - f3d128f - script.debug: initial draft with segmenting * Thu May 21 2020 Alexander Sosedkin - d333da5 - backend.qemu: more .snapshot sugary sweetness * Wed May 20 2020 Alexander Sosedkin - 8b9e486 - backend.qemu: add shortcuts for snapshotting * Wed May 20 2020 Alexander Sosedkin - 1a6e73c - expiration.file_has_not_changed: extract * Tue May 19 2020 Alexander Sosedkin - 32f4a6e - script: move run and test into a separate file * Tue May 19 2020 Alexander Sosedkin - b1f689f - util.http_cache: drop down-connection on up-errors * Sat May 16 2020 Alexander Sosedkin - 65659d9 - backend.qemu: wall clock time silence timeout * Fri May 15 2020 Alexander Sosedkin - 130d9e6 - os.fedora: increase dnf timeouts * Fri May 15 2020 Alexander Sosedkin - 58f3a8b - util.http_cache: slightly better error reporting * Fri May 15 2020 Alexander Sosedkin - 200f5a0 - util.http_cache: desperately try to avoid compression * Fri May 15 2020 Alexander Sosedkin - 07b2b02 - util.path: lock in wip() * Fri May 15 2020 Alexander Sosedkin - 76c7ae9 - util.lock: get rid of Maybe, inter-thread locking * Fri May 15 2020 Alexander Sosedkin - 7ab69e9 - util.log: lstrip whitespace in ErasingFormatter * Fri May 15 2020 Alexander Sosedkin - ea4c383 - util.http_cache: nicer printing * Fri May 15 2020 Alexander Sosedkin - bb393a2 - os.fedora: bump dnf timeout (as proxy doesn't stream) * Fri May 15 2020 Alexander Sosedkin - b0f6aeb - backend.qemu: add inactivity markers to debug log * Fri May 15 2020 Alexander Sosedkin - 8b65eb8 - util.log: make LogPipeThread daemon * Fri May 15 2020 Alexander Sosedkin - ccaff0f - util.http_cache: use daemon threads * Fri May 15 2020 Alexander Sosedkin - 9a50da8 - backend.qemu: invalidate SSH connection at exit * Thu May 14 2020 Alexander Sosedkin - 689b034 - util.temp: set sighandler a tad more cautiously * Tue May 12 2020 Alexander Sosedkin - 2cc63f9 - cleanup: allow for symlinked path.MACHINES * Thu May 07 2020 Alexander Sosedkin - 130cae2 - os.fedora: 32 is released * Thu Apr 30 2020 Alexander Sosedkin - b556c8e - ansible: ensure ssh is working before using it * Thu Apr 30 2020 Alexander Sosedkin - d35c33c - util.git_cache: minor fixes * Tue Apr 21 2020 Alexander Sosedkin - 0c72912 - rpm: add a missing dependency on netcat * Tue Apr 21 2020 Alexander Sosedkin - 2b2d008 - rpm: fixup again * Tue Apr 21 2020 Alexander Sosedkin - 7b254fe - rpm: fixup again * Tue Apr 21 2020 Alexander Sosedkin - 14bf0cf - rpm: fixup again * Tue Apr 21 2020 Alexander Sosedkin - 6ba4dde - rpm: fixup * Tue Apr 21 2020 Alexander Sosedkin - cbeeaf4 - rpm: make main.py executable * Tue Apr 21 2020 Alexander Sosedkin - 584b7c5 - rpm: install files one layer above, like in wheels * Tue Apr 21 2020 Alexander Sosedkin - 085f2e1 - pyproject.toml: fix includes/excludes * Sat Apr 18 2020 Alexander Sosedkin - f8802e5 - machine: fixes, last step returns log path now * Fri Apr 17 2020 Alexander Sosedkin - 18f0bcb - machine: fix transiency optimization * Thu Apr 16 2020 Alexander Sosedkin - 03af1c3 - step_loader: don't allow / in tags * Wed Apr 15 2020 Alexander Sosedkin - 45fd79e - cleanup_job: fix scheduling * Wed Apr 15 2020 Alexander Sosedkin - 832f20e - cleanup_job: fix retcode check * Tue Apr 14 2020 Alexander Sosedkin - e727e16 - test.py: exclude hostname tests for containers * Tue Apr 14 2020 Alexander Sosedkin - 9df8b84 - ansible.playbook: update to use .expiration * Fri Apr 10 2020 Alexander Sosedkin - c69648f - INSTALL.md: small change * Fri Apr 10 2020 Alexander Sosedkin - 4915620 - README.md: move parts to INSTALL.md/PUBLISHING.md * Fri Apr 10 2020 Alexander Sosedkin - 65ed957 - pyproject.toml: use dynamic versioning * Fri Apr 10 2020 Stanislav Zidek - 9644c9d - script plugin: test mode * Fri Apr 10 2020 Alexander Sosedkin - 339a98b - machine: expose fingertip_last_step to plugins * Fri Apr 10 2020 Alexander Sosedkin - 9446dc5 - packaging: make `copr make srpm` work * Thu Apr 09 2020 Jakub Jelen - 8f15401 - RPM packaging spec file and notes * Thu Apr 09 2020 Alexander Sosedkin - 64d698c - ssh: @fingertip.transient(when='last') * Thu Apr 09 2020 Alexander Sosedkin - 05669fe - machine: fix the condition for unexpected returns * Thu Apr 09 2020 Alexander Sosedkin - a5116dd - util.cleanup_job: move out of reflink * Thu Apr 09 2020 Alexander Sosedkin - 10ef59f - plugins.filesystem, util.reflink: assorted changes * Thu Apr 09 2020 Alexander Sosedkin - b5900c3 - main: unbreak not-really-plugins like cleanup * Thu Apr 09 2020 Alexander Sosedkin - 2c7b2e0 - plugins: going away from now-optional .transient() * Thu Apr 09 2020 Alexander Sosedkin - 0c5e116 - script: clarify comment, add transient case * Thu Apr 09 2020 Alexander Sosedkin - 7b770a8 - script: implement 'natural' transiency rules * Thu Apr 09 2020 Alexander Sosedkin - 086026a - machine: allow @fingertip.transient(when=callable) * Thu Apr 09 2020 Alexander Sosedkin - 6a244ba - expiration: more cautious interval parsing * Thu Apr 09 2020 Alexander Sosedkin - 21ea2e7 - machine: implement @transient(when='last') * Wed Apr 08 2020 Alexander Sosedkin - e9dee0a - util.log: turn sublogger into a class * Wed Apr 08 2020 Alexander Sosedkin - fc58512 - test.py: exclude containers+scrpt * Wed Apr 08 2020 Alexander Sosedkin - 5917fd4 - util.log: fix logging to the wrong file * Wed Apr 08 2020 Jakub Jelen - 36dd03a - Update test to work also on alpine * Wed Apr 08 2020 Jakub Jelen - a4cbf55 - alpine: Set consistent hostname * Wed Apr 08 2020 Jakub Jelen - e5abe32 - qemu: get more debugging messages from ssh connections * Wed Apr 08 2020 Jakub Jelen - a66929e - qemu: Disrupt the VM before pausing to break any outstanding ssh connection * Wed Apr 08 2020 Jakub Jelen - 77f70cc - Verify there are no hanging processes from previous snapshots * Wed Apr 08 2020 Jakub Jelen - 822fd68 - ssh: Cleanup session before running interactive one * Wed Apr 08 2020 Jakub Jelen - 409558e - qemu: Close ssh session on invalidate() * Tue Apr 07 2020 Jakub Jelen - 1e7789c - filesystem: Create a new target to unmount filesystem and change the cleanup to remove the backing file too * Tue Apr 07 2020 Jakub Jelen - b479fcb - reflink: Downgrade log level of non-mandatory startup messages * Tue Apr 07 2020 Jakub Jelen - 1676dd2 - README: mention the setup wizard in README * Tue Apr 07 2020 Jakub Jelen - 0d91b94 - README: Instructions to create the xfs filesystem outside of its target mount point * Tue Apr 07 2020 Jakub Jelen - 717ef3f - Invoke interactive setup on startup * Tue Apr 07 2020 Jakub Jelen - f9a8d02 - Introduce interactive setup and its invocation through plugin * Tue Apr 07 2020 Jakub Jelen - beca0ad - Create a new target for periodical cleanup * Tue Apr 07 2020 Jakub Jelen - b84da36 - hooks: Fix typos * Mon Apr 06 2020 Alexander Sosedkin - afef024 - backend.qemu: add shared_directory context manager * Fri Apr 03 2020 Stanislav Zidek - c6dad5b - script.run: a plugin for running scripts * Fri Apr 03 2020 Stanislav Zidek - 003100a - proper switching of log states * Fri Apr 03 2020 Alexander Sosedkin - 6263297 - backend.qemu: add a simplistic m.breakpoint() * Tue Mar 31 2020 Jakub Jelen - c5a3bb6 - Do not try to change permission of a key we do not own * Tue Mar 31 2020 Jakub Jelen - 686b6a6 - simple selftest making sure hostname is set to sensible values * Fri Mar 27 2020 Alexander Sosedkin - dbfe751 - pyproject.toml: add readme and repository * Fri Mar 27 2020 Miroslav Vadkerti - b6a7cb0 - Package via poetry * Fri Mar 27 2020 Miroslav Vadkerti - b675e02 - Fix issue when adjust_time not defined * Fri Mar 27 2020 Alexander Sosedkin - a88856a - fingertip-containerized: use python3 explicitly * Fri Mar 27 2020 Alexander Sosedkin - b0aaed5 - backend.qemu: avoid truncation in SSH.download * Fri Mar 27 2020 Ivan Nikolchev - 0bcf2ce - add ssh download function * Fri Mar 27 2020 Jakub Jelen - 6e22374 - Use FQDN to unbreak kerberos tests * Fri Mar 27 2020 Stanislav Zidek - c864b1c - Warn if there is no reflink support for machines directory * Fri Mar 27 2020 Miroslav Vadkerti - f4b5b4d - Fix handling of no parameters * Fri Mar 27 2020 Alexander Sosedkin - 5b69b59 - backend.podman-criu: fix log truncation in exec * Tue Mar 24 2020 Alexander Sosedkin - cae7e52 - util.http_cache: pass Range'd requests through * Tue Mar 24 2020 Alexander Sosedkin - ab8e660 - util.http_cache: stop stripping Range from headers * Tue Mar 24 2020 Alexander Sosedkin - 6f1644e - util.http_cache: fix a typo in logger invocation * Thu Mar 19 2020 Alexander Sosedkin - 14f138d - self_tests.exec: add one with kilobytes of output * Thu Mar 19 2020 Alexander Sosedkin - df010ef - ssh: don't pollute UserKnownHostsFile * Thu Mar 19 2020 Alexander Sosedkin - c3efae1 - os.fedora: just disable openh264 repo for now * Wed Mar 18 2020 Alexander Sosedkin - 35f64ba - os.fedora: replace https with http in repo urls * Sun Mar 15 2020 Alexander Sosedkin - 2a105c2 - backend.qemu: wait before SSH EOFError reconnect * Sun Mar 15 2020 Alexander Sosedkin - 29d8462 - backend.qemu: attempt reconnecting SSH on EOFError * Sat Mar 14 2020 Alexander Sosedkin - f597190 - backend.qemu: check SSH transport before reusing * Sat Mar 14 2020 Alexander Sosedkin - 424ecb7 - backend.qemu, log: speed up long outputs * Sun Mar 08 2020 Alexander Sosedkin - eca982e - cleanup: remove semi-written pickles * Wed Mar 04 2020 Alexander Sosedkin - 0a45e07 - os.fedora: fix typo in metalink * Sun Mar 01 2020 Alexander Sosedkin - 5087a87 - backends: ignore codec_errors in pexpect * Sat Feb 29 2020 Alexander Sosedkin - 5d8bee8 - os.fedora: fail faster on installation problems * Thu Feb 27 2020 Alexander Sosedkin - a69b0c0 - cleanup: happily remove unlocked incomplete ones * Wed Feb 26 2020 Alexander Sosedkin - 44a796d - os.fedora: add Fedora 32 * Mon Feb 24 2020 Alexander Sosedkin - 9a258c5 - os.fedora: can't stop fixing mirror selection * Mon Feb 24 2020 Alexander Sosedkin - 43bb2f6 - util.git_cache: fetch git tags * Mon Feb 24 2020 Alexander Sosedkin - 4785417 - os.fedora: more flexible mirror selection * Mon Feb 24 2020 Alexander Sosedkin - c803059 - util.http_cache: sprinkle allow_redirects=False * Mon Feb 24 2020 Alexander Sosedkin - 1ad4470 - util.http_cache: warn on BrokenPipeError * Mon Feb 24 2020 Alexander Sosedkin - 7b4b990 - util.http_cache: handle empty replies better * Mon Feb 24 2020 Alexander Sosedkin - 99cc60b - os.fedora: override mirror autodetection * Mon Feb 24 2020 Alexander Sosedkin - 6230153 - os.fedora: allow specifying a mirror * Wed Feb 19 2020 Alexander Sosedkin - 8a63b7b - os.fedora: install with updates and w/o weak_deps * Tue Feb 18 2020 Alexander Sosedkin - 9d552e2 - os.fedora: use http-only metalink * Tue Feb 18 2020 Alexander Sosedkin - 7499c6d - os.fedora: select a specific mirror * Fri Feb 14 2020 Alexander Sosedkin - 365cba9 - util.git_cache: allow to skip re-fetching... * Thu Feb 13 2020 Alexander Sosedkin - d55072b - cleanup: simplify * Tue Feb 11 2020 Alexander Sosedkin - 7a4e6c3 - cleanup: clean broken symlinks in multiple passes * Sat Feb 08 2020 Alexander Sosedkin - b3317ba - expiration: store absolute paths * Sat Feb 08 2020 Alexander Sosedkin - f948c1d - machine: avoid argument name clashing * Sat Feb 08 2020 Alexander Sosedkin - 42829da - expiration: allow to FINGERTIP_IGNORE_CODE_CHANGES * Sat Feb 08 2020 Alexander Sosedkin - 4fe628a - util.git_cache: add * Wed Jan 29 2020 Alexander Sosedkin - eb44499 - fingertip-containerized: add * Wed Jan 29 2020 Alexander Sosedkin - c632cfb - README: more 'preview' examples * Wed Jan 29 2020 Alexander Sosedkin - e346586 - ansible: quote module arguments * Wed Jan 29 2020 Alexander Sosedkin - 38ea2a5 - util.temp: don't mistakenly assume /tmp * Wed Jan 29 2020 Alexander Sosedkin - db3dce8 - util.log: add fingertip.util.log.critical() * Mon Jan 27 2020 Alexander Sosedkin - 09f8ffb - util.optional_pretty_backtraces: add eye-candy * Mon Jan 27 2020 Alexander Sosedkin - 4d2273a - transient: add a generic transient wrapper * Mon Jan 27 2020 Alexander Sosedkin - e551b27 - util.log: remove log level indicator * Mon Jan 27 2020 Alexander Sosedkin - aeb1d40 - machine: don't serialize m.log at all * Sun Jan 26 2020 Alexander Sosedkin - e2ab002 - util.log: include sublogger name into the filename * Sun Jan 26 2020 Alexander Sosedkin - 01cdad9 - cleanup: add a cleanup plugin * Sun Jan 26 2020 Alexander Sosedkin - 8e8a99b - console: reinstate fake prompt warning * Sun Jan 26 2020 Alexander Sosedkin - fcb7e9a - machine: fix handing off the stage to child logger * Sat Jan 25 2020 Alexander Sosedkin - 52b66a9 - backend.podman-criu: check detected prompt * Sat Jan 25 2020 Alexander Sosedkin - 30ebc43 - console: also support podman-criu * Sat Jan 25 2020 Alexander Sosedkin - 83bdd0c - util.http_cache: shorten success message * Sat Jan 25 2020 Alexander Sosedkin - d604866 - util.log: overhaul the whole logging * Thu Jan 23 2020 Alexander Sosedkin - 7c040ea - everything: add expiration-on-changed-file * Thu Jan 23 2020 Alexander Sosedkin - 369bc3a - machine: properly expire the first stage too * Thu Jan 23 2020 Alexander Sosedkin - 888b802 - ansible: increase connection timeout * Wed Jan 22 2020 Alexander Sosedkin - 7d68f5b - expiration: support nicer timestamps like '4h' * Wed Jan 22 2020 Alexander Sosedkin - 6c43106 - expiration: actually start considering it * Wed Jan 22 2020 Alexander Sosedkin - 1f59907 - exec: rework everything exec-related * Wed Jan 22 2020 Alexander Sosedkin - 11dca5b - unseal: fix unsealing with synchronous hooks * Fri Jan 17 2020 Alexander Sosedkin - 61f81de - main: clean up * Thu Jan 16 2020 Alexander Sosedkin - 0304f12 - everything: use closure assignment everywhere * Wed Jan 15 2020 Alexander Sosedkin - faea40f - machine: use cloudpickle * Wed Jan 15 2020 Alexander Sosedkin - a6f7048 - fedora.disable_proxy: use ansible ini_file * Mon Jan 13 2020 Alexander Sosedkin - c8daf5f - test.py: tweak the set of tested configurations * Mon Jan 13 2020 Alexander Sosedkin - 057340b - alpine: hook ansible_prepare to containers * Mon Jan 13 2020 Alexander Sosedkin - 35ae198 - os.fedora: make enable_repo use ansible * Mon Jan 13 2020 Alexander Sosedkin - 53756da - ansible: introduce ansible_prepare hook * Fri Jan 10 2020 Alexander Sosedkin - 0045d46 - machine: actually set 'loading' state * Fri Jan 10 2020 Alexander Sosedkin - ee6e3b8 - ansible: add support for podman-criu * Fri Jan 10 2020 Alexander Sosedkin - c44f074 - backend: store backend name in an attribute * Fri Jan 10 2020 Alexander Sosedkin - 79a4572 - ssh: add --no-unseal and --transient * Fri Jan 10 2020 Alexander Sosedkin - d07762d - ansible: initial barebones version * Fri Jan 10 2020 Alexander Sosedkin - 99174ce - step_loader: allow calling .methods from cmdline * Fri Jan 10 2020 Alexander Sosedkin - bd39081 - os.fedora: add disable_proxy * Fri Jan 10 2020 Alexander Sosedkin - 436b1b4 - backend.qemu: reconnect on banner timeout * Fri Jan 10 2020 Alexander Sosedkin - c3a3c97 - util.http_cache: shorten more tracebacks * Wed Jan 08 2020 Alexander Sosedkin - 89936d9 - os.fedora: fix restoring RAM size * Tue Jan 07 2020 Alexander Sosedkin - 76b6087 - util.temp: fix failure on tmpfs overflow * Tue Jan 07 2020 Alexander Sosedkin - 346a9cf - backend.qemu: lock to serialize VM image cloning * Tue Jan 07 2020 Alexander Sosedkin - d304b34 - backend.qemu: risk using /tmp if it has space * Tue Jan 07 2020 Alexander Sosedkin - 4a940fe - ssh: add non-transient .exec() * Thu Dec 26 2019 Alexander Sosedkin - 93a3ee9 - test: tweak a little * Thu Dec 26 2019 Alexander Sosedkin - b04383b - util.repeatedly: extract common functionality * Wed Dec 25 2019 Alexander Sosedkin - fe9cfcf - os.fedora: tweak a little * Wed Dec 25 2019 Alexander Sosedkin - 14ddd2a - test: add tests for unsealing + installing package * Wed Dec 25 2019 Alexander Sosedkin - 9cd897c - alpine: don't disable proxy on unsealing * Wed Dec 25 2019 Alexander Sosedkin - 218b237 - unseal: fix it * Wed Dec 25 2019 Alexander Sosedkin - 81e1414 - http_cache: make offline mode more aggressive * Wed Dec 25 2019 Alexander Sosedkin - 41edf32 - http_cache: hack around decompressing .gz * Wed Dec 25 2019 Alexander Sosedkin - 9e54138 - hooks: move out of core * Tue Dec 24 2019 Alexander Sosedkin - f103b1d - expiration: move out of core * Tue Dec 24 2019 Alexander Sosedkin - 6a747de - test: test more, skip fedora + greetings * Tue Dec 24 2019 Alexander Sosedkin - 3b0a2ef - step_loader: extract from core * Tue Dec 24 2019 Alexander Sosedkin - 0ee457b - core: add @fingertip.transient; add locking * Tue Dec 24 2019 Alexander Sosedkin - 43db9ba - util.http_server: use smarter, compliant caching * Mon Dec 23 2019 Alexander Sosedkin - 3f36341 - util.temp: cleanup on SIGTERM * Sun Dec 22 2019 Alexander Sosedkin - bd9c391 - backend.qemu: disable VMX to fix snapshots on F31 * Sat Dec 21 2019 Alexander Sosedkin - 3ff2a32 - self_test: add more tests * Sat Dec 21 2019 Alexander Sosedkin - 66f9c0b - backend.podman-criu: add a container backend * Sat Dec 21 2019 Alexander Sosedkin - 1fb5e27 - backend.qemu: increase SSH connection robustness * Sat Dec 21 2019 Alexander Sosedkin - 1c81153 - backend.qemu: add rng device * Sat Dec 21 2019 Alexander Sosedkin - c7f5240 - core: avoid long paths & symlink nesting limits * Sat Dec 21 2019 Alexander Sosedkin - c963dae - core: support fast dropping with .transient() * Sat Dec 21 2019 Alexander Sosedkin - 265a460 - gitignore: exclude downstream plugins * Mon Dec 02 2019 Alexander Sosedkin - 3015b1c - core: fire up hooks only on first __enter__ * Sun Dec 01 2019 Alexander Sosedkin - ce4cf99 - unseal: do not attempt unsealing unsealed * Sun Dec 01 2019 Alexander Sosedkin - 6da80ea - self_tests.greeting: rename, use SSH for checking * Sun Dec 01 2019 Alexander Sosedkin - 5599717 - ssh: add interactive ssh plugin * Sun Dec 01 2019 Alexander Sosedkin - 30b047e - core: fix transient plugin teardown * Sat Nov 30 2019 Alexander Sosedkin - e28d29f - core: build cache tree with symlinks * Sat Nov 30 2019 Alexander Sosedkin - 140ee1a - os.alpine: split installation into two phases * Sat Nov 30 2019 Alexander Sosedkin - f9ecaf8 - backend.qemu: add discard support * Sat Nov 30 2019 Alexander Sosedkin - 1aef59b - util.temp: add unique_dir * Sat Nov 30 2019 Alexander Sosedkin - 826e31a - util.temp: rename TEMP_PREFIX to AUTOREMOVE_PREFIX * Sat Nov 30 2019 Alexander Sosedkin - 91e77c9 - core: support first step being a transient step * Sat Nov 30 2019 Alexander Sosedkin - 2254ce0 - alpine: add Alpine distro * Sat Nov 30 2019 Alexander Sosedkin - 2266997 - console: add console plugin * Sat Nov 30 2019 Alexander Sosedkin - 9690471 - unseal: unsealing and initial sealing * Sat Nov 30 2019 Alexander Sosedkin - 56ac72c - everything: mandate hooks to be methods * Sat Nov 30 2019 Alexander Sosedkin - a8df3a4 - everything: tweak logging levels around * Sat Nov 30 2019 Alexander Sosedkin - 8422d5f - initial commit