@@ -19,14 +19,23 @@ func (a *Addon) Create(addonName string) (error, string) {
19
19
return nil , addonName
20
20
}
21
21
22
- func (a * Addon ) Destroy (addonNameOrGitPath string ) (error , string ) {
22
+ func (a * Addon ) Destroy (addonNameOrGitPath , scope string ) (error , string ) {
23
23
_ , addonName := a .Get (addonNameOrGitPath )
24
24
fmt .Println ("Destroying" , strings .Replace (addonName , "tk8-addon-" , "" , 1 ))
25
- executeMainSh (addonName )
26
- deleteMainYml (addonName , "yml" )
27
- deleteMainYml (addonName , "yaml" )
25
+ err := executeDestroySh (addonName , scope )
26
+ if err != nil && ! os .IsNotExist (err ) {
27
+ fmt .Println ("Error in executing destroy.sh , aborting addon removal." )
28
+ return err , addonName
29
+ }
30
+ if os .IsNotExist (err ) {
31
+ err = executeMainSh (addonName , scope )
32
+ if err != nil {
33
+ fmt .Println ("Error in executing main.sh , aborting addon removal." )
34
+ return err , addonName
35
+ }
36
+ }
37
+ deleteMainYml (addonName )
28
38
fmt .Println (strings .Replace (addonName , "tk8-addon-" , "" , 1 ), "destroy complete" )
29
-
30
39
return nil , addonName
31
40
}
32
41
@@ -46,60 +55,89 @@ func (a *Addon) Get(addonNameOrGitPath string) (error, string) {
46
55
fmt .Println ("check if provided a url" )
47
56
if strings .Contains (addonNameOrGitPath , "http://" ) || strings .Contains (addonNameOrGitPath , "https://" ) {
48
57
fmt .Println ("Load Addon from external path" , addonNameOrGitPath )
49
- common .CloneGit ("./addons" , addonNameOrGitPath , addonName )
50
- return nil , addonName
58
+ err := common .CloneGit ("./addons" , addonNameOrGitPath , addonName )
59
+ return err , extractAddonName ( addonName )
51
60
}
52
61
53
62
fmt .Println ("Search addon on kubernauts space." )
54
- common .CloneGit ("./addons" , "https://github.com/kubernauts/tk8-addon-" + addonName , addonName )
55
- return nil , "tk8-addon-" + addonName
63
+ err := common .CloneGit ("./addons" , "https://github.com/kubernauts/tk8-addon-" + addonName , addonName )
64
+ return err , addonName
56
65
57
66
}
58
- return nil , "tk8-addon-" + addonName
67
+ return nil , addonName
59
68
60
69
}
61
70
62
- func (a * Addon ) Install (addonNameOrGitPath string ) {
71
+ func (a * Addon ) Install (addonNameOrGitPath string , scope string ) {
63
72
_ , addonName := a .Get (addonNameOrGitPath )
64
- fmt .Println ("Install" , strings .Replace (addonName , "tk8-addon-" , "" , 1 ), addonName )
65
-
66
- executeMainSh (addonName )
67
- applyMainYml (addonName , "yml" )
68
- applyMainYml (addonName , "yaml" )
69
- fmt .Println (addonName , "installation complete" )
70
-
73
+ fmt .Println ("Install" , addonName )
74
+ err := executeMainSh (addonName , scope )
75
+ if err != nil {
76
+ fmt .Println ("Error in executing main.sh , aborting addon installation." )
77
+ return
78
+ }
79
+ err = applyMainYml (addonName )
80
+ if err == nil {
81
+ fmt .Println (addonName , "installation complete" )
82
+ } else {
83
+ fmt .Println (err )
84
+ }
71
85
}
72
86
73
87
// KubeConfig provide the path to the local kube config
74
88
var KubeConfig string
75
89
76
- func applyMainYml (addonName string , fileType string ) {
90
+ func applyMainYml (addonName string ) error {
77
91
78
92
var cEx * exec.Cmd
79
- _ , err := os .Stat ("./addons/" + addonName + "/main." + fileType )
93
+ fileName := "main.yml"
94
+ if _ , err := os .Stat ("./addons/" + addonName + "/" + fileName ); err != nil {
95
+ fileName = "main.yaml"
96
+ }
97
+ _ , err := os .Stat ("./addons/" + addonName + "/" + fileName )
80
98
if err == nil {
81
- fmt .Println ("apply main. " + fileType )
99
+ fmt .Println ("apply " + addonName + "/" + fileName )
82
100
if len (KubeConfig ) > 1 {
83
- cEx = exec .Command ("kubectl" , "--kubeconfig" , KubeConfig , "apply" , "-f" , "main." + fileType )
101
+ cEx = exec .Command ("kubectl" , "--kubeconfig" , KubeConfig , "apply" , "-f" , fileName )
84
102
} else {
85
- cEx = exec .Command ("kubectl" , "apply" , "-f" , "main." + fileType )
103
+ cEx = exec .Command ("kubectl" , "apply" , "-f" , fileName )
86
104
}
87
105
cEx .Dir = "./addons/" + addonName
88
106
printTerminalLog (cEx )
89
107
cEx .Wait ()
90
- return
108
+ return nil
91
109
}
110
+ return err
92
111
}
93
112
94
- func executeMainSh (addonName string ) {
113
+ func executeMainSh (addonName , scope string ) error {
95
114
if _ , err := os .Stat ("./addons/" + addonName + "/main.sh" ); err == nil {
96
115
fmt .Println ("execute main.sh" )
97
- cEx := exec .Command ("/bin/sh" , "./main.sh" )
116
+ cEx := exec .Command ("/bin/sh" , "./main.sh" , scope )
98
117
cEx .Dir = "./addons/" + addonName
99
118
printTerminalLog (cEx )
100
- cEx .Wait ()
101
- return
119
+ err = cEx .Wait ()
120
+ if err != nil {
121
+ return err
122
+ }
102
123
}
124
+ return nil
125
+ }
126
+
127
+ func executeDestroySh (addonName , scope string ) error {
128
+ _ , err := os .Stat ("./addons/" + addonName + "/destroy.sh" )
129
+ if err != nil {
130
+ return err
131
+ }
132
+ fmt .Println ("execute destroy.sh" )
133
+ cEx := exec .Command ("/bin/sh" , "./destroy.sh" , scope )
134
+ cEx .Dir = "./addons/" + addonName
135
+ printTerminalLog (cEx )
136
+ err = cEx .Wait ()
137
+ if err != nil {
138
+ return err
139
+ }
140
+ return nil
103
141
}
104
142
105
143
func printTerminalLog (cEx * exec.Cmd ) {
@@ -137,15 +175,19 @@ func cloneExample(addonName string) {
137
175
common .CloneGit ("./addons" , "https://github.com/kubernauts/tk8-addon-develop" , addonName )
138
176
}
139
177
140
- func deleteMainYml (addonName string , fileType string ) {
178
+ func deleteMainYml (addonName string ) {
141
179
142
180
var cEx * exec.Cmd
143
- if _ , err := os .Stat ("./addons/" + addonName + "/main." + fileType ); err == nil {
181
+ fileName := "main.yml"
182
+ if _ , err := os .Stat ("./addons/" + addonName + "/" + fileName ); err != nil {
183
+ fileName = "main.yaml"
184
+ }
185
+ if _ , err := os .Stat ("./addons/" + addonName + "/" + fileName ); err == nil {
144
186
fmt .Println ("delete" , strings .Replace (addonName , "tk8-addon-" , "" , 1 ), "from cluster" )
145
187
if len (KubeConfig ) > 1 {
146
- cEx = exec .Command ("kubectl" , "--kubeconfig=" + KubeConfig , "delete" , "-f" , "main." + fileType )
188
+ cEx = exec .Command ("kubectl" , "--kubeconfig=" + KubeConfig , "delete" , "-f" , fileName )
147
189
} else {
148
- cEx = exec .Command ("kubectl" , "delete" , "-f" , "main." + fileType )
190
+ cEx = exec .Command ("kubectl" , "delete" , "-f" , fileName )
149
191
}
150
192
cEx .Dir = "./addons/" + addonName
151
193
printTerminalLog (cEx )
0 commit comments