Releases: pyinfra-dev/pyinfra
v2.5.3
v2.5.2
- 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
v2.5
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
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 tofiles.sync
operation (@filips123) - Copy local permissions when
mode=True
infiles.put
operation - Add
headers
andinsecure
arguments tofiles.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
Relatively small quick release with two additions and a bunch of fixes.
Added:
- Add
create_home
argument toserver.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
infiles.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
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 infiles.line
operation - Fix bug in
mysql.privileges
invalid argument requestingMysqlUserGrants
fact
v2.1
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 whenassume_exists=True
- Fix parsing of link targets in RHEL 6 systems
- Prefer
zypper
overapt
when both present inserver.packages
operation
Internal changes:
- Fix license link (@Lab-Brat)
- Run
black
andisort
across the codebase, now part of CI
v2.0.2
v2.0.1
- Rewrite & fix/speedup
systemd
facts usingsystemctl show
- Support passing IO-like objects into
files.template
operation - Support
accept-new
SSH config forStrictHostKeyChecking
- 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