zotregistry.dev/zot@v1.4.4-0.20240314164342-eec277e14d20/pkg/extensions/monitoring/common.go (about)

     1  package monitoring
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"regexp"
     7  )
     8  
     9  var re = regexp.MustCompile(`\/v2\/(.*?)\/(blobs|tags|manifests)\/(.*)$`)
    10  
    11  type MetricServer interface {
    12  	SendMetric(interface{})
    13  	// works like SendMetric, but adds the metric regardless of the value of 'enabled' field for MetricServer
    14  	ForceSendMetric(interface{})
    15  	ReceiveMetrics() interface{}
    16  	IsEnabled() bool
    17  }
    18  
    19  func GetDirSize(path string) (int64, error) {
    20  	var size int64
    21  
    22  	err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error {
    23  		if err != nil {
    24  			return err
    25  		}
    26  		if !info.IsDir() {
    27  			size += info.Size()
    28  		}
    29  
    30  		return err
    31  	})
    32  
    33  	return size, err
    34  }