Skip to content
Merged
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
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.1.0-dev
v0.1.1
18 changes: 15 additions & 3 deletions internal/deployment-repo/deploymentRepoManager.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package deploymentrepo

import (
"bytes"
"context"
"fmt"
"io"
Expand Down Expand Up @@ -592,11 +593,22 @@ func (m *DeploymentRepoManager) RunKustomizeAndApply(ctx context.Context) error
return fmt.Errorf("failed to convert kustomized resources to YAML: %w", err)
}

logger.Infof("Applying kustomized resources to target cluster")
err = util.ApplyManifests(ctx, m.TargetCluster, resourcesYAML)
reader := bytes.NewReader(resourcesYAML)
manifests, err := util.ParseManifests(reader)
if err != nil {
return fmt.Errorf("failed to apply kustomized resources to cluster: %w", err)
return fmt.Errorf("failed to parse kustomized resources: %w", err)
}

for _, manifest := range manifests {
if manifest.GetKind() == "Kustomization" && strings.Contains(manifest.GetAPIVersion(), "kustomize.toolkit.fluxcd.io") {
logger.Infof("Applying Kustomization manifest: %s/%s", manifest.GetNamespace(), manifest.GetName())
err = util.ApplyUnstructuredObject(ctx, m.TargetCluster, manifest)
if err != nil {
return fmt.Errorf("failed to apply Kustomization manifest %s/%s: %w", manifest.GetNamespace(), manifest.GetName(), err)
}
}
}

return nil
}

Expand Down
35 changes: 6 additions & 29 deletions internal/deployment-repo/deploymentRepoManager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,38 +121,15 @@ func TestDeploymentRepoManager(t *testing.T) {

testutils.AssertDirectoriesEqualWithNormalization(t, expectedRepoDir, actualRepoDir, createGitRepoNormalizer(originDir))

clusterProviderTest := &unstructured.Unstructured{}
clusterProviderTest.SetGroupVersionKind(schema.GroupVersionKind{
Group: "openmcp.cloud",
Version: "v1alpha1",
Kind: "ClusterProvider",
fluxKustomization := &unstructured.Unstructured{}
fluxKustomization.SetGroupVersionKind(schema.GroupVersionKind{
Group: "kustomize.toolkit.fluxcd.io",
Version: "v1",
Kind: "Kustomization",
})

err = platformClient.Get(t.Context(), client.ObjectKey{Name: "test"}, clusterProviderTest)
err = platformClient.Get(t.Context(), client.ObjectKey{Name: "bootstrap", Namespace: "default"}, fluxKustomization)
assert.NoError(t, err)
assert.Equal(t, "test", clusterProviderTest.GetName())

serviceProviderTest := &unstructured.Unstructured{}
serviceProviderTest.SetGroupVersionKind(schema.GroupVersionKind{
Group: "openmcp.cloud",
Version: "v1alpha1",
Kind: "ServiceProvider",
})

err = platformClient.Get(t.Context(), client.ObjectKey{Name: "test"}, serviceProviderTest)
assert.NoError(t, err)
assert.Equal(t, "test", serviceProviderTest.GetName())

platformServiceTest := &unstructured.Unstructured{}
platformServiceTest.SetGroupVersionKind(schema.GroupVersionKind{
Group: "openmcp.cloud",
Version: "v1alpha1",
Kind: "PlatformService",
})

err = platformClient.Get(t.Context(), client.ObjectKey{Name: "test"}, platformServiceTest)
assert.NoError(t, err)
assert.Equal(t, "test", platformServiceTest.GetName())
}

// CreateGitRepoNormalizer creates a normalizer function that replaces dynamic git repository URLs
Expand Down
9 changes: 4 additions & 5 deletions internal/util/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,25 +58,24 @@ func createCluster(kubeconfigPath, id string, scheme *runtime.Scheme) (*clusters
}

func ApplyManifests(ctx context.Context, cluster *clusters.Cluster, manifests []byte) error {

// Parse manifests into unstructured objects
reader := bytes.NewReader(manifests)
unstructuredObjects, err := parseManifests(reader)
unstructuredObjects, err := ParseManifests(reader)
if err != nil {
return fmt.Errorf("error parsing manifests: %w", err)
}

// Apply objects to the platform cluster
for _, u := range unstructuredObjects {
if err = applyUnstructuredObject(ctx, cluster, u); err != nil {
if err = ApplyUnstructuredObject(ctx, cluster, u); err != nil {
return err
}
}

return nil
}

func parseManifests(reader io.Reader) ([]*unstructured.Unstructured, error) {
func ParseManifests(reader io.Reader) ([]*unstructured.Unstructured, error) {
decoder := yaml.NewYAMLOrJSONDecoder(reader, 4096)
var result []*unstructured.Unstructured
for {
Expand All @@ -96,7 +95,7 @@ func parseManifests(reader io.Reader) ([]*unstructured.Unstructured, error) {
return result, nil
}

func applyUnstructuredObject(ctx context.Context, cluster *clusters.Cluster, u *unstructured.Unstructured) error {
func ApplyUnstructuredObject(ctx context.Context, cluster *clusters.Cluster, u *unstructured.Unstructured) error {
logger := log.GetLogger()
objectKey := client.ObjectKeyFromObject(u)
objectLogString := fmt.Sprintf("%s %s", u.GetObjectKind().GroupVersionKind().String(), objectKey.String())
Expand Down