Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Cassandra scale in action #289

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 38 additions & 5 deletions internal/test/util/generate/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@ import (
)

type PilotConfig struct {
Name, Namespace string
Cluster, NodePool string
Documents *int64
Version string
Name, Namespace string
Cluster, NodePool string
Documents *int64
Version string
Decommissioned bool
DecommissionedStatus bool
}

func Pilot(c PilotConfig) *v1alpha1.Pilot {
func EsPilot(c PilotConfig) *v1alpha1.Pilot {
if c.Namespace == "" {
c.Namespace = "default"
}
Expand All @@ -43,6 +45,37 @@ func Pilot(c PilotConfig) *v1alpha1.Pilot {
}
}

func CassPilot(c PilotConfig) *v1alpha1.Pilot {
if c.Namespace == "" {
c.Namespace = "default"
}
labels := map[string]string{}
labels[v1alpha1.CassandraClusterNameLabel] = c.Cluster
labels[v1alpha1.CassandraNodePoolNameLabel] = c.NodePool
var v *version.Version
if c.Version != "" {
v = version.New(c.Version)
}
return &v1alpha1.Pilot{
ObjectMeta: metav1.ObjectMeta{
Name: c.Name,
Namespace: c.Namespace,
Labels: labels,
},
Spec: v1alpha1.PilotSpec{
Cassandra: &v1alpha1.CassandraPilotSpec{
Decommissioned: c.Decommissioned,
},
},
Status: v1alpha1.PilotStatus{
Cassandra: &v1alpha1.CassandraPilotStatus{
Version: v,
Decommissioned: c.DecommissionedStatus,
},
},
}
}

type ClusterConfig struct {
Name, Namespace string
NodePools []v1alpha1.ElasticsearchClusterNodePool
Expand Down
21 changes: 20 additions & 1 deletion pkg/apis/navigator/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,24 @@ type PilotList struct {
}

type PilotSpec struct {
Elasticsearch *ElasticsearchPilotSpec
Cassandra *CassandraPilotSpec
}

type PilotPhase string

const (
PilotPhasePreStart PilotPhase = "PreStart"
PilotPhasePostStart PilotPhase = "PostStart"
PilotPhasePreStop PilotPhase = "PreStop"
PilotPhasePostStop PilotPhase = "PostStop"
)

type ElasticsearchPilotSpec struct {
}

type CassandraPilotSpec struct {
Decommissioned bool
}

type PilotStatus struct {
Expand All @@ -196,7 +214,8 @@ type ElasticsearchPilotStatus struct {
}

type CassandraPilotStatus struct {
Version *version.Version
Version *version.Version
Decommissioned bool
}

// PilotCondition contains condition information for a Pilot.
Expand Down
29 changes: 29 additions & 0 deletions pkg/apis/navigator/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,32 @@ type PilotList struct {
}

type PilotSpec struct {
Elasticsearch *ElasticsearchPilotSpec `json:"elasticsearch"`
Cassandra *CassandraPilotSpec `json:"cassandra"`
}

type PilotPhase string

const (
// PreStart occurs before the Pilot's subprocess has been started.
PilotPhasePreStart PilotPhase = "PreStart"
// PostStart occurs immediately after the Pilot's subprocess has been
// started.
PilotPhasePostStart PilotPhase = "PostStart"
// PreStop occurs just before the Pilot's subprocess is sent a graceful
// termination signal. These hooks will block termination of the process.
PilotPhasePreStop PilotPhase = "PreStop"
// PostStop occurs after the Pilot's has stopped. These can be used to
// clean up, or whatever other action that may need to be performed.
PilotPhasePostStop PilotPhase = "PostStop"
)

type ElasticsearchPilotSpec struct {
}

type CassandraPilotSpec struct {
// Decommissioned should be set to true if we want to decommission this node
Decommissioned bool `json:"decommissioned"`
}

type PilotStatus struct {
Expand Down Expand Up @@ -363,6 +389,9 @@ type CassandraPilotStatus struct {
// This field may be nil if the version number is not currently known.
// +optional
Version *version.Version `json:"version,omitempty"`

// Decommissioned is true if we think we have successfully decommissioned this node
Decommissioned bool `json:"decommissioned"`
}

// PilotCondition contains condition information for a Pilot.
Expand Down
48 changes: 48 additions & 0 deletions pkg/apis/navigator/v1alpha1/zz_generated.conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ func RegisterConversions(scheme *runtime.Scheme) error {
Convert_navigator_CassandraClusterSpec_To_v1alpha1_CassandraClusterSpec,
Convert_v1alpha1_CassandraClusterStatus_To_navigator_CassandraClusterStatus,
Convert_navigator_CassandraClusterStatus_To_v1alpha1_CassandraClusterStatus,
Convert_v1alpha1_CassandraPilotSpec_To_navigator_CassandraPilotSpec,
Convert_navigator_CassandraPilotSpec_To_v1alpha1_CassandraPilotSpec,
Convert_v1alpha1_CassandraPilotStatus_To_navigator_CassandraPilotStatus,
Convert_navigator_CassandraPilotStatus_To_v1alpha1_CassandraPilotStatus,
Convert_v1alpha1_ElasticsearchCluster_To_navigator_ElasticsearchCluster,
Expand All @@ -64,6 +66,8 @@ func RegisterConversions(scheme *runtime.Scheme) error {
Convert_navigator_ElasticsearchClusterSpec_To_v1alpha1_ElasticsearchClusterSpec,
Convert_v1alpha1_ElasticsearchClusterStatus_To_navigator_ElasticsearchClusterStatus,
Convert_navigator_ElasticsearchClusterStatus_To_v1alpha1_ElasticsearchClusterStatus,
Convert_v1alpha1_ElasticsearchPilotSpec_To_navigator_ElasticsearchPilotSpec,
Convert_navigator_ElasticsearchPilotSpec_To_v1alpha1_ElasticsearchPilotSpec,
Convert_v1alpha1_ElasticsearchPilotStatus_To_navigator_ElasticsearchPilotStatus,
Convert_navigator_ElasticsearchPilotStatus_To_v1alpha1_ElasticsearchPilotStatus,
Convert_v1alpha1_ImageSpec_To_navigator_ImageSpec,
Expand Down Expand Up @@ -265,8 +269,29 @@ func Convert_navigator_CassandraClusterStatus_To_v1alpha1_CassandraClusterStatus
return autoConvert_navigator_CassandraClusterStatus_To_v1alpha1_CassandraClusterStatus(in, out, s)
}

func autoConvert_v1alpha1_CassandraPilotSpec_To_navigator_CassandraPilotSpec(in *CassandraPilotSpec, out *navigator.CassandraPilotSpec, s conversion.Scope) error {
out.Decommissioned = in.Decommissioned
return nil
}

// Convert_v1alpha1_CassandraPilotSpec_To_navigator_CassandraPilotSpec is an autogenerated conversion function.
func Convert_v1alpha1_CassandraPilotSpec_To_navigator_CassandraPilotSpec(in *CassandraPilotSpec, out *navigator.CassandraPilotSpec, s conversion.Scope) error {
return autoConvert_v1alpha1_CassandraPilotSpec_To_navigator_CassandraPilotSpec(in, out, s)
}

func autoConvert_navigator_CassandraPilotSpec_To_v1alpha1_CassandraPilotSpec(in *navigator.CassandraPilotSpec, out *CassandraPilotSpec, s conversion.Scope) error {
out.Decommissioned = in.Decommissioned
return nil
}

// Convert_navigator_CassandraPilotSpec_To_v1alpha1_CassandraPilotSpec is an autogenerated conversion function.
func Convert_navigator_CassandraPilotSpec_To_v1alpha1_CassandraPilotSpec(in *navigator.CassandraPilotSpec, out *CassandraPilotSpec, s conversion.Scope) error {
return autoConvert_navigator_CassandraPilotSpec_To_v1alpha1_CassandraPilotSpec(in, out, s)
}

func autoConvert_v1alpha1_CassandraPilotStatus_To_navigator_CassandraPilotStatus(in *CassandraPilotStatus, out *navigator.CassandraPilotStatus, s conversion.Scope) error {
out.Version = (*version.Version)(unsafe.Pointer(in.Version))
out.Decommissioned = in.Decommissioned
return nil
}

Expand All @@ -277,6 +302,7 @@ func Convert_v1alpha1_CassandraPilotStatus_To_navigator_CassandraPilotStatus(in

func autoConvert_navigator_CassandraPilotStatus_To_v1alpha1_CassandraPilotStatus(in *navigator.CassandraPilotStatus, out *CassandraPilotStatus, s conversion.Scope) error {
out.Version = (*version.Version)(unsafe.Pointer(in.Version))
out.Decommissioned = in.Decommissioned
return nil
}

Expand Down Expand Up @@ -467,6 +493,24 @@ func Convert_navigator_ElasticsearchClusterStatus_To_v1alpha1_ElasticsearchClust
return autoConvert_navigator_ElasticsearchClusterStatus_To_v1alpha1_ElasticsearchClusterStatus(in, out, s)
}

func autoConvert_v1alpha1_ElasticsearchPilotSpec_To_navigator_ElasticsearchPilotSpec(in *ElasticsearchPilotSpec, out *navigator.ElasticsearchPilotSpec, s conversion.Scope) error {
return nil
}

// Convert_v1alpha1_ElasticsearchPilotSpec_To_navigator_ElasticsearchPilotSpec is an autogenerated conversion function.
func Convert_v1alpha1_ElasticsearchPilotSpec_To_navigator_ElasticsearchPilotSpec(in *ElasticsearchPilotSpec, out *navigator.ElasticsearchPilotSpec, s conversion.Scope) error {
return autoConvert_v1alpha1_ElasticsearchPilotSpec_To_navigator_ElasticsearchPilotSpec(in, out, s)
}

func autoConvert_navigator_ElasticsearchPilotSpec_To_v1alpha1_ElasticsearchPilotSpec(in *navigator.ElasticsearchPilotSpec, out *ElasticsearchPilotSpec, s conversion.Scope) error {
return nil
}

// Convert_navigator_ElasticsearchPilotSpec_To_v1alpha1_ElasticsearchPilotSpec is an autogenerated conversion function.
func Convert_navigator_ElasticsearchPilotSpec_To_v1alpha1_ElasticsearchPilotSpec(in *navigator.ElasticsearchPilotSpec, out *ElasticsearchPilotSpec, s conversion.Scope) error {
return autoConvert_navigator_ElasticsearchPilotSpec_To_v1alpha1_ElasticsearchPilotSpec(in, out, s)
}

func autoConvert_v1alpha1_ElasticsearchPilotStatus_To_navigator_ElasticsearchPilotStatus(in *ElasticsearchPilotStatus, out *navigator.ElasticsearchPilotStatus, s conversion.Scope) error {
out.Documents = (*int64)(unsafe.Pointer(in.Documents))
out.Version = (*semver.Version)(unsafe.Pointer(in.Version))
Expand Down Expand Up @@ -668,6 +712,8 @@ func Convert_navigator_PilotList_To_v1alpha1_PilotList(in *navigator.PilotList,
}

func autoConvert_v1alpha1_PilotSpec_To_navigator_PilotSpec(in *PilotSpec, out *navigator.PilotSpec, s conversion.Scope) error {
out.Elasticsearch = (*navigator.ElasticsearchPilotSpec)(unsafe.Pointer(in.Elasticsearch))
out.Cassandra = (*navigator.CassandraPilotSpec)(unsafe.Pointer(in.Cassandra))
return nil
}

Expand All @@ -677,6 +723,8 @@ func Convert_v1alpha1_PilotSpec_To_navigator_PilotSpec(in *PilotSpec, out *navig
}

func autoConvert_navigator_PilotSpec_To_v1alpha1_PilotSpec(in *navigator.PilotSpec, out *PilotSpec, s conversion.Scope) error {
out.Elasticsearch = (*ElasticsearchPilotSpec)(unsafe.Pointer(in.Elasticsearch))
out.Cassandra = (*CassandraPilotSpec)(unsafe.Pointer(in.Cassandra))
return nil
}

Expand Down
52 changes: 51 additions & 1 deletion pkg/apis/navigator/v1alpha1/zz_generated.deepcopy.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,22 @@ func (in *CassandraClusterStatus) DeepCopy() *CassandraClusterStatus {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CassandraPilotSpec) DeepCopyInto(out *CassandraPilotSpec) {
*out = *in
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CassandraPilotSpec.
func (in *CassandraPilotSpec) DeepCopy() *CassandraPilotSpec {
if in == nil {
return nil
}
out := new(CassandraPilotSpec)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CassandraPilotStatus) DeepCopyInto(out *CassandraPilotStatus) {
*out = *in
Expand Down Expand Up @@ -453,6 +469,22 @@ func (in *ElasticsearchClusterStatus) DeepCopy() *ElasticsearchClusterStatus {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ElasticsearchPilotSpec) DeepCopyInto(out *ElasticsearchPilotSpec) {
*out = *in
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElasticsearchPilotSpec.
func (in *ElasticsearchPilotSpec) DeepCopy() *ElasticsearchPilotSpec {
if in == nil {
return nil
}
out := new(ElasticsearchPilotSpec)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ElasticsearchPilotStatus) DeepCopyInto(out *ElasticsearchPilotStatus) {
*out = *in
Expand Down Expand Up @@ -577,7 +609,7 @@ func (in *Pilot) DeepCopyInto(out *Pilot) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
out.Spec = in.Spec
in.Spec.DeepCopyInto(&out.Spec)
in.Status.DeepCopyInto(&out.Status)
return
}
Expand Down Expand Up @@ -655,6 +687,24 @@ func (in *PilotList) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PilotSpec) DeepCopyInto(out *PilotSpec) {
*out = *in
if in.Elasticsearch != nil {
in, out := &in.Elasticsearch, &out.Elasticsearch
if *in == nil {
*out = nil
} else {
*out = new(ElasticsearchPilotSpec)
**out = **in
}
}
if in.Cassandra != nil {
in, out := &in.Cassandra, &out.Cassandra
if *in == nil {
*out = nil
} else {
*out = new(CassandraPilotSpec)
**out = **in
}
}
return
}

Expand Down
52 changes: 51 additions & 1 deletion pkg/apis/navigator/zz_generated.deepcopy.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,22 @@ func (in *CassandraClusterStatus) DeepCopy() *CassandraClusterStatus {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CassandraPilotSpec) DeepCopyInto(out *CassandraPilotSpec) {
*out = *in
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CassandraPilotSpec.
func (in *CassandraPilotSpec) DeepCopy() *CassandraPilotSpec {
if in == nil {
return nil
}
out := new(CassandraPilotSpec)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CassandraPilotStatus) DeepCopyInto(out *CassandraPilotStatus) {
*out = *in
Expand Down Expand Up @@ -453,6 +469,22 @@ func (in *ElasticsearchClusterStatus) DeepCopy() *ElasticsearchClusterStatus {
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ElasticsearchPilotSpec) DeepCopyInto(out *ElasticsearchPilotSpec) {
*out = *in
return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElasticsearchPilotSpec.
func (in *ElasticsearchPilotSpec) DeepCopy() *ElasticsearchPilotSpec {
if in == nil {
return nil
}
out := new(ElasticsearchPilotSpec)
in.DeepCopyInto(out)
return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ElasticsearchPilotStatus) DeepCopyInto(out *ElasticsearchPilotStatus) {
*out = *in
Expand Down Expand Up @@ -577,7 +609,7 @@ func (in *Pilot) DeepCopyInto(out *Pilot) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
out.Spec = in.Spec
in.Spec.DeepCopyInto(&out.Spec)
in.Status.DeepCopyInto(&out.Status)
return
}
Expand Down Expand Up @@ -655,6 +687,24 @@ func (in *PilotList) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PilotSpec) DeepCopyInto(out *PilotSpec) {
*out = *in
if in.Elasticsearch != nil {
in, out := &in.Elasticsearch, &out.Elasticsearch
if *in == nil {
*out = nil
} else {
*out = new(ElasticsearchPilotSpec)
**out = **in
}
}
if in.Cassandra != nil {
in, out := &in.Cassandra, &out.Cassandra
if *in == nil {
*out = nil
} else {
*out = new(CassandraPilotSpec)
**out = **in
}
}
return
}

Expand Down
Loading