| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package gcp
- import (
- "regexp"
- "strings"
- "github.com/opencost/opencost/core/pkg/opencost"
- )
- func IsK8s(labels map[string]string) bool {
- if _, ok := labels["goog-gke-volume"]; ok {
- return true
- }
- if _, ok := labels["goog-gke-node"]; ok {
- return true
- }
- if _, ok := labels["goog-k8s-cluster-name"]; ok {
- return true
- }
- return false
- }
- var parseProviderIDRx = regexp.MustCompile("^.+\\/(.+)?") // Capture "gke-cluster-3-default-pool-xxxx-yy" from "projects/###/instances/gke-cluster-3-default-pool-xxxx-yy"
- func ParseProviderID(id string) string {
- match := parseProviderIDRx.FindStringSubmatch(id)
- if len(match) == 0 {
- return id
- }
- return match[len(match)-1]
- }
- func SelectCategory(service, description string) string {
- s := strings.ToLower(service)
- d := strings.ToLower(description)
- // Network descriptions
- if strings.Contains(d, "download") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "network") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "ingress") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "egress") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "static ip") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "external ip") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "load balanced") {
- return opencost.NetworkCategory
- }
- if strings.Contains(d, "licensing fee") {
- return opencost.OtherCategory
- }
- // Storage Descriptions
- if strings.Contains(d, "storage") {
- return opencost.StorageCategory
- }
- if strings.Contains(d, "pd capacity") {
- return opencost.StorageCategory
- }
- if strings.Contains(d, "pd iops") {
- return opencost.StorageCategory
- }
- if strings.Contains(d, "pd snapshot") {
- return opencost.StorageCategory
- }
- // Service Defaults
- if strings.Contains(s, "storage") {
- return opencost.StorageCategory
- }
- if strings.Contains(s, "compute") {
- return opencost.ComputeCategory
- }
- if strings.Contains(s, "sql") {
- return opencost.StorageCategory
- }
- if strings.Contains(s, "bigquery") {
- return opencost.StorageCategory
- }
- if strings.Contains(s, "kubernetes") {
- return opencost.ManagementCategory
- } else if strings.Contains(s, "pub/sub") {
- return opencost.NetworkCategory
- }
- return opencost.OtherCategory
- }
|