This repository has been archived by the owner on Jun 2, 2022. It is now read-only.
Releases: puppetlabs-toy-chest/wash
Releases · puppetlabs-toy-chest/wash
v0.6.0
New + Improved
- Optimized
wash find -meta
using metadata schemas. (#362) - Added
wash validate <plugin>
for testing plugins. See https://puppetlabs.github.io/wash/docs/#wash-validate for details. (#350) - Use a default size of 4KiB for files that are not given a size. This encourages standard tools like
cat
to attempt to read the file, triggering computation of the actual size when the content is retrieved. Log files for Docker and Kubernetes containers have been updated so they no longer retrieve logs when listed to improve performance. (#355)
Fixes
- Fix
find
's and/or predicates to satisfy De Morgan's law for mismatched types. De Morgan's law states that an expression like "! ( 5 -o 6 )" is equivalent to "! 5 -a ! 6". If we pass a string value into this predicate, then it should return false since "! 5" and "! 6" returns false for mis-typed values. (#359) - Fix
find
errors where parentheses enclose ameta
primary expression, such asfind \( -meta '.tags[?]' .key -exists -a -meta '.foo' -exists \)
. (#361) - The response format of
/fs/schema
has been changed to be more idiomatic with graph serialization. (#363) - Read and stream operations on files in Docker volumes now correctly stop and remove containers used to fulfill these operations. Stream also actually works. (#370)
- Fix file mode information for files on a volume (such as Docker or Kubernetes volume contents, or items in an
fs
directory). Some attributes - such as character device - were previously ignored. The interactive nature of Wash will be forwarded when interpreting attributes as well, as something like/dev/stdin
will have different attributes based on the interaction mode. Also model symlinks as their resolved directories so they're usable (filed #378 for improvements to symlinks). (#376)
Operations
- The Wash website has a short-link at https://pup.pt/wash.
- The Wash website and project README have been restructured. The website acts as an introduction to Wash, while the README focuses on how to work on the project. (#381)
Plugins
- External plugins can now document their schema by implementing the
schema
method. A schema provides built-in documentation for your plugin that Wash can also use to speedupfind
operations. See https://puppetlabs.github.io/wash/docs/#entry-schemas and https://puppetlabs.github.io/wash/docs/external_plugins/#schema. (#291)
v0.5.0
New + Improved
wash stree
can be used to display plugin schemas to get a sense of how they're organized. (#325)- You can now select which core plugins are enabled by listing them in
wash.yaml
under theplugins
key. (#288) - AWS EC2 and Docker container instances now expose the full filesystem rather than just
/var/log
under thefs
folder. (#290) wash history <id>
now formats its output instead of displaying rawlogfmt
. (#330)wash find -action <method>
now uses plugin schemas to optimize its search, so it should be much faster for certain searches likewash find -action exec
. (#333)- When SSHing to an EC2 instance, Wash will attempt to get the configured user name from VM console output if no user name is explicitly provided or configured via SSH config. Thanks @eboutili! (#348)
Fixes
- The AWS plugin can be configured to limit which profiles are setup. This can be used to avoid a stream of MFA token requests for profiles you don't plan to use. (#317)
- Attribute and single file lookup requests are now excluded from activity journals in
wash history
. This excludes most background and side-effect processes that would previously generate history entries. (#323) - The
wash list
command now sorts displayed entries. (#330) - The user used when SSHing to an EC2 instance can now be overridden in your SSH config. Additionally Wash will try to find a private key at
~/.ssh/<keyname>.pem
based on theKeyName
EC2 metadata; it will continue to use SSH Agent as a fallback. Thanks @eboutili! (#322) - The
help
documentation in Wash has been updated to be accurate when running in thewash
shell. (#329)
Operations
- The website was updated with a new logo and color scheme. (#339)
- The core plugin documentation at https://puppetlabs.github.io/wash/docs/core_plugins has been updated to clarify how core plugins are built and structured, and describes the utilities they use. (#340)
- The plugin documentation at https://puppetlabs.github.io/wash/docs#plugin-debugging has been added to provide tips on debugging plugins while you're developing them. (#344)
- Pull request CI will now fail if the website has been updated but not rebuilt using Hugo. (#346)
Plugins
- [BREAKING] External plugin names are now derived from the script file name (with extension removed) to lookup configuration (#289). Wash will warn and not load the plugin if
init
returns a name that differs from this. - Added support for plugin-specific configuration. Plugins receive a hash of all data added to
wash.yaml
under a top-level key matching the plugin's name. This config is passed as a new argument when calling the Init method for core and external plugins. See https://puppetlabs.github.io/wash/docs/external_plugins/#init for details. (#289) - Core plugins must now define a schema describing their hierarchy by defining the
ChildSchemas
function. (#291, ongoing) - External plugins can now define multiple levels of hierarchy by including the results for a method along with the method in their response to
list
. See https://puppetlabs.github.io/wash/docs/external_plugins/#list for details. (#345)
v0.4.0
New + Improved
- The
wash
command now accepts a shell script that you can invoke aswash <script>
. It also supports a-c
(--command
) option for running a single shell command in Wash. Seewash --help
for more details. wash find
now supports multiple paths (#280)
Fixes
wash
can now run multiple shells simultaneously by starting up a server for each shell. Note that this is a temporary fix. See #302 for more details.wash find
now exits with 1 if it encounters any errors during the directory tree traversal. This matches the BSD/GNU find commands.wash tail
now defers to/usr/bin/tail
for plaintail
calls.- Wash no longer panics when the activity journal has too many open files. (#307)
Operations
- The plugin documentation at https://puppetlabs.github.io/wash/docs/ has been updated with a more detailed overview of Wash’s plugin architecture.
- The external plugin documentation at https://puppetlabs.github.io/wash/docs/external_plugins/ has been updated with the recent external plugin changes. (#283)
Plugins
- SlashReplacementChar has been changed to the less verbose SlashReplacer.
- Open has been changed to Read for external plugin cache TTLs.
- Some of the Wash subcommand descriptions (clear, ps, tail) have been shortened to better-fit an 80 character terminal.
- The plugin interface now supports the
IsInteractive
andPrompt
methods.IsInteractive
can be used to check if Wash is running under an interactive session, whilePrompt
should be used whenever the plugin wants to prompt the user for input (useful if the input’s an MFA token). - datastore.MemCache now supports a “Limit” option that can be used to configure the maximum number of objects that can be cached at once
v0.3.1
v0.3.0
New + Improved
- Wash now reads a config file at
~/.puppetlabs/wash/wash.yaml
that can be used to configure the Wash daemon. See Config docs. (#132) - Reworked the external plugin interface to fix some bugs and make it simpler to write. Configuring external plugins is rolled into the new config file.
- The
wash
command now supports all the same configuration options aswash server
. - Added a
-fullmeta
option towash find
to request full metadata from resources (which may involve extra API requests per resource). (#275) - Added a
--attribute
flag towash meta
to show just meta attribute available when enumerating resources. (#281) - Added a
-daystart
option towash find
to make time queries compare to the start of today. This is analogous to the 'daystart' option in GNU find. A query can usefind <path> -daystart -m .time -{1d}
, which translates to "within a day from today" => "today". (#277)
Fixes
- Introducing
wash history -f
brokewash tail -f
. That has been fixed. (#272) - Lowered the
wash
command's default log level towarn
to silence verbose startup/shutdown logging.
Operations
- https://puppetlabs.wash.io/docs now documents Wash commands. (#266)
v0.2.0
New + Improved
- Run
wash
to enter a shell that manages the daemon lifecycle for you. (#13) - Simplified plugin interfaces. The Exec and Metadata functions have received a facelift to make them simpler to write. (#131)
wash find
now supports predicate expressions on themeta
primary, meaning you can do things likewash find -meta .obj[] .key1 5 -a .key2 value
to match an entry in the.obj
array only if it's value for key1 is 5 and value for key2 is 'value'. Using-meta
also defaultsmaxdepth
to 1, as the structure of metadata is likely to differ at different depths. (#192)wash find
now includes detailed help. Trywash help find
andwash find -h syntax
. (#133)wash history
now has afollow
option for watching history in real-time.
Fixes
- External plugins will now receive a Ctrl-C signal during Exec when the originating request is cancelled. This helps prevent orphaned processes on remote systems, such as when using
wash tail -f
. (#231) - The AWS Assume Role MFA token prompt now includes the profile it's prompting for.
Operations
- Wash has a landing page with documentation at https://puppetlabs.github.io/wash! (#242)
- Wash can be installed and updated with Homebrew via
brew install puppetlabs/puppet/wash
. (#241)
Initial release
This is the first release of Wash.
It includes support for AWS EC2 instances and S3 buckets, Docker containers and volumes, and Kubernetes pods and persistent volume claims.
Included subcommands are ls/list, meta, exec, find, tail, ps, history, clear.