Skip to content

Commit 032b9da

Browse files
hmsayemEmruz Hossain
authored andcommitted
Refactor code by adding new methods (#23)
* Refactor code Signed-off-by: hmsayem <hmsayem@appscode.com> * Remove comments Signed-off-by: hmsayem <hmsayem@appscode.com>
1 parent 3a59f1f commit 032b9da

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+5673
-569
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ require (
1414
k8s.io/apimachinery v0.21.1
1515
k8s.io/client-go v0.21.1
1616
k8s.io/klog/v2 v2.8.0
17-
kmodules.xyz/client-go v0.0.0-20211122091731-6c471b24a4ea
18-
kmodules.xyz/custom-resources v0.0.0-20211221054614-ef837cc2b4be
17+
kmodules.xyz/client-go v0.0.0-20220108081101-27afc2ac4ebe
18+
kmodules.xyz/custom-resources v0.0.0-20220104123914-3c036dd7c1cd
1919
kmodules.xyz/offshoot-api v0.0.0-20211103060642-3e217667cf41
20-
stash.appscode.dev/apimachinery v0.17.1-0.20220104115423-bc75d16a1d6c
20+
stash.appscode.dev/apimachinery v0.17.1-0.20220113052814-7da4b19c88a3
2121

2222
)
2323

go.sum

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -845,8 +845,9 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
845845
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
846846
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
847847
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
848-
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
849848
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
849+
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
850+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
850851
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
851852
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
852853
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1004,6 +1005,7 @@ k8s.io/cloud-provider v0.21.1/go.mod h1:GgiRu7hOsZh3+VqMMbfLJJS9ZZM9A8k/YiZG8zkW
10041005
k8s.io/cluster-bootstrap v0.21.1/go.mod h1:izdXmPTfqI9gkjQLf9PQ1Y9/DSqG54zU2UByEzgdajs=
10051006
k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc=
10061007
k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q=
1008+
k8s.io/component-base v0.21.1 h1:iLpj2btXbR326s/xNQWmPNGu0gaYSjzn7IN/5i28nQw=
10071009
k8s.io/component-base v0.21.1/go.mod h1:NgzFZ2qu4m1juby4TnrmpR8adRk6ka62YdH5DkIIyKA=
10081010
k8s.io/component-helpers v0.21.1/go.mod h1:FtC1flbiQlosHQrLrRUulnKxE4ajgWCGy/67fT2GRlQ=
10091011
k8s.io/controller-manager v0.21.1/go.mod h1:8ugs8DCcHqybiwdVERhnnyGoS5Ksq/ea1p2B0CosHyc=
@@ -1038,20 +1040,21 @@ k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
10381040
kmodules.xyz/client-go v0.0.0-20210617233340-13d22e91512b/go.mod h1:A6GAK6xP5zBuWK6A/vUkkjKzcuywkms7fIxRf5wblO4=
10391041
kmodules.xyz/client-go v0.0.0-20211013093146-1fbfd52e78c9/go.mod h1:0gkPeALtYjB27OHt4rd6+ZmMgoVTHVLtEJQeU23/gtA=
10401042
kmodules.xyz/client-go v0.0.0-20211107190155-5bb4090d2728/go.mod h1:ENUu8pPK19xzBkVpAJHoGCI2QRvb1SqffWRt0K2sV5I=
1041-
kmodules.xyz/client-go v0.0.0-20211122091731-6c471b24a4ea h1:z5Li57oxum0018ryWpI5w5HYVFgI2S2cVj27R76IRnU=
1042-
kmodules.xyz/client-go v0.0.0-20211122091731-6c471b24a4ea/go.mod h1:ENUu8pPK19xzBkVpAJHoGCI2QRvb1SqffWRt0K2sV5I=
1043+
kmodules.xyz/client-go v0.0.0-20220104114408-2a3a05dbe89f/go.mod h1:xxl1ve1Obe4xaW+XjXsNHyLTni4QPIvHn9TfnYEoQRo=
1044+
kmodules.xyz/client-go v0.0.0-20220108081101-27afc2ac4ebe h1:EZE/eC9UF5/wcdHiinzQDVshOceIP9uRxT7qM4BnUQg=
1045+
kmodules.xyz/client-go v0.0.0-20220108081101-27afc2ac4ebe/go.mod h1:xxl1ve1Obe4xaW+XjXsNHyLTni4QPIvHn9TfnYEoQRo=
10431046
kmodules.xyz/constants v0.0.0-20210218100002-2c304bfda278/go.mod h1:DbiFk1bJ1KEO94t1SlAn7tzc+Zz95rSXgyUKa2nzPmY=
10441047
kmodules.xyz/crd-schema-fuzz v0.0.0-20210618002152-fae23aef5fb4/go.mod h1:IIkUctlfoptoci0BOrsUf8ya+MOG5uaeh1PE4uzaIbA=
1045-
kmodules.xyz/custom-resources v0.0.0-20211221054614-ef837cc2b4be h1:kIT7H2WFuNmeUf5OWGrInJJptJLNyrVyTQ47wFsc4dw=
1046-
kmodules.xyz/custom-resources v0.0.0-20211221054614-ef837cc2b4be/go.mod h1:yHLFe4wVYxepTnN00CFUf29xH+jEHDokq6d2fbp9pks=
1048+
kmodules.xyz/custom-resources v0.0.0-20220104123914-3c036dd7c1cd h1:EMcK5eA42CO9Cn290VOy2WIt2YSEbQItlMq8lU+831M=
1049+
kmodules.xyz/custom-resources v0.0.0-20220104123914-3c036dd7c1cd/go.mod h1:/XjDeILFV2wBota5kHo21DMvOt08nSAk1vm6buCuwt4=
10471050
kmodules.xyz/objectstore-api v0.0.0-20211116180107-8720be0c9bf7 h1:JIAEFjN3GDhLEG1Fh1zYpy/QFyyN337mJTM+ODEGosg=
10481051
kmodules.xyz/objectstore-api v0.0.0-20211116180107-8720be0c9bf7/go.mod h1:IICnDdPFOEeGXdaPVHOGYfdwD1cyh/p1I/TWMkyNTIE=
10491052
kmodules.xyz/offshoot-api v0.0.0-20210829122105-6f4d481b0c61/go.mod h1:3LECbAL3FgbyK80NP3V3Pmiuo/a3hFWg/PR6SPFhTns=
10501053
kmodules.xyz/offshoot-api v0.0.0-20211103060642-3e217667cf41 h1:GCDyb1fbgCHUNuFk9MecSFvzMq/WCeGk8pDEtqivziA=
10511054
kmodules.xyz/offshoot-api v0.0.0-20211103060642-3e217667cf41/go.mod h1:sJYyxf84ZvbVz4SivxMgSelGRYn19wOLUtObiEncCxk=
10521055
kmodules.xyz/prober v0.0.0-20210618020259-5836fb959027 h1:rtSPsruEkoBOLcbJkxMQjnPafpv8/vJnfWlTIj9yRBg=
10531056
kmodules.xyz/prober v0.0.0-20210618020259-5836fb959027/go.mod h1:H4NcvS1RQxeXtQONALbU6r9OT3Xa7cMhfamX/k9t9wo=
1054-
kmodules.xyz/resource-metrics v0.0.5/go.mod h1:6Dv63HDgp83DhA+lZNB7GIQR6PLjNrYW6ghQKioQzII=
1057+
kmodules.xyz/resource-metrics v0.0.6/go.mod h1:M7rWuo2qh3BpHhogiEVPnvGY9Xx4Pfygqn1Rex8YbgM=
10551058
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
10561059
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
10571060
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
@@ -1076,5 +1079,5 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
10761079
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
10771080
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
10781081
sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
1079-
stash.appscode.dev/apimachinery v0.17.1-0.20220104115423-bc75d16a1d6c h1:6II6LoXC+13g8WdkY6vCBNQZGAwWm4+W3A9Bfsg0x2E=
1080-
stash.appscode.dev/apimachinery v0.17.1-0.20220104115423-bc75d16a1d6c/go.mod h1:dZoPpOgM478PtmkXzI3qRsCccxJag7N/27UxwZ8bozk=
1082+
stash.appscode.dev/apimachinery v0.17.1-0.20220113052814-7da4b19c88a3 h1:jWOAWMKDc15vVPqq4pToYyRkitlGh6Y2+1V5QgGZsYY=
1083+
stash.appscode.dev/apimachinery v0.17.1-0.20220113052814-7da4b19c88a3/go.mod h1:BGM/ztGKtXZrtz/voZzRqop8KbbZ+pFI4YeSLVb2MB0=

pkg/backup.go

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"encoding/json"
2222
"io/ioutil"
2323
"path/filepath"
24-
"strings"
2524

2625
api_v1beta1 "stash.appscode.dev/apimachinery/apis/stash/v1beta1"
2726
stash "stash.appscode.dev/apimachinery/client/clientset/versioned"
@@ -31,6 +30,7 @@ import (
3130
"github.com/spf13/cobra"
3231
license "go.bytebuilders.dev/license-verifier/kubernetes"
3332
"gomodules.xyz/flags"
33+
shell "gomodules.xyz/go-sh"
3434
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3535
"k8s.io/client-go/kubernetes"
3636
"k8s.io/client-go/tools/clientcmd"
@@ -199,48 +199,40 @@ func (opt *natsOptions) backupNATS(targetRef api_v1beta1.TargetRef) (*restic.Bac
199199
return nil, err
200200
}
201201

202-
err = opt.waitForNATSReady(appBinding)
202+
session := opt.newSessionWrapper(NATSCMD)
203+
204+
err = opt.setNATSCredentials(session.sh, appBinding)
203205
if err != nil {
204206
return nil, err
205207
}
206208

207-
host, err := appBinding.Host()
209+
err = session.setNATSConnectionParameters(appBinding)
208210
if err != nil {
209211
return nil, err
210212
}
211213

212-
// run separate shell to perform backup
213-
backupShell := NewSessionWrapper()
214-
backupShell.ShowCMD = true
215-
216-
opt.setServerUrl(backupShell, host)
217-
218-
err = opt.setCredentials(backupShell, appBinding)
214+
err = session.setTLSParameters(appBinding, opt.setupOptions.ScratchDir)
219215
if err != nil {
220216
return nil, err
221217
}
222218

223-
err = opt.setTLS(backupShell, appBinding)
219+
err = session.waitForNATSReady(opt.warningThreshold)
224220
if err != nil {
225221
return nil, err
226222
}
227223

228-
backupArgs := []interface{}{
229-
"stream",
230-
"backup",
231-
}
232-
for _, arg := range strings.Fields(opt.natsArgs) {
233-
backupArgs = append(backupArgs, arg)
234-
}
235-
streams, err := opt.getStreams(backupShell)
224+
session.cmd.Args = append(session.cmd.Args, "stream", "backup")
225+
session.setUserArgs(opt.natsArgs)
226+
227+
streams, err := opt.getStreams(session.sh)
236228
if err != nil {
237229
return nil, err
238230
}
239231

240232
for i := range streams {
241-
args := append(backupArgs, streams[i], filepath.Join(opt.interimDataDir, streams[i]))
242-
backupShell.Command(NATSCMD, args...)
243-
if err := backupShell.Run(); err != nil {
233+
args := append(session.cmd.Args, streams[i], filepath.Join(opt.interimDataDir, streams[i]))
234+
session.sh.Command(NATSCMD, args...)
235+
if err := session.sh.Run(); err != nil {
244236
return nil, err
245237
}
246238
}
@@ -256,29 +248,32 @@ func (opt *natsOptions) backupNATS(targetRef api_v1beta1.TargetRef) (*restic.Bac
256248
return resticWrapper.RunBackup(opt.backupOptions, targetRef)
257249
}
258250

259-
func (opt *natsOptions) getStreams(sh *SessionWrapper) ([]string, error) {
251+
func (opt *natsOptions) getStreams(sh *shell.Session) ([]string, error) {
260252
if len(opt.streams) == 0 {
261-
262-
streamArgs := []interface{}{
253+
args := []interface{}{
263254
"stream",
264255
"ls",
265256
"--json",
266257
}
267258

268-
sh.Command(NATSCMD, streamArgs...)
259+
sh.Command(NATSCMD, args...)
260+
269261
err := sh.WriteStdout(filepath.Join(opt.interimDataDir, NATSStreamsFile))
270262
if err != nil {
271263
return nil, err
272264
}
265+
273266
byteStreams, err := ioutil.ReadFile(filepath.Join(opt.interimDataDir, NATSStreamsFile))
274267
if err != nil {
275268
return nil, err
276269
}
270+
277271
var streams []string
278272
err = json.Unmarshal(byteStreams, &streams)
279273
if err != nil {
280274
return nil, err
281275
}
276+
282277
return streams, nil
283278

284279
} else {
@@ -291,6 +286,7 @@ func (opt *natsOptions) getStreams(sh *SessionWrapper) ([]string, error) {
291286
if err != nil {
292287
return nil, err
293288
}
289+
294290
return opt.streams, nil
295291
}
296292
}

pkg/restore.go

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ import (
2121
"encoding/json"
2222
"io/ioutil"
2323
"path/filepath"
24-
"strings"
2524

2625
api_v1beta1 "stash.appscode.dev/apimachinery/apis/stash/v1beta1"
2726
"stash.appscode.dev/apimachinery/pkg/restic"
2827

2928
"github.com/spf13/cobra"
3029
license "go.bytebuilders.dev/license-verifier/kubernetes"
3130
"gomodules.xyz/flags"
31+
shell "gomodules.xyz/go-sh"
3232
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3333
"k8s.io/client-go/kubernetes"
3434
"k8s.io/client-go/tools/clientcmd"
@@ -169,52 +169,42 @@ func (opt *natsOptions) restoreNATS(targetRef api_v1beta1.TargetRef) (*restic.Re
169169
return nil, err
170170
}
171171

172-
err = opt.waitForNATSReady(appBinding)
172+
session := opt.newSessionWrapper(NATSCMD)
173+
174+
err = opt.setNATSCredentials(session.sh, appBinding)
173175
if err != nil {
174176
return nil, err
175177
}
176178

177-
// we will restore the desired data into interim data dir before restoring the streams
178-
opt.restoreOptions.RestorePaths = []string{opt.interimDataDir}
179-
180-
resticWrapper, err := restic.NewResticWrapper(opt.setupOptions)
179+
err = session.setNATSConnectionParameters(appBinding)
181180
if err != nil {
182181
return nil, err
183182
}
184183

185-
restoreOutput, err := resticWrapper.RunRestore(opt.restoreOptions, targetRef)
184+
err = session.setTLSParameters(appBinding, opt.setupOptions.ScratchDir)
186185
if err != nil {
187186
return nil, err
188187
}
189188

190-
host, err := appBinding.Host()
189+
err = session.waitForNATSReady(opt.warningThreshold)
191190
if err != nil {
192191
return nil, err
193192
}
194193

195-
// run separate shell to perform restore
196-
restoreShell := NewSessionWrapper()
197-
restoreShell.ShowCMD = true
198-
199-
opt.setServerUrl(restoreShell, host)
194+
// we will restore the desired data into the interim data dir before restoring the streams
195+
opt.restoreOptions.RestorePaths = []string{opt.interimDataDir}
200196

201-
err = opt.setCredentials(restoreShell, appBinding)
197+
resticWrapper, err := restic.NewResticWrapper(opt.setupOptions)
202198
if err != nil {
203199
return nil, err
204200
}
205201

206-
err = opt.setTLS(restoreShell, appBinding)
202+
restoreOutput, err := resticWrapper.RunRestore(opt.restoreOptions, targetRef)
207203
if err != nil {
208204
return nil, err
209205
}
210-
211-
restoreArgs := []interface{}{
212-
"stream",
213-
"restore",
214-
}
215-
for _, arg := range strings.Fields(opt.natsArgs) {
216-
restoreArgs = append(restoreArgs, arg)
217-
}
206+
session.cmd.Args = append(session.cmd.Args, "stream", "restore")
207+
session.setUserArgs(opt.natsArgs)
218208

219209
var streams []string
220210
if len(opt.streams) != 0 {
@@ -230,23 +220,24 @@ func (opt *natsOptions) restoreNATS(targetRef api_v1beta1.TargetRef) (*restic.Re
230220
}
231221
}
232222
if opt.overwrite {
233-
err := removeMatchedStreams(restoreShell, streams)
223+
err := removeMatchedStreams(session.sh, streams)
234224
if err != nil {
235225
return nil, err
236226
}
237227
}
228+
238229
for i := range streams {
239-
args := append(restoreArgs, streams[i], filepath.Join(opt.interimDataDir, streams[i]))
240-
restoreShell.Command(NATSCMD, args...)
241-
if err := restoreShell.Run(); err != nil {
230+
args := append(session.cmd.Args, streams[i], filepath.Join(opt.interimDataDir, streams[i]))
231+
session.sh.Command(NATSCMD, args...)
232+
if err := session.sh.Run(); err != nil {
242233
return nil, err
243234
}
244235
}
245236

246237
return restoreOutput, nil
247238
}
248239

249-
func removeMatchedStreams(sh *SessionWrapper, streams []string) error {
240+
func removeMatchedStreams(sh *shell.Session, streams []string) error {
250241
lsArgs := []interface{}{
251242
"stream",
252243
"ls",

0 commit comments

Comments
 (0)