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  }