diff options
Diffstat (limited to 'src/k8splugin/internal/db')
-rw-r--r-- | src/k8splugin/internal/db/etcd.go | 15 | ||||
-rw-r--r-- | src/k8splugin/internal/db/etcd_testing.go | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/k8splugin/internal/db/etcd.go b/src/k8splugin/internal/db/etcd.go index 5ce8135a..a3a09352 100644 --- a/src/k8splugin/internal/db/etcd.go +++ b/src/k8splugin/internal/db/etcd.go @@ -35,6 +35,7 @@ type EtcdConfig struct { // EtcdStore Interface needed for mocking type EtcdStore interface { + HealthCheck() error Get(key string) ([]byte, error) GetKeys(key string) ([]string, error) GetValues(key string) ([][]byte, error) @@ -96,6 +97,20 @@ func newClient(store *clientv3.Client, c EtcdConfig) (EtcdClient, error) { }, nil } +// HealthCheck verifies if the database is up and running +func (e EtcdClient) HealthCheck() error { + + if e.cli == nil { + return pkgerrors.Errorf("Etcd Client not initialized") + } + _, err := e.cli.Get(context.Background(), "HealthCheckKey") + if err != nil { + return pkgerrors.Errorf("Error getting etcd entry: %s", err.Error()) + } + + return nil +} + // Put values in Etcd DB func (e EtcdClient) Put(key, value string) error { diff --git a/src/k8splugin/internal/db/etcd_testing.go b/src/k8splugin/internal/db/etcd_testing.go index 2f62d365..4022d30e 100644 --- a/src/k8splugin/internal/db/etcd_testing.go +++ b/src/k8splugin/internal/db/etcd_testing.go @@ -24,6 +24,10 @@ type MockEtcdClient struct { Err error } +func (c *MockEtcdClient) HealthCheck() error { + return c.Err +} + func (c *MockEtcdClient) Put(key, value string) error { if c.Items == nil { c.Items = make(map[string]string) |