github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/cloud/gcp/metadata.go (about)

     1  package gcp
     2  
     3  import (
     4  	"crypto/md5" //nolint:gosec
     5  	"fmt"
     6  
     7  	"cloud.google.com/go/compute/metadata"
     8  	"github.com/treeverse/lakefs/pkg/cloud"
     9  	"github.com/treeverse/lakefs/pkg/logging"
    10  )
    11  
    12  type MetadataProvider struct {
    13  	logger logging.Logger
    14  }
    15  
    16  func NewMetadataProvider(logger logging.Logger) *MetadataProvider {
    17  	return &MetadataProvider{logger: logger}
    18  }
    19  
    20  func (m *MetadataProvider) GetMetadata() map[string]string {
    21  	projectID, err := metadata.NumericProjectID()
    22  	if err != nil {
    23  		m.logger.WithError(err).Warn("Failed to get Google numeric project ID from instance metadata")
    24  		return nil
    25  	}
    26  	return map[string]string{
    27  		cloud.IDKey:     fmt.Sprintf("%x", md5.Sum([]byte(projectID))), //nolint:gosec
    28  		cloud.IDTypeKey: "gcp_project_numerical_id",
    29  	}
    30  }