Skip to content

Commit

Permalink
Merge pull request #94 from kndpio/93-configuration-and-registry-dele…
Browse files Browse the repository at this point in the history
…te-commands-do-not-update-engine-helm-release

updated registry and configs delete to be removed from engine
  • Loading branch information
evghen1 authored Mar 29, 2024
2 parents 31c96b2 + cf77e56 commit 73ccbce
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 24 deletions.
23 changes: 4 additions & 19 deletions cmd/kndp/configuration/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,17 @@ package configuration
import (
"context"

"github.com/kndpio/kndp/internal/kube"
"github.com/kndpio/kndp/internal/configuration"

"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest"

"github.com/charmbracelet/log"
)

type deleteCmd struct {
ConfigurationName string `arg:"" required:"" help:"Specifies the name of configuration to be deleted from Environment."`
ConfigurationURL string `arg:"" required:"" help:"Specifies the URL of configuration to be deleted from Environment."`
}

func (c *deleteCmd) Run(ctx context.Context, config *rest.Config, dynamicClient *dynamic.DynamicClient, logger *log.Logger) error {
var params = kube.ResourceParams{
Dynamic: dynamicClient,
Ctx: ctx,
Group: "pkg.crossplane.io",
Version: "v1",
Resource: "configurations",
Namespace: "",
}
err := kube.DeleteKubeResources(ctx, params, c.ConfigurationName)
if err != nil {
logger.Error(err)
} else {
logger.Info("Configuration deleted succesfully.")
}
return nil
func (c *deleteCmd) Run(ctx context.Context, config *rest.Config, logger *log.Logger) error {
return configuration.DeleteConfiguration(c.ConfigurationURL, config, logger)
}
6 changes: 3 additions & 3 deletions cmd/kndp/registry/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import (

"github.com/charmbracelet/log"
"github.com/kndpio/kndp/internal/registry"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)

type deleteCmd struct {
Name string `required:"" help:"Registry name."`
}

func (c deleteCmd) Run(ctx context.Context, client *kubernetes.Clientset, logger *log.Logger) error {
func (c deleteCmd) Run(ctx context.Context, config *rest.Config, logger *log.Logger) error {
reg := registry.Registry{}
reg.Name = c.Name
err := reg.Delete(ctx, client)
err := reg.Delete(ctx, config, logger)
if err != nil {
logger.Error(err)
} else {
Expand Down
2 changes: 1 addition & 1 deletion internal/configuration/apply.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ func ApplyConfiguration(Link string, config *rest.Config, logger *log.Logger) {
logger.Errorf(" %v\n", err)
}

logger.Info("KNDP configuration applied successfully.")
logger.Info("Configuration applied successfully.")

}
51 changes: 51 additions & 0 deletions internal/configuration/delete.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package configuration

import (
"github.com/charmbracelet/log"

"k8s.io/client-go/rest"

"github.com/kndpio/kndp/internal/engine"
)

func DeleteConfiguration(url string, config *rest.Config, logger *log.Logger) error {

installer, err := engine.GetEngine(config)
if err != nil {
logger.Errorf(" %v\n", err)
}

release, _ := installer.GetRelease()

if release.Config == nil || release.Config["configuration"] == nil {
logger.Warn("Not found any applied configuration.")
} else {
configs := release.Config["configuration"].(map[string]interface{})
oldPackages := configs["packages"].([]interface{})

newPackages := []interface{}{}
for _, config := range oldPackages {
if config != url {
newPackages = append(
newPackages,
config,
)
}
}
release.Config["configuration"] = map[string]interface{}{
"packages": newPackages,
}
if len(oldPackages) == len(newPackages) {
logger.Warn("Configuration URL not found applied configurations.")
return nil
}
}

err = installer.Upgrade("", release.Config)
if err != nil {
return err
}

logger.Info("Configuration removed successfully.")
return nil
}
40 changes: 39 additions & 1 deletion internal/registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,45 @@ func (r *Registry) ToSecret() *corev1.Secret {
json.Unmarshal(rJson, &sec)
return &sec
}
func (r *Registry) Delete(ctx context.Context, client *kubernetes.Clientset) error {
func (r *Registry) Delete(ctx context.Context, config *rest.Config, logger *log.Logger) error {

installer, err := engine.GetEngine(config)
if err != nil {
logger.Errorf(" %v\n", err)
}

release, _ := installer.GetRelease()

if release.Config == nil || release.Config["imagePullSecrets"] == nil {
logger.Warn("Not found any registry in context.")
} else {
oldRegistries := release.Config["imagePullSecrets"].([]interface{})

newRegistries := []interface{}{}
for _, reg := range oldRegistries {
if reg != r.Name {
newRegistries = append(
newRegistries,
reg,
)
}
}
release.Config["imagePullSecrets"] = newRegistries
if len(oldRegistries) == len(newRegistries) {
logger.Warn("Configuration URL not found applied configurations.")
return nil
}

err = installer.Upgrade("", release.Config)
if err != nil {
return err
}
}

client, err := kube.Client(config)
if err != nil {
return err
}
return secretClient(client).Delete(ctx, r.Name, metav1.DeleteOptions{})
}

Expand Down

0 comments on commit 73ccbce

Please sign in to comment.