Skip to content
This repository has been archived by the owner on Apr 29, 2024. It is now read-only.

Commit

Permalink
fix: delete orbiter deployment before destroying
Browse files Browse the repository at this point in the history
  • Loading branch information
eliobischof committed Jan 28, 2020
1 parent e119e50 commit 547a35c
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 21 deletions.
27 changes: 20 additions & 7 deletions internal/operator/orbiter/kinds/clusters/kubernetes/adapt.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package kubernetes

import (
"os"

"github.com/pkg/errors"

"github.com/caos/orbiter/internal/operator/common"
"github.com/caos/orbiter/internal/operator/orbiter"
"github.com/caos/orbiter/internal/operator/orbiter/kinds/clusters/kubernetes/edge/k8s"
"github.com/caos/orbiter/logging"
)

Expand Down Expand Up @@ -34,10 +37,10 @@ func AdaptFunc(
}
desiredTree.Parsed = desiredKind

/* if err := desiredKind.validate(); err != nil {
return nil, nil, nil, migrate, err
}
*/
if err := desiredKind.validate(); err != nil {
return nil, nil, nil, migrate, err
}

if desiredKind.Spec.Verbose && !logger.IsVerbose() {
logger = logger.Verbose()
}
Expand All @@ -55,8 +58,14 @@ func AdaptFunc(
secretsKind.Secrets.Kubeconfig = &orbiter.Secret{Masterkey: orb.Masterkey}
}

if deployOrbiterAndBoom && secretsKind.Secrets.Kubeconfig.Value != "" {
if err := ensureArtifacts(logger, secretsKind.Secrets.Kubeconfig, orb, oneoff, desiredKind.Spec.Versions.Orbiter, desiredKind.Spec.Versions.Boom); err != nil {
var kc *string
if secretsKind.Secrets.Kubeconfig.Value != "" {
kc = &secretsKind.Secrets.Kubeconfig.Value
}
k8sClient := k8s.New(logger, kc)

if k8sClient.Available() && deployOrbiterAndBoom && oneoff {
if err := ensureArtifacts(logger, k8sClient, orb, desiredKind.Spec.Versions.Orbiter, desiredKind.Spec.Versions.Boom); err != nil {
deployErrors++
logger.WithFields(map[string]interface{}{
"count": deployErrors,
Expand All @@ -67,6 +76,10 @@ func AdaptFunc(
}
} else {
deployErrors = 0
if oneoff {
logger.Info("Deployed Orbiter takes over control")
os.Exit(0)
}
}
}

Expand Down Expand Up @@ -111,7 +124,7 @@ func AdaptFunc(
return err
}

return destroy(providers, secretsKind.Secrets.Kubeconfig)
return destroy(logger, providers, k8sClient, secretsKind.Secrets.Kubeconfig)
}, map[string]*orbiter.Secret{
"kubeconfig": secretsKind.Secrets.Kubeconfig,
}, migrate, nil
Expand Down
14 changes: 1 addition & 13 deletions internal/operator/orbiter/kinds/clusters/kubernetes/artifacts.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package kubernetes

import (
"fmt"
"os"

"gopkg.in/yaml.v2"
apps "k8s.io/api/apps/v1"
Expand All @@ -15,19 +14,13 @@ import (
"github.com/caos/orbiter/logging"
)

func ensureArtifacts(logger logging.Logger, kubeconfig *orbiter.Secret, orb *orbiter.Orb, oneoff bool, orbiterversion string, boomversion string) error {
func ensureArtifacts(logger logging.Logger, client *k8s.Client, orb *orbiter.Orb, orbiterversion string, boomversion string) error {

logger.WithFields(map[string]interface{}{
"orbiter": orbiterversion,
"boom": boomversion,
}).Debug("Ensuring artifacts")

if orbiterversion == "" && boomversion == "" || kubeconfig == nil || kubeconfig.Value == "" {
return nil
}

client := k8s.New(logger, &kubeconfig.Value)

orbfile, err := yaml.Marshal(orb)
if err != nil {
return err
Expand Down Expand Up @@ -136,11 +129,6 @@ func ensureArtifacts(logger logging.Logger, kubeconfig *orbiter.Secret, orb *orb
"version": orbiterversion,
}).Debug("Orbiter deployment ensured")

if oneoff {
logger.Info("Deployed Orbiter takes over control")
os.Exit(0)
}

}

if boomversion == "" {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,16 @@ package kubernetes
import (
"github.com/caos/orbiter/internal/operator/orbiter"
"github.com/caos/orbiter/internal/operator/orbiter/kinds/clusters/core/infra"
"github.com/caos/orbiter/internal/operator/orbiter/kinds/clusters/kubernetes/edge/k8s"
"github.com/caos/orbiter/logging"
)

func destroy(providerCurrents map[string]interface{}, kubeconfig *orbiter.Secret) error {
func destroy(logger logging.Logger, providerCurrents map[string]interface{}, k8sClient *k8s.Client, kubeconfig *orbiter.Secret) error {

if k8sClient.Available() {
k8sClient.DeleteDeployment("caos-system", "orbiter")
}

for _, provider := range providerCurrents {
prov := provider.(infra.ProviderCurrent)
for _, pool := range prov.Pools() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ func (c *Client) ApplyDeployment(rsc *apps.Deployment) error {
})
}

func (c *Client) DeleteDeployment(namespace, name string) error {
return c.set.AppsV1().Deployments(namespace).Delete(name, &mach.DeleteOptions{})
}

func (c *Client) ApplySecret(rsc *core.Secret) error {
resources := c.set.CoreV1().Secrets(rsc.GetNamespace())
return c.apply("secret", rsc.GetName(), func() error {
Expand Down

0 comments on commit 547a35c

Please sign in to comment.