Releases: pyinfra-dev/pyinfra
v2.6.1
v2.6
Added:
- Use SSH connector parameters with
files.rsyncoperation (@StevenKGER) - Add
auto_removearguments toapt.upgradeoperation (@mcataford) - Make it possible to call any function/op/deploy from the CLI
Fixed:
- Fix handling of ALL/GRANT OPTION permissions in
mysql.privilegesoperation (@gchazot) - Fix
mysql.loadoperation with spaces in filenames (@gchazot) - Fix fact
apk.ApkPackagesfor packages with numbers in the name (@dchauviere) - Fix fact
openrc.OpenrcStatusfor services with start times (@dchauviere) - Fix
files.putfor files containing spaces in local connector (@uggedal) - Fix performance of fact phase when calling functions/operations directly in CLI
v2.5.3
v2.5.2
- Fix/make safer check for sysvinit in
server.serviceoperation - Fix parsing of sticky/setgid/setuid permission bits in
files.*facts - Respect
TMPDIRwhen 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.portoperations (@morrison12) - Add
selinux.SEBoolean,selinux.FileContextMapping,selinux.SEPorts,selinux.SEPortfacts (@morrison12) - Add
snap.packageoperation &snap.SnapPackage,snap.SnapPackagesfacts (@pabloxio) - Add beta
files.blockoperation implementation (@morrison12)
Fixed:
- Include all systemd units in
systemd.SystemdStatusfact (@mariusmuja) - Handle installed RPM packages in
rpm.RpmPackagefact (@mariusmuja) - Fix host loop cycle errors with new
host.loopmethod - Always use ISO format date in
server.Datefact, 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-latestGitHub runner (@morrison12) - Fix documentation URL (@blaisep)
v2.4
Delayed getting this out, lots of little improvements.
Added:
- Add
server.user_authorized_keysoperation - Add global
_continue_on_errorargument - Add
dir_modeargument tofiles.syncoperation (@filips123) - Copy local permissions when
mode=Trueinfiles.putoperation - Add
headersandinsecurearguments tofiles.downloadoperation
Fixed:
- Get facts with host & state context (@jaysoffian)
- Fix short facts with arguments (@jaysoffian)
- Fix hang on launch of container in
lxd.containeroperation (@zachwaite) - Run operations with host context
- Fix idempotency with uploads to a directory in
files.putoperation
Other changes:
- Fix multiple doc typos (@timgates42)
- Fix variable typo (@bouke-sf)
- Fix CLI shell autocomplete doc (@jaysoffian)
- Implement idempotency in
git.bare_repooperation - Add typing to fact classes
- Start testing files operations with
pathlibobjects
v2.3
Relatively small quick release with two additions and a bunch of fixes.
Added:
- Add
create_homeargument toserver.useroperation - 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=Trueinfiles.putoperation - 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.useroperation (@yunzheng) - Fix matching
replaceas a whole line infiles.lineoperation - Fix bug in
mysql.privilegesinvalid argument requestingMysqlUserGrantsfact
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.DebArchfact - Add
ssh_paramiko_connect_kwargshost data used in the@sshconnector
Bugfixes:
- Fix: Remove state/host arguments from apt.dist_upgrade operation (@pabloxio)
- Fix
files.puthashing local file that doesn't exist whenassume_exists=True - Fix parsing of link targets in RHEL 6 systems
- Prefer
zypperoveraptwhen both present inserver.packagesoperation
Internal changes:
- Fix license link (@Lab-Brat)
- Run
blackandisortacross the codebase, now part of CI