Skip to content

Releases: pyinfra-dev/pyinfra

v2.5.3

09 Nov 19:31
63e8d96
Compare
Choose a tag to compare
  • Fix handling of facts with no arguments or with global arguments
  • Fix mutable default breaking Host.loop position tracking
  • Cleanup exception handling within operation code

v2.5.2

03 Nov 21:13
6895634
Compare
Choose a tag to compare
  • Fix/make safer check for sysvinit in server.service operation
  • Fix parsing of sticky/setgid/setuid permission bits in files.* facts
  • Respect TMPDIR when asking for sudo password (@jaysoffian)
  • Fix old windows fact names (@simon04)
  • Fix consistency of facts called in vs. out of operation context
  • Fix a bunch of pylint issues (@marksmayo)
  • Fix docstrings on python.* operations

v2.5.1

24 Oct 19:48
a413fcc
Compare
Choose a tag to compare
  • Fix bug in pre/post condition handling that would print non-fatal errors

v2.5

24 Oct 16:27
f2514e2
Compare
Choose a tag to compare

Added:

  • Add selinux.boolean, selinux.file_context, selinux.file_context_mapping & selinux.port operations (@morrison12)
  • Add selinux.SEBoolean, selinux.FileContextMapping, selinux.SEPorts, selinux.SEPort facts (@morrison12)
  • Add snap.package operation & snap.SnapPackage, snap.SnapPackages facts (@pabloxio)
  • Add beta files.block operation implementation (@morrison12)

Fixed:

  • Include all systemd units in systemd.SystemdStatus fact (@mariusmuja)
  • Handle installed RPM packages in rpm.RpmPackage fact (@mariusmuja)
  • Fix host loop cycle errors with new host.loop method
  • Always use ISO format date in server.Date fact, should resolve any outstanding parse errors

Other changes:

  • Fix a whole load of documentation typos (@simonw)
  • Generic typing stub for operation decorator (@mariusmuja)
  • First pass at type annotations for the API (@lowercase00)
  • Add type checking CI job
  • Decomposition of many internal API functions & cleanup (@lowercase00)
  • Use macos-latest GitHub runner (@morrison12)
  • Fix documentation URL (@blaisep)

v2.4

13 Aug 17:25
87fb7a0
Compare
Choose a tag to compare

Delayed getting this out, lots of little improvements.

Added:

  • Add server.user_authorized_keys operation
  • Add global _continue_on_error argument
  • Add dir_mode argument to files.sync operation (@filips123)
  • Copy local permissions when mode=True in files.put operation
  • Add headers and insecure arguments to files.download operation

Fixed:

  • Get facts with host & state context (@jaysoffian)
  • Fix short facts with arguments (@jaysoffian)
  • Fix hang on launch of container in lxd.container operation (@zachwaite)
  • Run operations with host context
  • Fix idempotency with uploads to a directory in files.put operation

Other changes:

  • Fix multiple doc typos (@timgates42)
  • Fix variable typo (@bouke-sf)
  • Fix CLI shell autocomplete doc (@jaysoffian)
  • Implement idempotency in git.bare_repo operation
  • Add typing to fact classes
  • Start testing files operations with pathlib objects

v2.3

16 Jul 06:57
f6c18dd
Compare
Choose a tag to compare

Relatively small quick release with two additions and a bunch of fixes.

Added:

  • Add create_home argument to server.user operation
  • Separate no change/change in proposed changes & results output
  • Support IO-like objects as stdin

Fixed:

  • Fix short fact gathering
  • Fix handling of IO-like objects when assume_exists=True in files.put operation
  • Don't fail to ensure user home dir that already exists as a link
  • Rename file utils to avoid clashes/confusion with operations

Internal:

  • Check operation type stubs during CI

v2.2

02 Jun 13:21
6a932fd
Compare
Choose a tag to compare

The main feature of 2.2 is the switch to using a DAG to generate operation order. This mostly replaces line-number ordering (still used to tie-break) and means hacks such as state.preserve_loop_order are no longer required!

The second highlight feature is the inclusion of type stub files for operations that include all of the global arguments. Thank you to @StefanBRas for implementing this.

Other changes:

  • Use home directory fact for default in server.user operation (@yunzheng)
  • Fix matching replace as a whole line in files.line operation
  • Fix bug in mysql.privileges invalid argument requesting MysqlUserGrants fact

v2.1

03 May 16:57
a9a42cc
Compare
Choose a tag to compare

First 2.x point release! Major feature: nested operations (at last!).

Based on the changes to operations in 2.x nested operations make it possible to generate & execute operations on the fly at execution time, rather than using the low-level connector API. This unlocks all kinds of complex deploys that were previously impossible or complex to implement. Let's look at an example:

from pyinfra import logger
from pyinfra.operations import python, server

def callback():
    result = server.shell(commands=["echo output"])
    logger.info(f"Got result: {result.stdout}")

python.call(
    name="Execute callback function",
    function=callback,
)

Other new stuff:

  • Add host.reload_fact(...) - bypasses the fact cache to force reloading of fact data
  • Add deb.DebArch fact
  • Add ssh_paramiko_connect_kwargs host data used in the @ssh connector

Bugfixes:

  • Fix: Remove state/host arguments from apt.dist_upgrade operation (@pabloxio)
  • Fix files.put hashing local file that doesn't exist when assume_exists=True
  • Fix parsing of link targets in RHEL 6 systems
  • Prefer zypper over apt when both present in server.packages operation

Internal changes:

  • Fix license link (@Lab-Brat)
  • Run black and isort across the codebase, now part of CI

v2.0.2

28 Apr 10:23
39aad35
Compare
Choose a tag to compare
  • Fix for config.SUDO/etc handling for operation argument defaults

v2.0.1

17 Apr 11:51
0a46804
Compare
Choose a tag to compare
  • Rewrite & fix/speedup systemd facts using systemctl show
  • Support passing IO-like objects into files.template operation
  • Support accept-new SSH config for StrictHostKeyChecking
  • Fix hashing of facts with non-keyword arguments
  • Fix connect to non-connected hosts before collecting facts
  • Fix config.REQUIRE_PYINFRA_VERSION & config.REQUIRE_PACKAGES handling
  • Many little docs improvements