From 81042a7e3fd5491ce52bee03eeaa838930ab7db7 Mon Sep 17 00:00:00 2001 From: Adrian Liechti Date: Sun, 2 Oct 2022 14:00:21 +0200 Subject: [PATCH] add cockroachdb (#5) Co-authored-by: Adrian Liechti --- main.go | 2 + pkg/catalog/cockroachdb/cockroachdb.go | 87 ++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 pkg/catalog/cockroachdb/cockroachdb.go diff --git a/main.go b/main.go index 2f7f57a..80dd5cb 100644 --- a/main.go +++ b/main.go @@ -18,6 +18,7 @@ import ( "github.com/adrianliechti/devkit/pkg/catalog/activemq" "github.com/adrianliechti/devkit/pkg/catalog/azurite" "github.com/adrianliechti/devkit/pkg/catalog/cassandra" + "github.com/adrianliechti/devkit/pkg/catalog/cockroachdb" "github.com/adrianliechti/devkit/pkg/catalog/db2" "github.com/adrianliechti/devkit/pkg/catalog/directus" "github.com/adrianliechti/devkit/pkg/catalog/elasticsearch" @@ -79,6 +80,7 @@ func initApp() cli.App { catalog.Command(&activemq.Manager{}), catalog.Command(&azurite.Manager{}), catalog.Command(&cassandra.Manager{}), + catalog.Command(&cockroachdb.Manager{}), catalog.Command(&db2.Manager{}), catalog.Command(&directus.Manager{}), catalog.Command(&elasticsearch.Manager{}), diff --git a/pkg/catalog/cockroachdb/cockroachdb.go b/pkg/catalog/cockroachdb/cockroachdb.go new file mode 100644 index 0000000..643bd93 --- /dev/null +++ b/pkg/catalog/cockroachdb/cockroachdb.go @@ -0,0 +1,87 @@ +package cockroachdb + +import ( + "github.com/adrianliechti/devkit/pkg/catalog" + "github.com/adrianliechti/devkit/pkg/engine" +) + +var ( + _ catalog.Manager = &Manager{} + _ catalog.Decorator = &Manager{} + _ catalog.ShellProvider = &Manager{} + _ catalog.ConsoleProvider = &Manager{} +) + +type Manager struct { +} + +func (m *Manager) Name() string { + return "cockroachdb" +} + +func (m *Manager) Category() catalog.Category { + return catalog.DatabaseCategory +} + +func (m *Manager) DisplayName() string { + return "CockroachDB" +} + +func (m *Manager) Description() string { + return "A distributed SQL datatabase designed for speed, scale, and survival." +} + +const ( + DefaultShell = "/bin/bash" +) + +func (m *Manager) New() (engine.Container, error) { + image := "cockroachdb/cockroach:v22.1.8" + + return engine.Container{ + Image: image, + + Env: map[string]string{}, + + Ports: []*engine.ContainerPort{ + { + Port: 26257, + Proto: engine.ProtocolTCP, + }, + }, + + Args: []string{ + "start-single-node", + "--insecure", + }, + + Mounts: []*engine.ContainerMount{ + { + Path: "/cockroach/cockroach-data", + }, + }, + }, nil +} + +func (m *Manager) Info(instance engine.Container) (map[string]string, error) { + return map[string]string{}, nil +} + +func (m *Manager) Shell(instance engine.Container) (string, error) { + return DefaultShell, nil +} + +func (m *Manager) Client(instance engine.Container) (string, []string, error) { + return "", []string{ + DefaultShell, + "-c", + "./cockroach sql --insecure", + }, nil +} + +func (m *Manager) ConsolePort(instance engine.Container) (*engine.ContainerPort, error) { + return &engine.ContainerPort{ + Port: 8080, + Proto: engine.ProtocolTCP, + }, nil +}