GitXplorerGitXplorer
v

docker-events

public
14 stars
4 forks
2 issues

Commits

List of commits on branch master.
Verified
4a83cc6dc9d599f999b62fe16bddd882ea731008

Deprecated the project.

vvdemeester committed 8 years ago
Verified
be74d4929ec1ad118df54349fda4b0cba60f849b

Use client.SystemAPIClient instead of APIClient

vvdemeester committed 8 years ago
Verified
20e6d2db238723e68197a9e3c6c34c99a9893a9c

Update NoClient with latest engine-api

vvdemeester committed 8 years ago
Verified
b308d2e8d639d928c882913bcb4f85b3a84c7a07

Pass context to engine-api…

vvdemeester committed 8 years ago
Verified
ce5347b72aafad4e3bebd966f15e4183839d5172

Add a pre-commit configuration

vvdemeester committed 8 years ago
Verified
0ecf022882ff32fb8e0e0dbcb6032934f3be95cc

Update README to be clearer about context

vvdemeester committed 8 years ago

README

The README file for this repository.

docker-events

GoDoc Build Status Go Report Card License

With moving event stream processing to engine api merged in docker/docker, this project is obsolete and won't work with the latest docker/docker/client api.

A really small library with the intent to ease the use of Events method of engine-api.

Usage

It should be pretty straighforward to use :

import "events"

// […]

cli, err := client.NewEnvClient()
if err != nil {
    // Do something..
}

cxt, cancel := context.WithCancel(context.Background())
// Call cancel() to get out of the monitor

errChan := events.Monitor(ctx, cli, types.EventsOptions{}, func(event eventtypes.Message) {
    fmt.Printf("%v\n", event)
})

if err := <-errChan; err != nil {
    // Do something
}

It's also possible to do a little more advanced stuff using EventHandler :

import "events"

// […]

cli, err := client.NewEnvClient()
if err != nil {
    // Do something..
}

// Setup the event handler
eventHandler := events.NewHandler(events.ByAction)
eventHandler.Handle("create", func(m eventtypes.Message) {
    // Do something in case of create message
})

stoppedOrDead := func(m eventtypes.Message) {
    // Do something in case of stop or die message as it might be the
    // same way to react.
}

eventHandler.Handle("die", stoppedOrDead)
eventHandler.Handle("stop", stoppedOrDead)

// The other type of message will be discard.

// Filter the events we wams so receive
filters := filters.NewArgs()
filters.Add("type", "container")
options := types.EventsOptions{
    Filters: filters,
}

cxt, cancel := context.WithCancel(context.Background())
// Call cancel() to get out of the monitor

errChan := events.MonitorWithHandler(ctx, cli, options, eventHandler)

if err := <-errChan; err != nil {
    // Do something
}