@@ -23,6 +23,7 @@ import (
23
23
"net"
24
24
"os"
25
25
"path"
26
+ "path/filepath"
26
27
"strings"
27
28
"time"
28
29
@@ -43,6 +44,7 @@ import (
43
44
globaloptions "github.com/karmada-io/karmada/pkg/karmadactl/options"
44
45
"github.com/karmada-io/karmada/pkg/karmadactl/util"
45
46
"github.com/karmada-io/karmada/pkg/karmadactl/util/apiclient"
47
+ "github.com/karmada-io/karmada/pkg/util/validation"
46
48
"github.com/karmada-io/karmada/pkg/version"
47
49
)
48
50
@@ -381,19 +383,34 @@ func (i *CommandInitOption) genCerts() error {
381
383
382
384
// prepareCRD download or unzip `crds.tar.gz` to `options.DataPath`
383
385
func (i * CommandInitOption ) prepareCRD () error {
386
+ var filename string
384
387
if strings .HasPrefix (i .CRDs , "http" ) {
385
- filename : = i .KarmadaDataPath + "/" + path .Base (i .CRDs )
388
+ filename = i .KarmadaDataPath + "/" + path .Base (i .CRDs )
386
389
klog .Infof ("download crds file:%s" , i .CRDs )
387
390
if err := utils .DownloadFile (i .CRDs , filename ); err != nil {
388
391
return err
389
392
}
390
- if err := utils .DeCompress (filename , i .KarmadaDataPath ); err != nil {
391
- return err
393
+ } else {
394
+ filename = i .CRDs
395
+ klog .Infoln ("local crds file name:" , i .CRDs )
396
+ }
397
+
398
+ if err := validation .ValidateTarball (filename , validation .ValidateCrdsTarBall ); err != nil {
399
+ return fmt .Errorf ("inValid crd tar, err: %w" , err )
400
+ }
401
+
402
+ if err := utils .DeCompress (filename , i .KarmadaDataPath ); err != nil {
403
+ return err
404
+ }
405
+
406
+ for _ , archive := range validation .CrdsArchive {
407
+ expectedDir := filepath .Join (i .KarmadaDataPath , archive )
408
+ exist , _ := utils .PathExists (expectedDir )
409
+ if ! exist {
410
+ return fmt .Errorf ("lacking the necessary file path: %s" , expectedDir )
392
411
}
393
- return nil
394
412
}
395
- klog .Infoln ("local crds file name:" , i .CRDs )
396
- return utils .DeCompress (i .CRDs , i .KarmadaDataPath )
413
+ return nil
397
414
}
398
415
399
416
func (i * CommandInitOption ) createCertsSecrets () error {
0 commit comments