Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
ukff committed Jan 9, 2025
1 parent f9d2775 commit 89457c0
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 27 deletions.
45 changes: 18 additions & 27 deletions controllers/btpoperator_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -527,8 +527,13 @@ func (r *BtpOperatorReconciler) reconcileResources(ctx context.Context, managerS
return fmt.Errorf("failed to resolve namespace %s : %w", managementNamespace, err)
}

if err := r.reconcileSecrets(managerSecret, operatorSecret); err != nil {
logger.Error(err, fmt.Sprintf("while setting Secret %s values", btpServiceOperatorSecret))
return fmt.Errorf("failed to set Secret %s values: %w", btpServiceOperatorSecret, err)
}

logger.Info(fmt.Sprintf("propagating %s changes to secret: %s and config map : %s", SecretName, btpServiceOperatorSecret, btpServiceOperatorConfigMap))
configMapChanged, clusterIdChanged, err := r.propagateManagerSecretChanges(ctx, managementNamespace, managerSecret, operatorSecret, operatorConfigMap, &logger)
configMapChanged, clusterIdChanged, err := r.propagateManagerSecretChanges(ctx, managementNamespace, managerSecret, operatorConfigMap, &logger)
logger.Info(fmt.Sprintf("configMapChanged %t", configMapChanged))
if err != nil {
logger.Error(err, fmt.Sprintf("propagating %s changes to secret: %s and config map : %s : %s", SecretName, btpServiceOperatorSecret, btpServiceOperatorConfigMap, err.Error()))
Expand Down Expand Up @@ -582,7 +587,7 @@ func (r *BtpOperatorReconciler) conditionallyRestartOperator(ctx context.Context
return nil
}

func (r *BtpOperatorReconciler) propagateManagerSecretChanges(ctx context.Context, managementNamespace string, managerSecret *corev1.Secret, operatorSecret, operatorConfigMap *unstructured.Unstructured, logger *logr.Logger) (bool, bool, error) {
func (r *BtpOperatorReconciler) propagateManagerSecretChanges(ctx context.Context, managementNamespace string, managerSecret *corev1.Secret, futureConfigMap *unstructured.Unstructured, logger *logr.Logger) (bool, bool, error) {
currentConfigMap := corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: btpServiceOperatorConfigMap,
Expand All @@ -591,7 +596,8 @@ func (r *BtpOperatorReconciler) propagateManagerSecretChanges(ctx context.Contex
}
if err := r.Get(ctx, client.ObjectKeyFromObject(&currentConfigMap), &currentConfigMap); err != nil {
if k8serrors.IsNotFound(err) {
err := runtime.DefaultUnstructuredConverter.FromUnstructured(operatorConfigMap.Object, &currentConfigMap)
// provisioning case
err := runtime.DefaultUnstructuredConverter.FromUnstructured(futureConfigMap.Object, &currentConfigMap)
if err != nil {
return false, false, err
}
Expand All @@ -601,18 +607,18 @@ func (r *BtpOperatorReconciler) propagateManagerSecretChanges(ctx context.Contex
}
}

if err := r.reconcileSecrets(managerSecret, operatorSecret, logger); err != nil {
logger.Error(err, fmt.Sprintf("while setting Secret %s values", btpServiceOperatorSecret))
return false, false, fmt.Errorf("failed to set Secret %s values: %w", btpServiceOperatorSecret, err)
clusterId := string(managerSecret.Data[managerSecretClusterIdKey])
clusterIdChanged := clusterId != currentConfigMap.Data[ConfigMapClusterIDKey]
if err := unstructured.SetNestedField(futureConfigMap.Object, clusterId, "data", ConfigMapClusterIDKey); err != nil {
return false, false, fmt.Errorf("failed to sync cluster id: %w", err)
}

configMapChanged, clusterIdChanged, err := r.reconcileConfigMap(&currentConfigMap, managerSecret, managementNamespace, operatorConfigMap, logger)
if err != nil {
logger.Error(err, fmt.Sprintf("while reconciling config map: %s : %s", btpServiceOperatorConfigMap, err.Error()))
return false, false, fmt.Errorf("failed to reconcile config map: %w", err)
namespaceChanged := managementNamespace != currentConfigMap.Data[ConfigMapManagementNamespace]
if err := unstructured.SetNestedField(futureConfigMap.Object, managementNamespace, "data", ConfigMapManagementNamespace); err != nil {
return false, false, fmt.Errorf("failed to sync namespace: %w", err)
}

return configMapChanged, clusterIdChanged, nil
return namespaceChanged, clusterIdChanged, nil
}

func (r *BtpOperatorReconciler) resolveManagementNamespace(ctx context.Context, managerSecret *corev1.Secret, logger *logr.Logger) (string, error) {
Expand Down Expand Up @@ -656,22 +662,7 @@ func (r *BtpOperatorReconciler) getConfigMapAndSecretIndexes(resourcesToApply []
return configMapIndex, secretIndex
}

func (r *BtpOperatorReconciler) reconcileConfigMap(currentConfigMap *corev1.ConfigMap, managerSecret *corev1.Secret, managementNamespace string, futureConfigMap *unstructured.Unstructured, logger *logr.Logger) (bool, bool, error) {
clusterId := string(managerSecret.Data[managerSecretClusterIdKey])
clusterIdChanged := clusterId != currentConfigMap.Data[ConfigMapClusterIDKey]
if err := unstructured.SetNestedField(futureConfigMap.Object, clusterId, "data", ConfigMapClusterIDKey); err != nil {
return false, false, fmt.Errorf("failed to sync cluster id: %w", err)
}

namespaceChanged := managementNamespace != currentConfigMap.Data[ConfigMapManagementNamespace]
if err := unstructured.SetNestedField(futureConfigMap.Object, managementNamespace, "data", ConfigMapManagementNamespace); err != nil {
return false, false, fmt.Errorf("failed to sync namespace: %w", err)
}

return namespaceChanged, clusterIdChanged, nil
}

func (r *BtpOperatorReconciler) reconcileSecrets(secret *corev1.Secret, u *unstructured.Unstructured, logger *logr.Logger) error {
func (r *BtpOperatorReconciler) reconcileSecrets(secret *corev1.Secret, u *unstructured.Unstructured) error {
for k := range secret.Data {
for _, r := range requiredSecretKeys {
if k != r {
Expand Down
20 changes: 20 additions & 0 deletions k3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTXpZek5USXlPRGN3SGhjTk1qVXdNVEE0TVRZd05EUTNXaGNOTXpVd01UQTJNVFl3TkRRMwpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTXpZek5USXlPRGN3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSSUxxa1VRM3pTSlBlS2duSWZBeW9BTS9qdktEMHdGS051VStBS0wwck4KUTV5UjZaVmlZNWZHbEl5Y00wRVdSemlWS2kwM1lQS0R0dEtubHVKdHdaYVlvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTVVWEJyNjAvTEtGWVptN0QwWTl0CjM0YmpGUGt3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnR0hIMUNVWEUxUTJQakM1cG5XU2pvamRYOHB6MldOVmIKWndZam9oZ1M0ZllDSUZWOW5uNk1yOUpuaFJyMW1jb3YyY0w4bEZZbXdYTlcrbkM2aHFLYkNKWXAKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://0.0.0.0:50324
name: k3d-test
contexts:
- context:
cluster: k3d-test
user: admin@k3d-test
name: k3d-test
current-context: k3d-test
kind: Config
preferences: {}
users:
- name: admin@k3d-test
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrRENDQVRlZ0F3SUJBZ0lJRStuK2pVNlRoME13Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOek0yTXpVeU1qZzNNQjRYRFRJMU1ERXdPREUyTURRME4xb1hEVEkyTURFdwpPREUyTURRME4xb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNZEZUbTRKamlLRmtnaU8KcEdPOEJQZXorZVBSK2F1UHFWWVYrdlNiUGp3bTA0TUFwMlF2aGdxQkFwUFlJZ0I0cEdLQkc0WE9IRVNUc3FrZQo5SVBRdXJTalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCU2JnaXF1ejg4VUFPT3J2ZWlKdXZSMlJrV093VEFLQmdncWhrak9QUVFEQWdOSEFEQkUKQWlCbUt6QWlVaFA0SEZkdDZBaWxiM2Z5K2M1K1h0OU54ZVhpUEJFK2ZIeWFXUUlnREpRM1VCelhsNmMwck9lUQpjRU1HdnVVK2xFUDd5b2l2TGtUWk42KzdZM0k9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTXpZek5USXlPRGN3SGhjTk1qVXdNVEE0TVRZd05EUTNXaGNOTXpVd01UQTJNVFl3TkRRMwpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTXpZek5USXlPRGN3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUSkI4YlZySEVxRFJaTW1vRExqbzhvR0xIZ2tzdWFsdWVOWjhseWlZelAKZGhjM1NRdEk5OFNUNitkZFlGYzc2b3ZTL0JmUnBNUTRCcElCU09idzZDb1NvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVW00SXFycy9QRkFEanE3M29pYnIwCmRrWkZqc0V3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUxUejMybzZCcW9ybVZRSENkQUl1My9zaCt2WTByVFMKb0o4RTR6U2RnbFJaQWlFQTZWb3pPa1EvRG83NGRxdFFVUGE1NkpnNUtCZGhmNGNsQlhOMER5MkgzbUE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUp4SnJtdEdwUDNQeU4zUHFhR204eUx6V3RoNUVDZ1gvRGpFYnNlVzNiU05vQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFeDBWT2JnbU9Jb1dTQ0k2a1k3d0U5N1A1NDlINXE0K3BWaFg2OUpzK1BDYlRnd0NuWkMrRwpDb0VDazlnaUFIaWtZb0ViaGM0Y1JKT3lxUjcwZzlDNnRBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=

0 comments on commit 89457c0

Please sign in to comment.