Skip to content
This repository has been archived by the owner on Jun 2, 2022. It is now read-only.

Releases: puppetlabs-toy-chest/wash

v0.6.0

16 Jul 16:57
49221ca
Compare
Choose a tag to compare

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 a meta primary expression, such as find \( -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

v0.5.0

28 Jun 21:13
4433e62
Compare
Choose a tag to compare

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 the plugins key. (#288)
  • AWS EC2 and Docker container instances now expose the full filesystem rather than just /var/log under the fs folder. (#290)
  • wash history <id> now formats its output instead of displaying raw logfmt. (#330)
  • wash find -action <method> now uses plugin schemas to optimize its search, so it should be much faster for certain searches like wash 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 the KeyName 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 the wash shell. (#329)

Operations

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

04 Jun 09:54
24a0e8b
Compare
Choose a tag to compare

New + Improved

  • The wash command now accepts a shell script that you can invoke as wash <script>. It also supports a -c (--command) option for running a single shell command in Wash. See wash --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 plain tail calls.
  • Wash no longer panics when the activity journal has too many open files. (#307)

Operations

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 and Prompt methods. IsInteractive can be used to check if Wash is running under an interactive session, while Prompt 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

24 May 18:47
a253ec7
Compare
Choose a tag to compare

Fixes

  • Fix exec on Kubernetes pods. (#293)

v0.3.0

23 May 22:50
c78ac3d
Compare
Choose a tag to compare

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 as wash server.
  • Added a -fullmeta option to wash find to request full metadata from resources (which may involve extra API requests per resource). (#275)
  • Added a --attribute flag to wash meta to show just meta attribute available when enumerating resources. (#281)
  • Added a -daystart option to wash find to make time queries compare to the start of today. This is analogous to the 'daystart' option in GNU find. A query can use find <path> -daystart -m .time -{1d}, which translates to "within a day from today" => "today". (#277)

Fixes

  • Introducing wash history -f broke wash tail -f. That has been fixed. (#272)
  • Lowered the wash command's default log level to warn to silence verbose startup/shutdown logging.

Operations

v0.2.0

17 May 16:30
Compare
Choose a tag to compare

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 the meta primary, meaning you can do things like wash 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 defaults maxdepth to 1, as the structure of metadata is likely to differ at different depths. (#192)
  • wash find now includes detailed help. Try wash help find and wash find -h syntax. (#133)
  • wash history now has a follow 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

Initial release

08 May 17:17
026a44e
Compare
Choose a tag to compare

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.