Skip to content

Commit 56e988e

Browse files
author
Oleg Sucharevich
authored
code refactor
move out the dependency on store from inner packages add new logger, removed logrus more...
1 parent 8e7f54c commit 56e988e

21 files changed

+428
-343
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ yarn-error.log
1414
.idea/*
1515
telepresence.log
1616
venonactl/dist/*
17+
venonalog.json

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.17.2",
3+
"version": "0.18.0",
44
"description": "Codefresh agent to run on Codefresh's runtime environment and execute pipeline",
55
"main": "index.js",
66
"scripts": {

venonactl/cmd/cmdutils.go

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ import (
1010
"github.com/codefresh-io/go-sdk/pkg/codefresh"
1111
sdkUtils "github.com/codefresh-io/go-sdk/pkg/utils"
1212
"github.com/codefresh-io/venona/venonactl/pkg/certs"
13+
"github.com/codefresh-io/venona/venonactl/pkg/kube"
14+
"github.com/codefresh-io/venona/venonactl/pkg/logger"
1315
"github.com/codefresh-io/venona/venonactl/pkg/plugins"
1416
"github.com/codefresh-io/venona/venonactl/pkg/store"
1517
"github.com/olekukonko/tablewriter"
16-
"github.com/sirupsen/logrus"
1718
)
1819

1920
var (
@@ -36,7 +37,7 @@ var (
3637
skipVerionCheck bool
3738
)
3839

39-
func buildBasicStore() {
40+
func buildBasicStore(logger logger.Logger) {
4041
s := store.GetStore()
4142
s.Version = &store.Version{
4243
Current: &store.CurrentVersion{
@@ -62,13 +63,10 @@ func buildBasicStore() {
6263
IsDefault: true,
6364
}
6465
s.Version.Latest = latestVersion
65-
logrus.WithFields(logrus.Fields{
66-
"Default-Version": store.DefaultVersion,
67-
"Image-Tag": s.Version.Current.Version,
68-
}).Debug("Skipping version check")
66+
logger.Debug("Skipping version check")
6967
} else {
7068
latestVersion := &store.LatestVersion{
71-
Version: store.GetLatestVersion(),
69+
Version: store.GetLatestVersion(logger),
7270
IsDefault: false,
7371
}
7472
s.Image.Tag = latestVersion.Version
@@ -77,15 +75,14 @@ func buildBasicStore() {
7775
// the local version and the latest version not match
7876
// make sure the command is no venonactl version
7977
if !res {
80-
logrus.WithFields(logrus.Fields{
81-
"Local-Version": s.Version.Current.Version,
82-
"Latest-Version": s.Version.Latest.Version,
83-
}).Info("New version is avaliable, please update")
78+
logger.Info("New version is avaliable, please update",
79+
"Local-Version", s.Version.Current.Version,
80+
"Latest-Version", s.Version.Latest.Version)
8481
}
8582
}
8683
}
8784

88-
func extendStoreWithCodefershClient() error {
85+
func extendStoreWithCodefershClient(logger logger.Logger) error {
8986
s := store.GetStore()
9087
if configPath == "" {
9188
configPath = fmt.Sprintf("%s/.cfconfig", os.Getenv("HOME"))
@@ -98,13 +95,9 @@ func extendStoreWithCodefershClient() error {
9895
}
9996
cfAPIHost = context.URL
10097
cfAPIToken = context.Token
101-
102-
logrus.WithFields(logrus.Fields{
103-
"Context-Name": context.Name,
104-
"Codefresh-Host": cfAPIHost,
105-
}).Debug("Using codefresh context")
98+
logger.Debug("Using codefresh context", "Context-Name", context.Name, "Host", cfAPIHost)
10699
} else {
107-
logrus.Debug("Using creentials from environment variables")
100+
logger.Debug("Reading creentials from environment variables")
108101
}
109102

110103
client := codefresh.New(&codefresh.ClientOptions{
@@ -122,15 +115,13 @@ func extendStoreWithCodefershClient() error {
122115
return nil
123116
}
124117

125-
func extendStoreWithKubeClient() {
118+
func extendStoreWithKubeClient(logger logger.Logger) {
126119
s := store.GetStore()
127120
if kubeConfigPath == "" {
128121
currentUser, _ := user.Current()
129122
if currentUser != nil {
130123
kubeConfigPath = path.Join(currentUser.HomeDir, ".kube", "config")
131-
logrus.WithFields(logrus.Fields{
132-
"Kube-Config-Path": kubeConfigPath,
133-
}).Debug("Path to kubeconfig not set, using default")
124+
logger.Debug("Path to kubeconfig not set, using default")
134125
}
135126
}
136127

@@ -139,12 +130,6 @@ func extendStoreWithKubeClient() {
139130
}
140131
}
141132

142-
func prepareLogger() {
143-
if verbose == true {
144-
logrus.SetLevel(logrus.DebugLevel)
145-
}
146-
}
147-
148133
func isUsingDefaultStorageClass(sc string) bool {
149134
if sc == "" {
150135
return true
@@ -154,7 +139,7 @@ func isUsingDefaultStorageClass(sc string) bool {
154139

155140
func dieOnError(err error) {
156141
if err != nil {
157-
logrus.Error(err)
142+
fmt.Printf("Error: %s", err.Error())
158143
os.Exit(1)
159144
}
160145
}
@@ -170,3 +155,22 @@ func createTable() *tablewriter.Table {
170155
table.SetColWidth(100)
171156
return table
172157
}
158+
159+
func getKubeClientBuilder(context string, namespace string, path string, inCluster bool) kube.Kube {
160+
return kube.New(&kube.Options{
161+
ContextName: context,
162+
Namespace: namespace,
163+
PathToKubeConfig: path,
164+
InCluster: inCluster,
165+
})
166+
}
167+
168+
func createLogger(command string, verbose bool) logger.Logger {
169+
logFile := "venonalog.json"
170+
os.Remove(logFile)
171+
return logger.New(&logger.Options{
172+
Command: command,
173+
Verbose: verbose,
174+
LogToFile: logFile,
175+
})
176+
}

venonactl/cmd/delete.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ limitations under the License.
1818

1919
import (
2020
"errors"
21+
"fmt"
2122
"os"
2223

2324
"github.com/codefresh-io/venona/venonactl/pkg/store"
24-
"github.com/sirupsen/logrus"
2525

2626
"github.com/codefresh-io/venona/venonactl/pkg/plugins"
2727
"github.com/spf13/cobra"
@@ -53,14 +53,14 @@ var deleteCmd = &cobra.Command{
5353
},
5454
Run: func(cmd *cobra.Command, args []string) {
5555
s := store.GetStore()
56-
prepareLogger()
57-
buildBasicStore()
58-
extendStoreWithCodefershClient()
59-
extendStoreWithKubeClient()
56+
lgr := createLogger("Delete", verbose)
57+
buildBasicStore(lgr)
58+
extendStoreWithCodefershClient(lgr)
59+
extendStoreWithKubeClient(lgr)
6060
var errors []DeletionError
6161
s.KubernetesAPI.InCluster = deleteCmdOptions.kube.inCluster
6262
for _, name := range args {
63-
builder := plugins.NewBuilder()
63+
builder := plugins.NewBuilder(lgr)
6464

6565
re, err := s.CodefreshAPI.Client.RuntimeEnvironments().Get(name)
6666
errors = collectError(errors, err, name)
@@ -71,7 +71,7 @@ var deleteCmd = &cobra.Command{
7171
}
7272
deleted, err := s.CodefreshAPI.Client.RuntimeEnvironments().Delete(name)
7373
errors = collectError(errors, err, name)
74-
74+
deleteOptions := &plugins.DeleteOptions{}
7575
if deleted {
7676
contextName := re.RuntimeScheduler.Cluster.ClusterProvider.Selector
7777
if contextName != "" {
@@ -89,25 +89,25 @@ var deleteCmd = &cobra.Command{
8989
builder.Add(plugins.VenonaPluginType)
9090
}
9191

92+
deleteOptions.KubeBuilder = getKubeClientBuilder(contextName, s.KubernetesAPI.Namespace, s.KubernetesAPI.ConfigPath, s.KubernetesAPI.InCluster)
93+
deleteOptions.ClusterNamespace = re.RuntimeScheduler.Cluster.Namespace
9294
for _, p := range builder.Get() {
93-
err := p.Delete(nil)
95+
err := p.Delete(deleteOptions, s.BuildValues())
9496
collectError(errors, err, name)
9597
}
9698

97-
logrus.Infof("Deleted %s", name)
99+
lgr.Info("Deletion completed", "Name", name)
98100
}
99101

100102
}
101103

102104
if len(errors) > 0 {
103105
for _, e := range errors {
104-
logrus.WithFields(logrus.Fields{
105-
"runtime-environment": e.name,
106-
}).Errorf("Failed during operation %s with error %s", e.operation, e.err.Error())
106+
lgr.Error(fmt.Sprintf("Error %s", e.err.Error()), "Name", e.name, "Operation", e.operation)
107107
}
108108
os.Exit(1)
109109
}
110-
logrus.Info("Deletion completed")
110+
lgr.Info("Deletion completed")
111111
},
112112
}
113113

venonactl/cmd/install.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ limitations under the License.
1919
import (
2020
"fmt"
2121

22-
"github.com/sirupsen/logrus"
2322
"k8s.io/client-go/tools/clientcmd"
2423

2524
"github.com/codefresh-io/venona/venonactl/pkg/store"
@@ -53,21 +52,21 @@ var installCmd = &cobra.Command{
5352
Short: "Install Codefresh's runtime-environment",
5453
Run: func(cmd *cobra.Command, args []string) {
5554
s := store.GetStore()
56-
prepareLogger()
57-
buildBasicStore()
58-
extendStoreWithCodefershClient()
59-
extendStoreWithKubeClient()
55+
lgr := createLogger("Install", verbose)
56+
buildBasicStore(lgr)
57+
extendStoreWithCodefershClient(lgr)
58+
extendStoreWithKubeClient(lgr)
6059

61-
builder := plugins.NewBuilder()
60+
builder := plugins.NewBuilder(lgr)
6261
isDefault := isUsingDefaultStorageClass(installCmdOptions.storageClass)
6362

6463
builderInstallOpt := &plugins.InstallOptions{
6564
CodefreshHost: s.CodefreshAPI.Host,
6665
CodefreshToken: s.CodefreshAPI.Token,
67-
ClusterNamespace: s.KubernetesAPI.Namespace,
6866
MarkAsDefault: installCmdOptions.setDefaultRuntime,
6967
StorageClass: installCmdOptions.storageClass,
7068
IsDefaultStorageClass: isDefault,
69+
DryRun: installCmdOptions.dryRun,
7170
}
7271
if isDefault {
7372
builderInstallOpt.StorageClass = plugins.DefaultStorageClassNamePrefix
@@ -76,9 +75,7 @@ var installCmd = &cobra.Command{
7675
if installCmdOptions.kube.context == "" {
7776
config := clientcmd.GetConfigFromFileOrDie(s.KubernetesAPI.ConfigPath)
7877
installCmdOptions.kube.context = config.CurrentContext
79-
logrus.WithFields(logrus.Fields{
80-
"Kube-Context-Name": installCmdOptions.kube.context,
81-
}).Debug("Kube Context is not set, using current context")
78+
lgr.Debug("Kube Context is not set, using current context", "Kube-Context-Name", installCmdOptions.kube.context)
8279
}
8380
if installCmdOptions.kube.namespace == "" {
8481
installCmdOptions.kube.namespace = "default"
@@ -91,13 +88,11 @@ var installCmd = &cobra.Command{
9188

9289
if installCmdOptions.dryRun {
9390
s.DryRun = installCmdOptions.dryRun
94-
logrus.Info("Running in dry-run mode")
91+
lgr.Info("Running in dry-run mode")
9592
}
9693
if installCmdOptions.venona.version != "" {
9794
version := installCmdOptions.venona.version
98-
logrus.WithFields(logrus.Fields{
99-
"venona-Version": version,
100-
}).Info("venona version set by user")
95+
lgr.Info("Version set manually", "version", version)
10196
s.Image.Tag = version
10297
s.Version.Latest.Version = version
10398
}
@@ -112,7 +107,7 @@ var installCmd = &cobra.Command{
112107
dieOnError(fmt.Errorf("runtime-environment flag is required when using flag skip-runtime-installation"))
113108
}
114109
s.RuntimeEnvironment = installCmdOptions.runtimeEnvironmentName
115-
logrus.Info("Skipping installation of runtime environment, installing venona only")
110+
lgr.Info("Skipping installation of runtime environment, installing venona only")
116111
builder.Add(plugins.VenonaPluginType)
117112
} else {
118113
builder.
@@ -122,7 +117,7 @@ var installCmd = &cobra.Command{
122117
if isDefault {
123118
builder.Add(plugins.VolumeProvisionerPluginType)
124119
} else {
125-
logrus.Info("Custom StorageClass is set, skipping installation of default volume provisioner")
120+
lgr.Info("Custom StorageClass is set, skipping installation of default volume provisioner")
126121
}
127122

128123
builderInstallOpt.ClusterName = s.KubernetesAPI.ContextName
@@ -131,13 +126,18 @@ var installCmd = &cobra.Command{
131126
builderInstallOpt.ClusterName = s.ClusterInCodefresh
132127
builderInstallOpt.RegisterWithAgent = false
133128
}
129+
builderInstallOpt.KubeBuilder = getKubeClientBuilder(builderInstallOpt.ClusterName, s.KubernetesAPI.Namespace, s.KubernetesAPI.ConfigPath, s.KubernetesAPI.InCluster)
130+
builderInstallOpt.ClusterNamespace = s.KubernetesAPI.Namespace
134131

132+
values := s.BuildValues()
133+
var err error
135134
for _, p := range builder.Get() {
136-
if err := p.Install(builderInstallOpt); err != nil {
135+
values, err = p.Install(builderInstallOpt, values)
136+
if err != nil {
137137
dieOnError(err)
138138
}
139139
}
140-
logrus.Info("Installation completed Successfully\n")
140+
lgr.Info("Installation completed Successfully")
141141
},
142142
}
143143

venonactl/cmd/status.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ limitations under the License.
1919
import (
2020
"fmt"
2121

22-
"github.com/sirupsen/logrus"
23-
2422
"github.com/codefresh-io/go-sdk/pkg/codefresh"
23+
"github.com/codefresh-io/venona/venonactl/pkg/logger"
2524
"github.com/codefresh-io/venona/venonactl/pkg/plugins"
2625
"github.com/codefresh-io/venona/venonactl/pkg/store"
2726
humanize "github.com/dustin/go-humanize"
@@ -42,11 +41,11 @@ var statusCmd = &cobra.Command{
4241
Short: "Get status of Codefresh's runtime-environment",
4342
Long: "Pass the name of the runtime environment to see more details information about the underlying resources",
4443
Run: func(cmd *cobra.Command, args []string) {
45-
prepareLogger()
46-
buildBasicStore()
47-
extendStoreWithCodefershClient()
48-
extendStoreWithKubeClient()
44+
lgr := createLogger("Status", verbose)
4945

46+
buildBasicStore(lgr)
47+
extendStoreWithCodefershClient(lgr)
48+
extendStoreWithKubeClient(lgr)
5049
s := store.GetStore()
5150
table := createTable()
5251
// When requested status for specific runtime
@@ -68,9 +67,9 @@ var statusCmd = &cobra.Command{
6867
table.Append([]string{re.Metadata.Name, message, time})
6968
table.Render()
7069
fmt.Println()
71-
printTableWithKubernetesRelatedResources(re, statusCmdOpt.kube.context)
70+
printTableWithKubernetesRelatedResources(re, statusCmdOpt.kube.context, lgr)
7271
} else {
73-
logrus.Warnf("Runtime-Environment %s has not Venona's agent", name)
72+
lgr.Debug("Runtime-Environment has not Venona's agent", "Name", name)
7473
}
7574
return
7675
}
@@ -97,8 +96,8 @@ var statusCmd = &cobra.Command{
9796
},
9897
}
9998

100-
func printTableWithKubernetesRelatedResources(re *codefresh.RuntimeEnvironment, context string) {
101-
builder := plugins.NewBuilder()
99+
func printTableWithKubernetesRelatedResources(re *codefresh.RuntimeEnvironment, context string, logger logger.Logger) {
100+
builder := plugins.NewBuilder(logger)
102101

103102
table := createTable()
104103
table.SetHeader([]string{"Kind", "Name", "Status"})
@@ -113,9 +112,12 @@ func printTableWithKubernetesRelatedResources(re *codefresh.RuntimeEnvironment,
113112
Add(plugins.RuntimeEnvironmentPluginType).
114113
Add(plugins.VenonaPluginType).
115114
Add(plugins.VolumeProvisionerPluginType)
116-
115+
statusOpt := &plugins.StatusOptions{
116+
KubeBuilder: getKubeClientBuilder(context, re.RuntimeScheduler.Cluster.Namespace, s.KubernetesAPI.ConfigPath, s.KubernetesAPI.InCluster),
117+
ClusterNamespace: s.KubernetesAPI.Namespace,
118+
}
117119
for _, p := range builder.Get() {
118-
rows, err := p.Status(nil)
120+
rows, err := p.Status(statusOpt, s.BuildValues())
119121
dieOnError(err)
120122
table.AppendBulk(rows)
121123
}

0 commit comments

Comments
 (0)