Skip to content

Commit

Permalink
Revert "chore: remove dependence on characterType (#7500)"
Browse files Browse the repository at this point in the history
This reverts commit 8912260
  • Loading branch information
sophon-zt committed Jun 21, 2024
1 parent 1e0521c commit 1bb86ab
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 53 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ require (
github.com/google/uuid v1.6.0
github.com/hashicorp/go-hclog v1.5.0
github.com/hashicorp/vault/sdk v0.9.2
github.com/imdario/mergo v0.3.14
github.com/jackc/pgx/v5 v5.5.4
github.com/klauspost/compress v1.17.6
github.com/kubernetes-csi/external-snapshotter/client/v3 v3.0.0
Expand Down Expand Up @@ -187,6 +186,7 @@ require (
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
github.com/huandu/xstrings v1.4.0 // indirect
github.com/imdario/mergo v0.3.14 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
Expand Down
78 changes: 26 additions & 52 deletions pkg/configuration/config_manager/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,12 @@ import (
"path/filepath"
"strconv"

"github.com/imdario/mergo"
"gopkg.in/yaml.v2"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
apiruntime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/util/retry"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"

Expand Down Expand Up @@ -79,7 +76,7 @@ func BuildConfigManagerContainerParams(cli client.Client, ctx context.Context, m
buildParam = &managerParams.ConfigSpecsBuildParams[i]
volume = FindVolumeMount(managerParams.Volumes, buildParam.ConfigSpec.VolumeName)
if volume == nil {
ctrl.Log.Info(fmt.Sprintf("volume mount not be use : %s", buildParam.ConfigSpec.VolumeName))
logger.Info(fmt.Sprintf("volume mount not be use : %s", buildParam.ConfigSpec.VolumeName))
continue
}
buildParam.MountPoint = volume.MountPath
Expand Down Expand Up @@ -352,62 +349,39 @@ func buildLazyRenderedConfigVolume(cmName string, manager *CfgManagerBuildParams

func checkOrCreateConfigMap(referenceCM client.ObjectKey, scriptCMKey client.ObjectKey, cli client.Client, ctx context.Context, cluster *appsv1alpha1.Cluster, fn func(cm *corev1.ConfigMap) error) error {
var (
err error
op controllerutil.OperationResult
refCM = corev1.ConfigMap{}
err error

refCM = corev1.ConfigMap{}
sidecarCM = corev1.ConfigMap{}
)

if err = cli.Get(ctx, referenceCM, &refCM); err != nil {
return err
}
if err = cli.Get(ctx, scriptCMKey, &sidecarCM, inDataContext()); err != nil {
if !apierrors.IsNotFound(err) {
return err
}

expected, err := createScripts(&refCM, scriptCMKey, cluster, fn)
if err != nil {
return err
}
existing := expected.DeepCopy()
mutateFn := func() (err error) {
mergeWithOverride(existing.Labels, expected.Labels)
mergeWithOverride(existing.Annotations, expected.Annotations)
existing.SetOwnerReferences(expected.GetOwnerReferences())
existing.Data = expected.Data
return
}

updateLog := func() {
ctrl.Log.Info(fmt.Sprintf("expected cm object[%s] has been %s", scriptCMKey, op))
}

defer updateLog()
return retry.RetryOnConflict(retry.DefaultRetry, func() error {
result, createOrUpdateErr := ctrl.CreateOrUpdate(ctx, cli, existing, mutateFn)
op = result
return createOrUpdateErr
})
}

func createScripts(refCM *corev1.ConfigMap, key client.ObjectKey, owner client.Object, fn func(cm *corev1.ConfigMap) error) (*corev1.ConfigMap, error) {
expected := &corev1.ConfigMap{}

scheme, _ := appsv1alpha1.SchemeBuilder.Build()
expected.Data = refCM.Data
if fn != nil {
if err := fn(expected); err != nil {
return nil, err
scheme, _ := appsv1alpha1.SchemeBuilder.Build()
sidecarCM.Data = refCM.Data
if fn != nil {
if err := fn(&sidecarCM); err != nil {
return err
}
}
sidecarCM.SetLabels(refCM.GetLabels())
sidecarCM.SetName(scriptCMKey.Name)
sidecarCM.SetNamespace(scriptCMKey.Namespace)
sidecarCM.SetLabels(refCM.Labels)
if err := controllerutil.SetOwnerReference(cluster, &sidecarCM, scheme); err != nil {
return err
}
if err := cli.Create(ctx, &sidecarCM, inDataContext()); err != nil {
return err
}
}
expected.SetLabels(refCM.GetLabels())
expected.SetName(key.Name)
expected.SetNamespace(key.Namespace)
expected.SetAnnotations(refCM.GetAnnotations())
if err := controllerutil.SetOwnerReference(owner, expected, scheme); err != nil {
return nil, err
}
return expected, nil
}

func mergeWithOverride(dst, src interface{}) {
_ = mergo.Merge(dst, src, mergo.WithOverride)
return nil
}

func checkAndUpdateReloadYaml(data map[string]string, reloadConfig string, formatterConfig appsv1beta1.FileFormatConfig) (map[string]string, error) {
Expand Down
1 change: 1 addition & 0 deletions pkg/configuration/config_manager/handler_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ type CfgManagerBuildParams struct {

Volumes []corev1.VolumeMount `json:"volumes"`
ComponentName string `json:"componentName"`
CharacterType string `json:"characterType"`
SecreteName string `json:"secreteName"`

// add volume to pod
Expand Down
1 change: 1 addition & 0 deletions pkg/controller/configuration/config_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ func getUsingVolumesByConfigSpecs(podSpec *corev1.PodSpec, configSpecs []appsv1a
func buildConfigManagerParams(cli client.Client, ctx context.Context, cluster *appsv1alpha1.Cluster, comp *component.SynthesizedComponent, configSpecBuildParams []cfgcm.ConfigSpecMeta, volumeDirs []corev1.VolumeMount, podSpec *corev1.PodSpec) (*cfgcm.CfgManagerBuildParams, error) {
cfgManagerParams := &cfgcm.CfgManagerBuildParams{
ManagerName: constant.ConfigSidecarName,
CharacterType: comp.CharacterType,
ComponentName: comp.Name,
SecreteName: constant.GenerateDefaultConnCredential(cluster.Name),
Image: viper.GetString(constant.KBToolsImage),
Expand Down
1 change: 1 addition & 0 deletions pkg/controller/configuration/tool_image_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ var _ = Describe("ToolsImageBuilderTest", func() {

cfgManagerParams := &cfgcm.CfgManagerBuildParams{
ManagerName: constant.ConfigSidecarName,
CharacterType: clusterComponent.CharacterType,
ComponentName: clusterComponent.Name,
SecreteName: constant.GenerateDefaultConnCredential(clusterObj.Name),
Image: viper.GetString(constant.KBToolsImage),
Expand Down
32 changes: 32 additions & 0 deletions pkg/controller/factory/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,38 @@ func BuildCfgManagerContainer(sidecarRenderedParam *cfgcm.CfgManagerBuildParams)
},
},
})
if len(sidecarRenderedParam.CharacterType) > 0 {
env = append(env, corev1.EnvVar{
Name: "DB_TYPE",
Value: sidecarRenderedParam.CharacterType,
})
}
// TODO: Remove hard coding
if sidecarRenderedParam.CharacterType == "mysql" {
env = append(env, corev1.EnvVar{
Name: "MYSQL_USER",
ValueFrom: &corev1.EnvVarSource{
SecretKeyRef: &corev1.SecretKeySelector{
Key: "username",
LocalObjectReference: corev1.LocalObjectReference{Name: sidecarRenderedParam.SecreteName},
},
},
},
corev1.EnvVar{
Name: "MYSQL_PASSWORD",
ValueFrom: &corev1.EnvVarSource{
SecretKeyRef: &corev1.SecretKeySelector{
Key: "password",
LocalObjectReference: corev1.LocalObjectReference{Name: sidecarRenderedParam.SecreteName},
},
},
},
corev1.EnvVar{
Name: "DATA_SOURCE_NAME",
Value: "$(MYSQL_USER):$(MYSQL_PASSWORD)@(localhost:3306)/",
},
)
}
containerBuilder := builder.NewContainerBuilder(sidecarRenderedParam.ManagerName).
AddCommands("env").
AddArgs("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$(TOOLS_PATH)").
Expand Down
2 changes: 2 additions & 0 deletions pkg/controller/factory/builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,7 @@ var _ = Describe("builder", func() {
ManagerName: "cfgmgr",
SecreteName: "test-secret",
ComponentName: synthesizedComponent.Name,
CharacterType: synthesizedComponent.CharacterType,
Image: constant.KBToolsImage,
Args: []string{},
Envs: []corev1.EnvVar{},
Expand All @@ -383,6 +384,7 @@ var _ = Describe("builder", func() {
_, cluster, _ := newClusterObjs(nil)
sidecarRenderedParam := &cfgcm.CfgManagerBuildParams{
ManagerName: "cfgmgr",
CharacterType: mysqlCharacterType,
SecreteName: "test-secret",
Image: constant.KBToolsImage,
ShareProcessNamespace: true,
Expand Down

0 comments on commit 1bb86ab

Please sign in to comment.