Skip to content

Commit 97890ad

Browse files
Saas 6078 (#101)
* create ns if not exists (lazy)
1 parent d50a95d commit 97890ad

File tree

8 files changed

+47
-3
lines changed

8 files changed

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

venonactl/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.5
1+
1.0.6

venonactl/pkg/kube/kube.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
package kube
22

33
import (
4+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
v1Core "k8s.io/api/core/v1"
46
"k8s.io/client-go/kubernetes"
57
"k8s.io/client-go/rest"
68
"k8s.io/client-go/tools/clientcmd"
79
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
811
)
912

1013
type (
1114
Kube interface {
1215
BuildClient() (*kubernetes.Clientset, error)
1316
BuildConfig() (clientcmd.ClientConfig)
17+
EnsureNamespaceExists(cs *kubernetes.Clientset) (error)
1418
}
1519

1620
kube struct {
@@ -48,7 +52,20 @@ func (k *kube) BuildClient() (*kubernetes.Clientset, error) {
4852
if err != nil {
4953
return nil, err
5054
}
51-
return kubernetes.NewForConfig(config)
55+
cs, err := kubernetes.NewForConfig(config)
56+
return cs, nil
57+
}
58+
59+
func (k *kube) EnsureNamespaceExists(cs *kubernetes.Clientset) (error) {
60+
_, err := cs.CoreV1().Namespaces().Get(k.namespace, v1.GetOptions{})
61+
if err != nil {
62+
nsSpec := &v1Core.Namespace{ObjectMeta: metav1.ObjectMeta {Name: k.namespace}};
63+
_, err := cs.CoreV1().Namespaces().Create(nsSpec)
64+
if err != nil {
65+
return err
66+
}
67+
}
68+
return nil
5269
}
5370

5471
func (k *kube) BuildConfig() (clientcmd.ClientConfig) {

venonactl/pkg/plugins/engine.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ func (u *enginePlugin) Install(opt *InstallOptions, v Values) (Values, error) {
4141
u.logger.Error(fmt.Sprintf("Cannot create kubernetes clientset: %v ", err))
4242
return nil, err
4343
}
44+
err = opt.KubeBuilder.EnsureNamespaceExists(cs)
45+
if err != nil {
46+
u.logger.Error(fmt.Sprintf("Cannot ensure namespace exists: %v", err))
47+
return nil, err
48+
}
4449
return v, install(&installOptions{
4550
logger: u.logger,
4651
templates: templates.TemplatesMap(),

venonactl/pkg/plugins/plugin.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,12 @@ type (
5656
KubeBuilder interface {
5757
BuildClient() (*kubernetes.Clientset, error)
5858
BuildConfig() clientcmd.ClientConfig
59+
EnsureNamespaceExists(cs *kubernetes.Clientset) (error)
5960

6061
}
6162
AgentKubeBuilder interface {
6263
BuildClient() (*kubernetes.Clientset, error)
64+
EnsureNamespaceExists(cs *kubernetes.Clientset) (error)
6365
}
6466
DryRun bool
6567
KubernetesRunnerType bool

venonactl/pkg/plugins/runtime-attach.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ func buildRuntimeConfig(opt *InstallOptions, v Values) (RuntimeConfiguration, er
4343
if err != nil {
4444
return RuntimeConfiguration{}, fmt.Errorf("Failed to create client on runtime cluster: %v", err)
4545
}
46+
err = opt.KubeBuilder.EnsureNamespaceExists(cs)
47+
if err != nil {
48+
return RuntimeConfiguration{}, fmt.Errorf("Failed to ensure namespace on runtime cluster: %v", err)
49+
}
4650

4751
// get default service account for the namespace
4852
var getOpt metav1.GetOptions
@@ -99,6 +103,11 @@ func (u *runtimeAttachPlugin) Install(opt *InstallOptions, v Values) (Values, er
99103
u.logger.Error(fmt.Sprintf("Cannot create kubernetes clientset: %v ", err))
100104
return nil, err
101105
}
106+
err = opt.AgentKubeBuilder.EnsureNamespaceExists(cs)
107+
if err != nil {
108+
u.logger.Error(fmt.Sprintf("Cannot ensure namespace exists: %v", err))
109+
return nil, err
110+
}
102111

103112
// read current venona conf
104113
currentVenonaConf, err := readCurrentVenonaConf(opt.AgentKubeBuilder, opt.ClusterNamespace)

venonactl/pkg/plugins/runtime-environment.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ func (u *runtimeEnvironmentPlugin) Install(opt *InstallOptions, v Values) (Value
4040
if err != nil {
4141
return nil, fmt.Errorf("Cannot create kubernetes clientset: %v ", err)
4242
}
43+
44+
err = opt.KubeBuilder.EnsureNamespaceExists(cs)
45+
if err != nil {
46+
u.logger.Error(fmt.Sprintf("Cannot ensure namespace exists: %v", err))
47+
return nil, err
48+
}
4349

4450
cfOpt := &codefresh.APIOptions{
4551
Logger: u.logger,

venonactl/pkg/plugins/venona.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ func (u *venonaPlugin) Install(opt *InstallOptions, v Values) (Values, error) {
6767
u.logger.Error(fmt.Sprintf("Cannot create kubernetes clientset: %v ", err))
6868
return nil, err
6969
}
70+
err = opt.KubeBuilder.EnsureNamespaceExists(cs)
71+
if err != nil {
72+
u.logger.Error(fmt.Sprintf("Cannot ensure namespace exists: %v", err))
73+
return nil, err
74+
}
7075
return v, install(&installOptions{
7176
logger: u.logger,
7277
templates: templates.TemplatesMap(),

0 commit comments

Comments
 (0)