Skip to content

Commit

Permalink
refactor: remove etcd from the greptimedb (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
daviderli614 committed Dec 7, 2022
1 parent dfd8f67 commit 590c54a
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 15 deletions.
24 changes: 18 additions & 6 deletions cmd/app/cluster/delete/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package delete
import (
"context"
"fmt"
"strings"

"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/api/errors"
Expand Down Expand Up @@ -51,28 +52,39 @@ func NewDeleteClusterCommand(l log.Logger) *cobra.Command {
}

ctx := context.TODO()
_, err = m.GetCluster(ctx, &manager.GetClusterOptions{
cluster, err := m.GetCluster(ctx, &manager.GetClusterOptions{
ClusterName: clusterName,
Namespace: options.Namespace,
})
if err != nil && errors.IsNotFound(err) {
if errors.IsNotFound(err) {
l.Infof("Cluster '%s' in '%s' not found\n", clusterName, namespace)
return nil
} else if err != nil {
} else if err != nil && !errors.IsNotFound(err) {
return err
}

etcdNamespace := strings.Split(strings.Split(cluster.Spec.Meta.EtcdEndpoints[0], ".")[1], ":")[0]
if err := m.DeleteCluster(ctx, &manager.DeleteClusterOption{
ClusterName: clusterName,
Namespace: options.Namespace,
TearDownEtcd: options.TearDownEtcd,
ClusterName: clusterName,
Namespace: options.Namespace,
}); err != nil {
return err
}

// TODO(zyy17): Should we wait until the cluster is actually deleted?
l.Infof("Cluster '%s' in namespace '%s' is deleted!\n", clusterName, namespace)

if options.TearDownEtcd {
l.Infof("⚠️ Deleting etcd cluster in namespace '%s'...\n", log.Bold(etcdNamespace))
if err := m.DeleteEtcdCluster(ctx, &manager.DeleteEtcdClusterOption{
Name: clusterName + "-etcd",
Namespace: etcdNamespace,
}); err != nil {
return err
}
l.Infof("Etcd cluster in namespace '%s' is deleted!\n", etcdNamespace)
}

return nil
},
}
Expand Down
5 changes: 3 additions & 2 deletions pkg/kube/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
corev1 "k8s.io/api/core/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
Expand Down Expand Up @@ -208,11 +209,11 @@ func (c *Client) UpdateCluster(ctx context.Context, namespace string, cluster *g
}

func (c *Client) DeleteEtcdCluster(ctx context.Context, name, namespace string) error {
if err := c.kubeClient.CoreV1().Services(namespace).Delete(ctx, fmt.Sprintf("%s-%s", name, "etcd-svc"), metav1.DeleteOptions{}); err != nil {
if err := c.kubeClient.CoreV1().Services(namespace).Delete(ctx, name+"-svc", metav1.DeleteOptions{}); err != nil && !errors.IsNotFound(err) {
return err
}

if err := c.kubeClient.AppsV1().StatefulSets(namespace).Delete(ctx, fmt.Sprintf("%s-%s", name, "etcd"), metav1.DeleteOptions{}); err != nil {
if err := c.kubeClient.AppsV1().StatefulSets(namespace).Delete(ctx, name, metav1.DeleteOptions{}); err != nil && !errors.IsNotFound(err) {
return err
}

Expand Down
21 changes: 14 additions & 7 deletions pkg/manager/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ type Manager interface {
UpdateCluster(ctx context.Context, options *UpdateClusterOptions) error
DeleteCluster(ctx context.Context, options *DeleteClusterOption) error
CreateOperator(ctx context.Context, options *CreateOperatorOptions) error
DeleteEtcdCluster(ctx context.Context, options *DeleteEtcdClusterOption) error
CreateEtcdCluster(ctx context.Context, options *CreateEtcdOptions) error
}

Expand Down Expand Up @@ -87,9 +88,13 @@ type UpdateClusterOptions struct {
}

type DeleteClusterOption struct {
ClusterName string
Namespace string
TearDownEtcd bool
ClusterName string
Namespace string
}

type DeleteEtcdClusterOption struct {
Name string
Namespace string
}

type CreateOperatorOptions struct {
Expand Down Expand Up @@ -190,10 +195,12 @@ func (m *manager) DeleteCluster(ctx context.Context, options *DeleteClusterOptio
return err
}

if options.TearDownEtcd {
if err := m.client.DeleteEtcdCluster(ctx, options.ClusterName, options.Namespace); err != nil {
return err
}
return nil
}

func (m *manager) DeleteEtcdCluster(ctx context.Context, options *DeleteEtcdClusterOption) error {
if err := m.client.DeleteEtcdCluster(ctx, options.Name, options.Namespace); err != nil {
return err
}

return nil
Expand Down

0 comments on commit 590c54a

Please sign in to comment.