Skip to content

Commit

Permalink
feat: remove builder.RoleGroupInfo to avoid confusion with reconciler (
Browse files Browse the repository at this point in the history
…#89)

* feat: remove builder.RoleGroupInfo to avoid confusion with reconciler

* feat: make Builder.name to public
  • Loading branch information
whg517 authored Jul 25, 2024
1 parent 8e7d9a9 commit a128c1d
Show file tree
Hide file tree
Showing 14 changed files with 77 additions and 85 deletions.
2 changes: 1 addition & 1 deletion pkg/builder/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func NewBaseConfigBuilder(
return &BaseConfigBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
annotations: annotations,
},
Expand Down
2 changes: 1 addition & 1 deletion pkg/builder/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func NewDeployment(
name string,
replicas *int32,
image *util.Image,
options *WorkloadOptions,
options WorkloadOptions,
) *Deployment {
return &Deployment{
BaseWorkloadReplicasBuilder: *NewBaseWorkloadReplicasBuilder(
Expand Down
33 changes: 17 additions & 16 deletions pkg/builder/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,18 +63,19 @@ var _ = Describe("DeploymentBuilder test", func() {
"sample-trinocluster-default",
&[]int32{1}[0],
util.NewImage("trino", "485", "1.0.0"),
&builder.WorkloadOptions{
Labels: map[string]string{
util.AppKubernetesInstanceName: ownerName,
util.AppKubernetesManagedByName: "trino.zncdata.dev",
util.AppKubernetesComponentName: "coordinator",
util.AppKubernetesNameName: "TrinoCluster",
util.AppKubernetesRoleGroupName: "default",
},
RoleGroupInfo: &builder.RoleGroupInfo{
builder.WorkloadOptions{
Options: builder.Options{
RoleName: "coordinator",
RoleGroupName: "default",
Labels: map[string]string{
util.AppKubernetesInstanceName: ownerName,
util.AppKubernetesManagedByName: "trino.zncdata.dev",
util.AppKubernetesComponentName: "coordinator",
util.AppKubernetesNameName: "TrinoCluster",
util.AppKubernetesRoleGroupName: "default",
},
},

Resource: &commonsv1alpha1.ResourcesSpec{
CPU: &commonsv1alpha1.CPUResource{
Max: resource.MustParse("100m"),
Expand Down Expand Up @@ -151,7 +152,11 @@ var _ = Describe("DeploymentBuilder test", func() {
"sample-trinocluster-default",
&[]int32{1}[0],
util.NewImage("trino", "485", "1.0.0"),
&builder.WorkloadOptions{
builder.WorkloadOptions{
Options: builder.Options{
RoleName: "coordinator", // EnvOverrides and CommandOverrides will only applied to the container, which it name eq RoleName
RoleGroupName: "default",
},
CommandOverrides: []string{
"bin/launcher",
"start",
Expand All @@ -160,10 +165,6 @@ var _ = Describe("DeploymentBuilder test", func() {
"foo": "test",
"bar": "test",
},
RoleGroupInfo: &builder.RoleGroupInfo{
RoleName: "coordinator", // EnvOverrides and CommandOverrides will only applied to the container, which it name eq RoleName
RoleGroupName: "default",
},
},
),
}
Expand Down Expand Up @@ -210,7 +211,7 @@ var _ = Describe("DeploymentBuilder test", func() {
"sample-trinocluster-default",
&[]int32{1}[0],
util.NewImage("trino", "485", "1.0.0"),
&builder.WorkloadOptions{
builder.WorkloadOptions{
EnvOverrides: map[string]string{
"foo": "test",
},
Expand All @@ -221,7 +222,7 @@ var _ = Describe("DeploymentBuilder test", func() {
},
},
},
RoleGroupInfo: &builder.RoleGroupInfo{
Options: builder.Options{
RoleName: "coordinator", // EnvOverrides will only applied to the container, which it name eq RoleName
RoleGroupName: "default",
},
Expand Down
4 changes: 2 additions & 2 deletions pkg/builder/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ type WorkloadVolumes interface {
}

type WorkloadAffinity interface {
AddAffinity(affinity *corev1.Affinity)
SetAffinity(affinity *corev1.Affinity)
GetAffinity() *corev1.Affinity
}

Expand All @@ -105,7 +105,7 @@ type WorkloadReplicas interface {
}

type WorkloadTerminationGracePeriodSeconds interface {
AddTerminationGracePeriod(duration *time.Duration)
SetTerminationGracePeriod(duration *time.Duration)
GetTerminationGracePeriod() *time.Duration
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/builder/job.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ type Job struct {

func NewGenericJobBuilder(
client *resourceClient.Client,
name string,
name string, // this is resource name when creating
image *util.Image,
options *WorkloadOptions,
options WorkloadOptions,
) JobBuilder {
return &Job{
BaseWorkloadBuilder: *NewBaseWorkloadBuilder(
Expand Down
17 changes: 4 additions & 13 deletions pkg/builder/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,22 @@ import (
commonsv1alpha1 "github.com/zncdatadev/operator-go/pkg/apis/commons/v1alpha1"
)

type RoleGroupInfo struct {
type Options struct {
ClusterName string
RoleName string
RoleGroupName string
}

func (i *RoleGroupInfo) String() string {
return i.ClusterName + "-" + i.RoleName + "-" + i.RoleGroupName
}

type ResourceOptions struct {
Labels map[string]string
Annotations map[string]string
RoleGroupInfo *RoleGroupInfo
}

type WorkloadOptions struct {
Labels map[string]string
Annotations map[string]string
Options

Affinity *corev1.Affinity
PodOverrides *corev1.PodTemplateSpec
EnvOverrides map[string]string
CommandOverrides []string
TerminationGracePeriod *time.Duration
// Workload cpu and memory resource limits and requests
Resource *commonsv1alpha1.ResourcesSpec
RoleGroupInfo *RoleGroupInfo
Resource *commonsv1alpha1.ResourcesSpec
}
10 changes: 5 additions & 5 deletions pkg/builder/rbac.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func NewGenericServiceAccountBuilder(
return &GenericServiceAccountBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
annotations: annotations,
},
Expand Down Expand Up @@ -63,7 +63,7 @@ func NewGenericRoleBuilder(
return &GenericRoleBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
annotations: annotations,
},
Expand Down Expand Up @@ -100,7 +100,7 @@ func NewGenericRoleBindingBuilder(
return &GenericRoleBindingBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
annotations: annotations,
},
Expand Down Expand Up @@ -137,7 +137,7 @@ func NewGenericClusterRoleBuilder(
return &GenericClusterRoleBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
annotations: annotations,
},
Expand Down Expand Up @@ -176,7 +176,7 @@ func NewGenericClusterRoleBindingBuilder(
return &GenericClusterRoleBindingBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
annotations: annotations,
},
Expand Down
40 changes: 24 additions & 16 deletions pkg/builder/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,28 @@ var _ ResourceBuilder = &BaseResourceBuilder{}
type BaseResourceBuilder struct {
Client *client.Client

name string
Name string // this is resource name when creating
labels map[string]string
annotations map[string]string

roleGroupInfo *RoleGroupInfo
clusterName string
roleName string
roleGroupName string
}

func NewBaseResourceBuilder(
client *client.Client,
name string,
options *ResourceOptions,
name string, // this is resource name when creating
options *Options,
) *BaseResourceBuilder {
return &BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: options.Labels,
roleGroupInfo: options.RoleGroupInfo,
annotations: options.Annotations,
clusterName: options.ClusterName,
roleName: options.RoleName,
roleGroupName: options.RoleGroupName,
}
}

Expand All @@ -44,11 +49,11 @@ func (b *BaseResourceBuilder) GetClient() *client.Client {
}

func (b *BaseResourceBuilder) SetName(name string) {
b.name = name
b.Name = name
}

func (b *BaseResourceBuilder) GetName() string {
return b.name
return b.Name
}

func (b *BaseResourceBuilder) AddLabels(labels map[string]string) {
Expand All @@ -67,20 +72,23 @@ func (b *BaseResourceBuilder) GetLabels() map[string]string {
util.AppKubernetesManagedByName: util.StackDomain,
}

if b.roleGroupInfo != nil {
if b.roleGroupInfo.RoleName != "" {
b.labels[util.AppKubernetesComponentName] = b.roleGroupInfo.RoleName
}
if b.roleGroupInfo.RoleGroupName != "" {
b.labels[util.AppKubernetesRoleGroupName] = b.roleGroupInfo.RoleGroupName
}
if b.clusterName != "" {
b.labels[util.AppKubernetesInstanceName] = b.clusterName
}

if b.roleName != "" {
b.labels[util.AppKubernetesComponentName] = b.roleName
}

if b.roleGroupName != "" {
b.labels[util.AppKubernetesRoleGroupName] = b.roleGroupName
}
}

return b.labels
}

func (o *BaseResourceBuilder) filterLabels(labels map[string]string) map[string]string {

matchingLabels := make(map[string]string)
for _, label := range util.AppMatchingLabelsNames {
if value, ok := labels[label]; ok {
Expand Down
2 changes: 1 addition & 1 deletion pkg/builder/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func NewServiceBuilder(
return &BaseServiceBuilder{
BaseResourceBuilder: BaseResourceBuilder{
Client: client,
name: name,
Name: name,
labels: labels,
},
ports: servicePorts,
Expand Down
2 changes: 1 addition & 1 deletion pkg/builder/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func NewStatefulSetBuilder(
name string,
replicas *int32,
image *util.Image,
options *WorkloadOptions,
options WorkloadOptions,
) *StatefulSet {
return &StatefulSet{
BaseWorkloadReplicasBuilder: *NewBaseWorkloadReplicasBuilder(
Expand Down
30 changes: 12 additions & 18 deletions pkg/builder/workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,22 +54,16 @@ type BaseWorkloadBuilder struct {

func NewBaseWorkloadBuilder(
client *client.Client,
name string,
name string, // this is resource name when creating
image *util.Image,
options *WorkloadOptions,
options WorkloadOptions,
) *BaseWorkloadBuilder {

resourceOptions := &ResourceOptions{
Labels: options.Labels,
Annotations: options.Annotations,
RoleGroupInfo: options.RoleGroupInfo,
}

return &BaseWorkloadBuilder{
BaseResourceBuilder: *NewBaseResourceBuilder(
client,
name,
resourceOptions,
&options.Options,
),
image: image,

Expand Down Expand Up @@ -138,18 +132,18 @@ func (b *BaseWorkloadBuilder) GetSecurityContext() *corev1.PodSecurityContext {
func (b *BaseWorkloadBuilder) OverrideCommand() {
containers := b.GetContainers()

if len(containers) == 0 || b.commandOverrides == nil || len(b.commandOverrides) == 0 || b.roleGroupInfo == nil || b.roleGroupInfo.RoleName == "" {
if len(containers) == 0 || b.commandOverrides == nil || len(b.commandOverrides) == 0 || b.roleName == "" {
containersName := []string{}
for _, container := range containers {
containersName = append(containersName, container.Name)
}
logger.V(5).Info("Sikpping command override", "containers", containersName, "commandOverrides", b.commandOverrides, "roleGroupInfo", b.roleGroupInfo)
logger.V(5).Info("Sikpping command override", "containers", containersName, "commandOverrides", b.commandOverrides, "roleName", b.roleName)
return
}

for i := range containers {
container := &containers[i]
if container.Name == b.roleGroupInfo.RoleName {
if container.Name == b.roleName {
// Override the command, clear the args
container.Command = b.commandOverrides
container.Args = []string{}
Expand All @@ -164,18 +158,18 @@ func (b *BaseWorkloadBuilder) OverrideCommand() {
func (b *BaseWorkloadBuilder) OverrideEnv() {
containers := b.GetContainers()

if len(containers) == 0 || b.envOverrides == nil || len(b.envOverrides) == 0 || b.roleGroupInfo == nil || b.roleGroupInfo.RoleName == "" {
if len(containers) == 0 || b.envOverrides == nil || len(b.envOverrides) == 0 || b.roleName == "" {
containersName := []string{}
for _, container := range containers {
containersName = append(containersName, container.Name)
}
logger.V(5).Info("Sikpping env override", "containers", containersName, "envOverrides", b.envOverrides, "roleGroupInfo", b.roleGroupInfo)
logger.V(5).Info("Sikpping env override", "containers", containersName, "envOverrides", b.envOverrides, "roleName", b.roleName)
return
}

for i := range containers {
container := &containers[i]
if container.Name == b.roleGroupInfo.RoleName {
if container.Name == b.roleName {
// Override the env
for key, value := range b.envOverrides {
container.Env = append(container.Env, corev1.EnvVar{
Expand Down Expand Up @@ -223,15 +217,15 @@ func (b *BaseWorkloadBuilder) GetVolumes() []corev1.Volume {
return b.volumes
}

func (b *BaseWorkloadBuilder) AddAffinity(affinity *corev1.Affinity) {
func (b *BaseWorkloadBuilder) SetAffinity(affinity *corev1.Affinity) {
b.affinity = affinity
}

func (b *BaseWorkloadBuilder) GetAffinity() *corev1.Affinity {
return b.affinity
}

func (b *BaseWorkloadBuilder) AddTerminationGracePeriod(duration *time.Duration) {
func (b *BaseWorkloadBuilder) SetTerminationGracePeriod(duration *time.Duration) {
b.terminationGracePeriod = duration
}

Expand Down Expand Up @@ -336,7 +330,7 @@ func NewBaseWorkloadReplicasBuilder(
name string,
replicas *int32,
image *util.Image,
options *WorkloadOptions,
options WorkloadOptions,
) *BaseWorkloadReplicasBuilder {
return &BaseWorkloadReplicasBuilder{
BaseWorkloadBuilder: *NewBaseWorkloadBuilder(
Expand Down
Loading

0 comments on commit a128c1d

Please sign in to comment.