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

Commit

Permalink
Merge pull request #296 from wallrj/shared-int-ptr
Browse files Browse the repository at this point in the history
Remove duplicate Int32Ptr and Int64Ptr functions
  • Loading branch information
jetstack-bot committed Mar 21, 2018
2 parents ee1f90d + 2a29e0b commit 40c58ed
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 78 deletions.
3 changes: 2 additions & 1 deletion pkg/controllers/cassandra/nodepool/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

"github.com/jetstack/navigator/pkg/apis/navigator/v1alpha1"
"github.com/jetstack/navigator/pkg/controllers/cassandra/util"
"github.com/jetstack/navigator/pkg/util/ptr"
)

const (
Expand Down Expand Up @@ -48,7 +49,7 @@ func StatefulSetForCluster(
OwnerReferences: []metav1.OwnerReference{util.NewControllerRef(cluster)},
},
Spec: apps.StatefulSetSpec{
Replicas: util.Int32Ptr(int32(np.Replicas)),
Replicas: ptr.Int32(np.Replicas),
Selector: &metav1.LabelSelector{
MatchLabels: nodePoolLabels,
},
Expand Down
4 changes: 0 additions & 4 deletions pkg/controllers/cassandra/util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,6 @@ func NodePoolLabels(
return labels
}

func Int32Ptr(i int32) *int32 {
return &i
}

func OwnerCheck(
obj metav1.Object,
owner metav1.Object,
Expand Down
5 changes: 3 additions & 2 deletions pkg/controllers/elasticsearch/actions/create_nodepool.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/jetstack/navigator/pkg/apis/navigator/v1alpha1"
"github.com/jetstack/navigator/pkg/controllers"
"github.com/jetstack/navigator/pkg/controllers/elasticsearch/util"
"github.com/jetstack/navigator/pkg/util/ptr"
)

const (
Expand Down Expand Up @@ -70,7 +71,7 @@ func nodePoolStatefulSet(c *v1alpha1.ElasticsearchCluster, np *v1alpha1.Elastics
},
},
Spec: apps.StatefulSetSpec{
Replicas: util.Int32Ptr(int32(np.Replicas)),
Replicas: ptr.Int32(np.Replicas),
ServiceName: statefulSetName,
Selector: &metav1.LabelSelector{
MatchLabels: util.NodePoolLabels(c, np.Name),
Expand Down Expand Up @@ -161,7 +162,7 @@ func elasticsearchPodTemplateSpec(controllerName string, c *v1alpha1.Elasticsear
Annotations: map[string]string{},
},
Spec: apiv1.PodSpec{
TerminationGracePeriodSeconds: util.Int64Ptr(1800),
TerminationGracePeriodSeconds: ptr.Int64(1800),
ServiceAccountName: util.ServiceAccountName(c),
NodeSelector: np.NodeSelector,
SchedulerName: np.SchedulerName,
Expand Down
69 changes: 35 additions & 34 deletions pkg/controllers/elasticsearch/actions/scale_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
testutil "github.com/jetstack/navigator/internal/test/util"
"github.com/jetstack/navigator/internal/test/util/generate"
"github.com/jetstack/navigator/pkg/apis/navigator/v1alpha1"
"github.com/jetstack/navigator/pkg/util/ptr"
)

func TestScale(t *testing.T) {
Expand All @@ -31,57 +32,57 @@ func TestScale(t *testing.T) {
tests := map[string]testT{
"should not scale statefulset if documents still remain": {
kubeObjects: []runtime.Object{
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
},
navObjects: []runtime.Object{
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: int64Ptr(2)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: ptr.Int64(2)}),
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
replicas: 2,
shouldUpdate: false,
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
err: false,
},
"should scale statefulset if no documents remain": {
kubeObjects: []runtime.Object{
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
},
navObjects: []runtime.Object{
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: int64Ptr(1)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: int64Ptr(1)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: ptr.Int64(1)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: ptr.Int64(1)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
replicas: 2,
shouldUpdate: true,
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(2)}),
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(2)}),
err: false,
},
"should not scale statefulset if a pilot that should exist is missing": {
kubeObjects: []runtime.Object{
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
},
navObjects: []runtime.Object{
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
replicas: 2,
shouldUpdate: false,
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
err: false,
},
"should not error if statefulset doesn't exist": {
kubeObjects: []runtime.Object{},
navObjects: []runtime.Object{
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
Expand All @@ -92,18 +93,18 @@ func TestScale(t *testing.T) {
},
"should not update if replica difference is zero": {
kubeObjects: []runtime.Object{
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
},
navObjects: []runtime.Object{
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: int64Ptr(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-0", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-1", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
generate.Pilot(generate.PilotConfig{Name: "es-test-data-2", Cluster: "test", NodePool: "data", Documents: ptr.Int64(0)}),
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 3, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 3, v1alpha1.ElasticsearchRoleData),
replicas: 3,
shouldUpdate: false,
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
expectedStatefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
err: false,
},
}
Expand Down Expand Up @@ -174,7 +175,7 @@ func TestPilotsForStatefulSet(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
expectedPilots: []*v1alpha1.Pilot{
pilotWithNameDocuments("es-test-data-0", "test", "data", 10),
pilotWithNameDocuments("es-test-data-1", "test", "data", 10),
Expand All @@ -188,7 +189,7 @@ func TestPilotsForStatefulSet(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
err: true,
},
{
Expand All @@ -202,7 +203,7 @@ func TestPilotsForStatefulSet(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData), nodePoolWithNameReplicasRoles("master", 3, v1alpha1.ElasticsearchRoleMaster)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
expectedPilots: []*v1alpha1.Pilot{
pilotWithNameDocuments("es-test-data-0", "test", "data", 0),
pilotWithNameDocuments("es-test-data-1", "test", "data", 1),
Expand Down Expand Up @@ -255,7 +256,7 @@ func TestCanScaleNodePool(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
replicaDiff: -1,
canScale: true,
},
Expand All @@ -267,7 +268,7 @@ func TestCanScaleNodePool(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
replicaDiff: -1,
err: false,
canScale: false,
Expand All @@ -280,7 +281,7 @@ func TestCanScaleNodePool(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 2, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
replicaDiff: -1,
err: false,
canScale: false,
Expand All @@ -293,7 +294,7 @@ func TestCanScaleNodePool(t *testing.T) {
},
cluster: clusterWithNodePools("test", nodePoolWithNameReplicasRoles("data", 4, v1alpha1.ElasticsearchRoleData)),
nodePool: nodePoolPtrWithNameReplicasRoles("data", 4, v1alpha1.ElasticsearchRoleData),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test-data", Replicas: ptr.Int32(3)}),
replicaDiff: 1,
canScale: true,
},
Expand Down Expand Up @@ -347,33 +348,33 @@ func TestDeterminePilotsToBeRemoved(t *testing.T) {
tests := map[string]testT{
"should only remove highest ordinal pilot in 'test' set": {
inputList: []*v1alpha1.Pilot{pilotWithName("es-test-0"), pilotWithName("es-test-1"), pilotWithName("es-test-2")},
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: int32Ptr(3)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: ptr.Int32(3)}),
replicaDiff: -1,
expectedOutput: []*v1alpha1.Pilot{pilotWithName("es-test-2")},
err: false,
},
"should not remove pilot that is not a member of the specified statefulset": {
inputList: []*v1alpha1.Pilot{pilotWithName("es-test-0"), pilotWithName("es-mixed-1"), pilotWithName("es-test-1")},
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: int32Ptr(2)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: ptr.Int32(2)}),
replicaDiff: -1,
expectedOutput: []*v1alpha1.Pilot{pilotWithName("es-test-1")},
err: false,
},
"should not remove any pilots if replicaDiff is 0 and highest ordinal pilot is missing": {
inputList: []*v1alpha1.Pilot{pilotWithName("es-test-0")},
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: int32Ptr(2)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: ptr.Int32(2)}),
replicaDiff: 0,
err: false,
},
"should not remove any pilots if replica diff is 0": {
inputList: []*v1alpha1.Pilot{pilotWithName("es-test-0")},
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: int32Ptr(1)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: ptr.Int32(1)}),
replicaDiff: 0,
err: false,
},
"should not remove any pilots of replicaDiff is positive": {
inputList: []*v1alpha1.Pilot{pilotWithName("es-test-0"), pilotWithName("es-test-1")},
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: int32Ptr(2)}),
statefulSet: generate.StatefulSet(generate.StatefulSetConfig{Name: "es-test", Replicas: ptr.Int32(2)}),
replicaDiff: 1,
err: false,
},
Expand Down

0 comments on commit 40c58ed

Please sign in to comment.