github.com/devtron-labs/ci-runner@v0.0.0-20240518055909-b2672f3349d7/helper/CloudUploadHelper.go (about) 1 package helper 2 3 import ( 4 "github.com/devtron-labs/ci-runner/util" 5 "github.com/devtron-labs/common-lib/blob-storage" 6 "log" 7 ) 8 9 // UploadFileToCloud 10 // Uploads the source file to the destination key of configured blob storage /** 11 func UploadFileToCloud(cloudHelperBaseConfig *util.CloudHelperBaseConfig, sourceFilePath string, destinationKey string) error { 12 13 blobStorageService := blob_storage.NewBlobStorageServiceImpl(nil) 14 request := createBlobStorageRequest(cloudHelperBaseConfig, sourceFilePath, destinationKey) 15 16 return blobStorageService.PutWithCommand(request) 17 } 18 19 func createBlobStorageRequest(cloudHelperBaseConfig *util.CloudHelperBaseConfig, sourceKey string, destinationKey string) *blob_storage.BlobStorageRequest { 20 if cloudHelperBaseConfig.UseExternalClusterBlob { 21 UpdateCloudHelperBaseConfigFromEnv(cloudHelperBaseConfig) 22 } 23 var awsS3BaseConfig *blob_storage.AwsS3BaseConfig 24 if cloudHelperBaseConfig.BlobStorageS3Config != nil { 25 awsS3BaseConfig = util.GetBlobStorageBaseS3Config(cloudHelperBaseConfig.BlobStorageS3Config, cloudHelperBaseConfig.BlobStorageObjectType) 26 } 27 var azureBlobBaseConfig *blob_storage.AzureBlobBaseConfig 28 if cloudHelperBaseConfig.AzureBlobConfig != nil { 29 azureBlobBaseConfig = util.GetBlobStorageBaseAzureConfig(cloudHelperBaseConfig.AzureBlobConfig, cloudHelperBaseConfig.BlobStorageObjectType) 30 } 31 var gcpBlobBaseConfig *blob_storage.GcpBlobBaseConfig 32 if cloudHelperBaseConfig.GcpBlobConfig != nil { 33 gcpBlobBaseConfig = util.GetBlobStorageBaseGcpConfig(cloudHelperBaseConfig.GcpBlobConfig, cloudHelperBaseConfig.BlobStorageObjectType) 34 } 35 request := &blob_storage.BlobStorageRequest{ 36 StorageType: cloudHelperBaseConfig.CloudProvider, 37 SourceKey: sourceKey, 38 DestinationKey: destinationKey, 39 AzureBlobBaseConfig: azureBlobBaseConfig, 40 AwsS3BaseConfig: awsS3BaseConfig, 41 GcpBlobBaseConfig: gcpBlobBaseConfig, 42 } 43 return request 44 } 45 46 func UpdateCloudHelperBaseConfigFromEnv(cloudHelperBaseConfig *util.CloudHelperBaseConfig) { 47 log.Println(util.DEVTRON, "using external cluster blob") 48 blobStorageConfig, err := util.GetBlobStorageConfig() 49 if err != nil { 50 log.Println(util.DEVTRON, "error in getting blob storage config, err : ", err) 51 } 52 log.Println("external cluster cloud provider: ", blobStorageConfig.CloudProvider) 53 if blobStorageConfig == nil { 54 return 55 } 56 setConfigForBlobType(cloudHelperBaseConfig, blobStorageConfig) 57 } 58 59 func setConfigForBlobType(cloudHelperBaseConfig *util.CloudHelperBaseConfig, blobStorageConfig *util.BlobStorageConfig) { 60 cloudHelperBaseConfig.CloudProvider = blobStorageConfig.CloudProvider 61 switch blobStorageConfig.CloudProvider { 62 case blob_storage.BLOB_STORAGE_S3: 63 cloudHelperBaseConfig.SetAwsBlobStorageS3Config(blobStorageConfig) 64 case blob_storage.BLOB_STORAGE_GCP: 65 cloudHelperBaseConfig.SetGcpBlobStorageConfig(blobStorageConfig) 66 case blob_storage.BLOB_STORAGE_AZURE: 67 cloudHelperBaseConfig.SetAzureBlobStorageConfig(blobStorageConfig) 68 default: 69 if cloudHelperBaseConfig.StorageModuleConfigured { 70 log.Println(util.DEVTRON, "blob storage not supported, blobStorage: ", blobStorageConfig.CloudProvider) 71 } 72 } 73 }