Skip to content

Conversation

@danschmidt5189
Copy link

@danschmidt5189 danschmidt5189 commented Apr 23, 2025

Summary

Resolves #593 by:

  • Refactoring Docker::Event to provide access to its source (JSON) data.
  • Adding scope to the Docker::Event class.

Discussion

The refactoring simplifies the Docker::Event interface and brings it closer to that of the other Docker:: classes. Users can access the normalized event data via event.info and event.actor.info. Since the Docker API uses a mix of camelCase and PascalCase strings as response keys, the info keys are normalized to downcased symbols and helper methods have been added.

For example:

# Actor
event.actor # instance of Docker::Event::Actor
event.info[:actor]

# Action
event.action # string value
event.info[:action]

# timeNano
event.time_nano
event.timeNano # helper method named the same as the spec'd attribute
event.info[:timenano] # note downcasing but not snakecase conversion

# scope (added in this PR)
event.scope
event.info[:scope]

I would discourage users from using the alias methods (event.Actor, event.Type, etc.), but I kept them in for backwards-compatibility.

Since Docker Engine Events are read-only, I modified the Event class to remove mutability where it was possible (specifically, event.actor=).

Finally, as can be seen in the above example, I added the scope attribute along with a test.

Check Failures

As of run 14625174071, it looks like the pipeline itself is broken. The relevant event_spec tests pass, but all podman tests fail and some docker tests fail with an unrelated error ("private method `resource' called for an instance of Docker::Connection").

@danschmidt5189 danschmidt5189 force-pushed the feature/ISSUE-593/event_scope branch 2 times, most recently from 072bbb6 to 4222c9e Compare April 23, 2025 18:15
@danschmidt5189 danschmidt5189 changed the title Draft: ISSUE-593: Conform Docker::Event to Engine spec ISSUE-593: Conform Docker::Event to Engine spec Apr 23, 2025
@danschmidt5189 danschmidt5189 changed the title ISSUE-593: Conform Docker::Event to Engine spec Closes #593: Add "scope" support to Docker::Event Apr 23, 2025
@danschmidt5189 danschmidt5189 changed the title Closes #593: Add "scope" support to Docker::Event Add "scope" support to Docker::Event (resolves #593) Apr 23, 2025
@danschmidt5189 danschmidt5189 changed the title Add "scope" support to Docker::Event (resolves #593) Add "scope" support to Docker::Event (#593) Apr 23, 2025
Daniel Schmidt and others added 5 commits April 24, 2025 16:05
- Pins rspec-its to 1.x
- Removes unnecessary setup steps for Ubuntu 20.10+ from ./scripts/install_podman.sh
…ec_its

Buildfix: pin rspec-its; simplify podman install (resolves upserve#597)
- Corrects a bug in `Docker::Connection.compile_request_params` that incorrectly stripped out `read_timeout` when it was nil.
- Sets `Docker::Event.stream` to skip timeouts by default.
- Sets `Docker::Event.stream` to avoid automatically retrying timeout-related events by default.
- Adds timeout-related event streaming tests. A particularly slow (60s+) test can be enabled by setting `RUN_SLOW_TESTS=1` in the testing environment.
- Refactors Docker::Event to provide access to its source (JSON) data.
- Adds `scope` to the Docker::Event class.
@danschmidt5189 danschmidt5189 force-pushed the feature/ISSUE-593/event_scope branch from 4222c9e to e56ebfa Compare April 25, 2025 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docker::Event is missing the "Scope" attribute

1 participant