From 79f6c5cfad94af6d7d28c72bdfd91229d145287e Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 18 Aug 2021 20:25:59 +0200 Subject: [PATCH] Add dumpers --- dump.go | 20 ++++++++++++++++++++ dump_mysql.go | 17 +++++++++++++++++ dump_postgres.go | 17 +++++++++++++++++ store.go | 14 +++++++++----- 4 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 dump.go create mode 100644 dump_mysql.go create mode 100644 dump_postgres.go diff --git a/dump.go b/dump.go new file mode 100644 index 0000000..eaf464b --- /dev/null +++ b/dump.go @@ -0,0 +1,20 @@ +package main + +import "github.com/docker/docker/api/types" + +type Dumper interface { + Dump() error +} + +func NewDumperFromContainer(container *types.ContainerJSON) Dumper { + switch container.Config.Image { + case "mysql": + fallthrough + case "mariadb": + return NewMysqlDumper(container) + case "postgres": + return NewPostgresDumper(container) + } + + return nil +} diff --git a/dump_mysql.go b/dump_mysql.go new file mode 100644 index 0000000..9daa4a2 --- /dev/null +++ b/dump_mysql.go @@ -0,0 +1,17 @@ +package main + +import "github.com/docker/docker/api/types" + +type MysqlDumper struct { + Container *types.ContainerJSON +} + +func NewMysqlDumper(container *types.ContainerJSON) *MysqlDumper { + return &MysqlDumper{ + Container: container, + } +} + +func (m *MysqlDumper) Dump() error { + panic("implement me") +} diff --git a/dump_postgres.go b/dump_postgres.go new file mode 100644 index 0000000..e530355 --- /dev/null +++ b/dump_postgres.go @@ -0,0 +1,17 @@ +package main + +import "github.com/docker/docker/api/types" + +type PostgresDumper struct { + Container *types.ContainerJSON +} + +func NewPostgresDumper(container *types.ContainerJSON) *PostgresDumper { + return &PostgresDumper{ + Container: container, + } +} + +func (p *PostgresDumper) Dump() error { + panic("implement me") +} diff --git a/store.go b/store.go index 9f60db7..d0b83c2 100644 --- a/store.go +++ b/store.go @@ -2,7 +2,6 @@ package main import ( "context" - "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" "log" @@ -10,12 +9,12 @@ import ( ) var ( - store map[string]*types.ContainerJSON + store map[string]Dumper lock sync.Mutex ) func init() { - store = make(map[string]*types.ContainerJSON) + store = make(map[string]Dumper) } func storeContainers(c *client.Client, containers []types.Container) { @@ -32,8 +31,13 @@ func storeContainers(c *client.Client, containers []types.Container) { log.Fatalf("Could not get Container info: %s", err) } - store[container.ID] = &info + dumper := NewDumperFromContainer(&info) + if dumper == nil { + continue + } - fmt.Printf("Container: %s, %s image: %s, labels: %v, ip: %v, env: %v\n", info.Name, info.State.Status, info.Image, info.Config.Labels, info.NetworkSettings.Networks, info.Config.Env) + log.Printf("Found container %s\n", container.Names) + + store[container.ID] = dumper } }