mirror of
https://github.com/crazy-max/diun.git
synced 2025-12-25 14:59:33 +01:00
Add Docker engines provider
This commit is contained in:
@@ -11,9 +11,13 @@ type Client struct {
|
||||
Api *client.Client
|
||||
}
|
||||
|
||||
// NewEnvClient initializes a new Docker API client based on environment variables
|
||||
func NewEnvClient() (*Client, error) {
|
||||
d, err := client.NewClientWithOpts(client.FromEnv, client.WithVersion("1.12"))
|
||||
// NewClient initializes a new Docker API client with default values
|
||||
func NewClient(endpoint string, apiVersion string, caFile string, certFile string, keyFile string) (*Client, error) {
|
||||
d, err := client.NewClientWithOpts(
|
||||
client.WithHost(endpoint),
|
||||
client.WithVersion(apiVersion),
|
||||
client.WithTLSClientConfig(caFile, certFile, keyFile),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
30
pkg/docker/container.go
Normal file
30
pkg/docker/container.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sort"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
)
|
||||
|
||||
// ContainerOptions holds docker container object options
|
||||
type ContainerOptions struct {
|
||||
IncludeStopped bool
|
||||
}
|
||||
|
||||
// ContainerList return container list.
|
||||
func (c *Client) ContainerList(filterArgs ...filters.KeyValuePair) ([]types.Container, error) {
|
||||
containers, err := c.Api.ContainerList(context.Background(), types.ContainerListOptions{
|
||||
Filters: filters.NewArgs(filterArgs...),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sort.Slice(containers, func(i, j int) bool {
|
||||
return containers[i].Image < containers[j].Image
|
||||
})
|
||||
|
||||
return containers, nil
|
||||
}
|
||||
Reference in New Issue
Block a user