Skip to content

Commit 79de992

Browse files
author
Oleg Sucharevich
authored
when deleting a runtime-environment delete it from Codefrehs as well
1 parent 09e7644 commit 79de992

File tree

13 files changed

+242
-94
lines changed

13 files changed

+242
-94
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "venona",
3-
"version": "0.7.0",
3+
"version": "0.8.0",
44
"description": "Codefresh agent to run on Codefresh's runtime environment and execute pipeline",
55
"main": "index.js",
66
"scripts": {

venonactl/Gopkg.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

venonactl/Gopkg.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
[[constraint]]
2929
name = "github.com/codefresh-io/go-sdk"
30-
version = "0.3.3"
30+
version = "0.5.0"
3131

3232
[[constraint]]
3333
name = "github.com/hairyhenderson/gomplate"

venonactl/cmd/delete.go

Lines changed: 84 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,105 @@ limitations under the License.
1717
*/
1818

1919
import (
20-
"github.com/codefresh-io/venona/venonactl/internal"
20+
"errors"
21+
"os"
22+
23+
"github.com/codefresh-io/venona/venonactl/pkg/store"
2124
"github.com/sirupsen/logrus"
2225

2326
runtimectl "github.com/codefresh-io/venona/venonactl/pkg/operators"
2427
"github.com/spf13/cobra"
2528
)
2629

30+
type DeletionError struct {
31+
err error
32+
operation string
33+
name string
34+
}
35+
2736
// deleteCmd represents the status command
2837
var deleteCmd = &cobra.Command{
29-
Use: "delete",
38+
Use: "delete [names]",
3039
Short: "Delete a Codefresh's runtime-environment",
40+
Args: func(cmd *cobra.Command, args []string) error {
41+
if len(args) < 1 {
42+
return errors.New("requires name of the runtime-environment")
43+
}
44+
return nil
45+
},
3146
Run: func(cmd *cobra.Command, args []string) {
32-
err := runtimectl.GetOperator(runtimectl.RuntimeEnvironmentOperatorType).Delete()
33-
internal.DieOnError(err)
47+
s := store.GetStore()
48+
var errors []DeletionError
49+
contextName := ""
50+
kubeContextFlag := cmd.Flag("kube-context-name")
51+
if kubeContextFlag != nil {
52+
contextName = kubeContextFlag.Value.String()
53+
}
54+
for _, name := range args {
55+
re, err := s.CodefreshAPI.Client.RuntimeEnvironments().Get(name)
56+
if err != nil {
57+
errors = append(errors, DeletionError{
58+
err: err,
59+
name: name,
60+
operation: "Get Runtime-Environment from Codefresh",
61+
})
62+
continue
63+
}
64+
deleted, err := s.CodefreshAPI.Client.RuntimeEnvironments().Delete(name)
65+
66+
if err != nil {
67+
errors = append(errors, DeletionError{
68+
err: err,
69+
name: name,
70+
operation: "Delete Runtime-Environment from Codefresh",
71+
})
72+
continue
73+
}
74+
75+
if deleted {
76+
if contextName == "" {
77+
contextName = re.RuntimeScheduler.Cluster.ClusterProvider.Selector
78+
}
79+
s.KubernetesAPI.ContextName = contextName
80+
s.KubernetesAPI.Namespace = re.RuntimeScheduler.Cluster.Namespace
81+
err = runtimectl.GetOperator(runtimectl.RuntimeEnvironmentOperatorType).Delete()
82+
if err != nil {
83+
errors = append(errors, DeletionError{
84+
err: err,
85+
name: name,
86+
operation: "Delete Runtime-Environment Kubernetes resoruces",
87+
})
88+
continue
89+
}
90+
if re.Metadata.Agent {
91+
err = runtimectl.GetOperator(runtimectl.VenonaOperatorType).Delete()
92+
if err != nil {
93+
errors = append(errors, DeletionError{
94+
err: err,
95+
name: name,
96+
operation: "Delete Venona's agent Kubernetes resoruces",
97+
})
98+
continue
99+
}
100+
}
101+
logrus.Infof("Deleted %s", name)
102+
}
103+
104+
}
34105

35-
err = runtimectl.GetOperator(runtimectl.VenonaOperatorType).Delete()
36-
internal.DieOnError(err)
106+
if len(errors) > 0 {
107+
for _, e := range errors {
108+
logrus.WithFields(logrus.Fields{
109+
"runtime-environment": e.name,
110+
}).Errorf("Failed during operation %s with error %s", e.operation, e.err.Error())
111+
}
112+
os.Exit(1)
113+
}
37114
logrus.Info("Deletion completed")
38115
},
39116
}
40117

41118
func init() {
42119
rootCmd.AddCommand(deleteCmd)
120+
deleteCmd.Flags().String("kube-context-name", "", "Set name to overwrite the context name saved in Codefresh")
43121
}

venonactl/cmd/install.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121

2222
"github.com/sirupsen/logrus"
23+
"k8s.io/client-go/tools/clientcmd"
2324

2425
"github.com/codefresh-io/venona/venonactl/pkg/store"
2526

@@ -42,8 +43,22 @@ var installCmd = &cobra.Command{
4243
Use: "install",
4344
Short: "Install Codefresh's runtime-environment",
4445
Run: func(cmd *cobra.Command, args []string) {
45-
version := cmd.Flag("venona-version").Value.String()
4646
s := store.GetStore()
47+
48+
kubeContextName := cmd.Flag("kube-context-name").Value.String()
49+
kubeNamespace := cmd.Flag("kube-namespace").Value.String()
50+
51+
if kubeContextName == "" {
52+
config := clientcmd.GetConfigFromFileOrDie(s.KubernetesAPI.ConfigPath)
53+
kubeContextName = config.CurrentContext
54+
logrus.WithFields(logrus.Fields{
55+
"Kube-Context-Name": kubeContextName,
56+
}).Debug("Kube Context is not set, using current context")
57+
}
58+
s.KubernetesAPI.ContextName = kubeContextName
59+
s.KubernetesAPI.Namespace = kubeNamespace
60+
61+
version := cmd.Flag("venona-version").Value.String()
4762
if dryRun == true {
4863
s.DryRun = dryRun
4964
logrus.Info("Running in dry-run mode")
@@ -86,6 +101,8 @@ func init() {
86101
installCmd.Flags().String("runtime-environment", "", "if --skip-runtime-installation set, will try to configure venona on current runtime-environment")
87102
installCmd.Flags().BoolVar(&installOnlyRuntimeEnvironment, "only-runtime-environment", false, "Set to true to onlky configure namespace as runtime-environment for Codefresh")
88103
installCmd.Flags().BoolVar(&dryRun, "dry-run", false, "Set to true to simulate installation")
104+
installCmd.Flags().String("kube-namespace", "default", "Name of the namespace on which venona should be installed")
105+
installCmd.Flags().String("kube-context-name", "", "Name of the kubernetes context on which venona should be installed (default is current-context)")
89106
}
90107

91108
func installRuntimeEnvironment() {

venonactl/cmd/root.go

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
"github.com/codefresh-io/venona/venonactl/pkg/certs"
3535
"github.com/codefresh-io/venona/venonactl/pkg/store"
3636
"github.com/spf13/cobra"
37-
"k8s.io/client-go/tools/clientcmd"
3837
)
3938

4039
var verbose bool
@@ -79,27 +78,6 @@ var rootCmd = &cobra.Command{
7978
Host: context.URL,
8079
})
8180

82-
kubeContextName := cmd.Flag("kube-context-name").Value.String()
83-
kubeConfigPath := cmd.Flag("kube-config-path").Value.String()
84-
kubeNamespace := cmd.Flag("kube-namespace").Value.String()
85-
86-
if kubeConfigPath == "" {
87-
currentUser, _ := user.Current()
88-
kubeConfigPath = path.Join(currentUser.HomeDir, ".kube", "config")
89-
logrus.WithFields(logrus.Fields{
90-
"Kube-Config-Path": kubeConfigPath,
91-
}).Debug("Path to kubeconfig not set, using default")
92-
}
93-
94-
if kubeContextName == "" {
95-
config := clientcmd.GetConfigFromFileOrDie(kubeConfigPath)
96-
kubeContextName = config.CurrentContext
97-
logrus.WithFields(logrus.Fields{
98-
"Kube-Config-Path": kubeConfigPath,
99-
"Kube-Context-Name": kubeContextName,
100-
}).Debug("Kube Context is not set, using current context")
101-
}
102-
10381
s := store.GetStore()
10482
s.Version = &store.Version{
10583
Current: &store.CurrentVersion{
@@ -139,11 +117,20 @@ var rootCmd = &cobra.Command{
139117
}).Info("New version is avaliable, please update")
140118
}
141119
}
120+
121+
kubeConfigPath := cmd.Flag("kube-config-path").Value.String()
122+
123+
if kubeConfigPath == "" {
124+
currentUser, _ := user.Current()
125+
kubeConfigPath = path.Join(currentUser.HomeDir, ".kube", "config")
126+
logrus.WithFields(logrus.Fields{
127+
"Kube-Config-Path": kubeConfigPath,
128+
}).Debug("Path to kubeconfig not set, using default")
129+
}
130+
142131
s.AppName = store.ApplicationName
143132
s.KubernetesAPI = &store.KubernetesAPI{
144-
Namespace: kubeNamespace,
145-
ConfigPath: kubeConfigPath,
146-
ContextName: kubeContextName,
133+
ConfigPath: kubeConfigPath,
147134
}
148135
s.ClusterInCodefresh = clusterName
149136
s.CodefreshAPI = &store.CodefreshAPI{
@@ -172,9 +159,7 @@ func init() {
172159

173160
rootCmd.PersistentFlags().String("cfconfig", viper.GetString("cfconfig"), "Config file (default is $HOME/.cfconfig) [$CFCONFIG]")
174161
rootCmd.PersistentFlags().String("context", "", "Name of the context from --cfconfig (default is current-context)")
175-
rootCmd.PersistentFlags().String("kube-context-name", "", "Name of the kubernetes context (default is current-context)")
176162
rootCmd.PersistentFlags().String("kube-config-path", viper.GetString("kubeconfig"), "Path to kubeconfig file (default is $HOME/.kube/config) [$KUBECONFIG]")
177-
rootCmd.PersistentFlags().String("kube-namespace", "default", "Name of the namespace on which venona should be installed")
178163
rootCmd.PersistentFlags().BoolVar(&verbose, "verbose", false, "Print logs")
179164
rootCmd.PersistentFlags().BoolVar(&skipVerionCheck, "skip-version-check", false, "Do not compare current Venona's version with latest")
180165

venonactl/cmd/status.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,19 @@ var statusCmd = &cobra.Command{
3838
Run: func(cmd *cobra.Command, args []string) {
3939
s := store.GetStore()
4040
table := internal.CreateTable()
41-
41+
contextName := ""
42+
kubeContextFlag := cmd.Flag("kube-context-name")
43+
if kubeContextFlag != nil {
44+
contextName = kubeContextFlag.Value.String()
45+
}
4246
// When requested status for specific runtime
4347
if len(args) > 0 {
4448
name := args[0]
45-
re, err := s.CodefreshAPI.Client.GetRuntimeEnvironment(name)
49+
re, err := s.CodefreshAPI.Client.RuntimeEnvironments().Get(name)
4650
internal.DieOnError(err)
51+
if re == nil {
52+
internal.DieOnError(fmt.Errorf("Runtime-Environment %s not found", name))
53+
}
4754
if re.Metadata.Agent == true {
4855
table.SetHeader([]string{"Runtime Name", "Last Message", "Reported"})
4956
message := "Not reported any message yet"
@@ -55,15 +62,15 @@ var statusCmd = &cobra.Command{
5562
table.Append([]string{re.Metadata.Name, message, time})
5663
table.Render()
5764
fmt.Println()
58-
printTableWithKubernetesRelatedResources(re)
65+
printTableWithKubernetesRelatedResources(re, contextName)
5966
} else {
60-
logrus.Warnf("%s has not Venona's agent", re.Metadata.Name)
67+
logrus.Warnf("Runtime-Environment %s has not Venona's agent", name)
6168
}
6269
return
6370
}
6471

6572
// When requested status for all runtimes
66-
res, err := s.CodefreshAPI.Client.GetRuntimeEnvironments()
73+
res, err := s.CodefreshAPI.Client.RuntimeEnvironments().List()
6774
internal.DieOnError(err)
6875
table.SetHeader([]string{"Runtime Name", "Last Message", "Reported"})
6976
for _, re := range res {
@@ -84,12 +91,15 @@ var statusCmd = &cobra.Command{
8491
},
8592
}
8693

87-
func printTableWithKubernetesRelatedResources(re *codefresh.RuntimeEnvironment) {
94+
func printTableWithKubernetesRelatedResources(re *codefresh.RuntimeEnvironment, context string) {
8895
table := internal.CreateTable()
8996
table.SetHeader([]string{"Kind", "Name", "Status"})
9097
s := store.GetStore()
9198
if re.RuntimeScheduler.Cluster.Namespace != "" {
92-
s.KubernetesAPI.ContextName = re.RuntimeScheduler.Cluster.ClusterProvider.Selector
99+
if context == "" {
100+
context = re.RuntimeScheduler.Cluster.ClusterProvider.Selector
101+
}
102+
s.KubernetesAPI.ContextName = context
93103
s.KubernetesAPI.Namespace = re.RuntimeScheduler.Cluster.Namespace
94104

95105
rows, err := runtimectl.GetOperator(runtimectl.RuntimeEnvironmentOperatorType).Status()
@@ -104,4 +114,5 @@ func printTableWithKubernetesRelatedResources(re *codefresh.RuntimeEnvironment)
104114

105115
func init() {
106116
rootCmd.AddCommand(statusCmd)
117+
statusCmd.Flags().String("kube-context-name", "", "Set name to overwrite the context name saved in Codefresh")
107118
}

venonactl/pkg/codefresh/cfapi.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func (u *CfAPI) Validate() error {
6161
} else {
6262
opt.Cluster = s.KubernetesAPI.ContextName
6363
}
64-
err := cf.ValidateRuntimeEnvironment(opt)
64+
err := cf.RuntimeEnvironments().Validate(opt)
6565

6666
if err != nil {
6767
return fmt.Errorf("Validation failed with error: %s", err.Error())
@@ -90,7 +90,7 @@ func (u *CfAPI) Sign() error {
9090
certExtraSANs = "IP:127.0.0.1,DNS:*.cf-cd.com,DNS:*.codefresh.io"
9191
}
9292
logrus.Debugf("certExtraSANs = %s", certExtraSANs)
93-
byteArray, err := store.GetStore().CodefreshAPI.Client.SignRuntimeEnvironmentCertificate(&codefresh.SignCertificatesOptions{
93+
byteArray, err := store.GetStore().CodefreshAPI.Client.RuntimeEnvironments().SignCertificate(&codefresh.SignCertificatesOptions{
9494
AltName: certExtraSANs,
9595
CSR: serverCert.Csr,
9696
})
@@ -157,7 +157,7 @@ func (u *CfAPI) Register() error {
157157
"Options-Cluster": options.Cluster,
158158
"Options-Namespace": options.Namespace,
159159
}).Debug("Registering runtime environmnet")
160-
re, err := cf.CreateRuntimeEnvironment(options)
160+
re, err := cf.RuntimeEnvironments().Create(options)
161161

162162
if err != nil {
163163
return err

venonactl/pkg/operators/venona.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (u *venonaOperator) Install() error {
4646
logrus.Debug("Generating token for agent")
4747
tokenName := fmt.Sprintf("generated-%s", time.Now().Format("20060102150405"))
4848
logrus.Debugf("Token candidate name: %s", tokenName)
49-
token, err := s.CodefreshAPI.Client.GenerateToken(tokenName, s.RuntimeEnvironment)
49+
token, err := s.CodefreshAPI.Client.Tokens().Create(tokenName, s.RuntimeEnvironment)
5050
if err != nil {
5151
logrus.Error(err.Error())
5252
return err

venonactl/vendor/github.com/codefresh-io/go-sdk/pkg/codefresh/codefresh.go

Lines changed: 18 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)