Browse Source

filter util support for cloud costs (#2774)

Signed-off-by: Alex Meijer <ameijer@kubecost.com>
Alex Meijer 1 year ago
parent
commit
e84de7bc6c
2 changed files with 14 additions and 3 deletions
  1. 11 0
      core/pkg/util/filterutil/filterparams.go
  2. 3 3
      core/pkg/util/filterutil/filterutil.go

+ 11 - 0
core/pkg/util/filterutil/filterparams.go

@@ -3,6 +3,7 @@ package filterutil
 import (
 	"reflect"
 
+	"github.com/opencost/opencost/core/pkg/filter/fieldstrings"
 	"github.com/opencost/opencost/core/pkg/log"
 	"github.com/opencost/opencost/core/pkg/opencost"
 	"github.com/opencost/opencost/core/pkg/util/mapper"
@@ -94,6 +95,16 @@ var AssetPropToV1FilterParamKey = map[opencost.AssetProperty]string{
 	opencost.AssetServiceProp:    ParamFilterServices,
 }
 
+var CloudPropToV1FilterParamKey = map[string]string{
+	fieldstrings.FieldAccountID:       ParamFilterAccountIDs,
+	fieldstrings.FieldCategory:        ParamFilterCategories,
+	fieldstrings.FieldInvoiceEntityID: ParamFilterInvoiceEntityIDs,
+	fieldstrings.FieldLabel:           ParamFilterLabels,
+	fieldstrings.FieldProvider:        ParamFilterProviders,
+	fieldstrings.FieldProviderID:      ParamFilterProviderIDs,
+	fieldstrings.FieldService:         ParamFilterServices,
+}
+
 // AllHTTPParamKeys returns all HTTP GET parameters used for v1 filters. It is
 // intended to help validate HTTP queries in handlers to help avoid e.g.
 // spelling errors.

+ 3 - 3
core/pkg/util/filterutil/filterutil.go

@@ -15,7 +15,6 @@ import (
 	assetfilter "github.com/opencost/opencost/core/pkg/filter/asset"
 	"github.com/opencost/opencost/core/pkg/filter/ast"
 	cloudcostfilter "github.com/opencost/opencost/core/pkg/filter/cloudcost"
-	// cloudfilter "github.com/opencost/opencost/core/pkg/filter/cloud"
 )
 
 // ============================================================================
@@ -29,8 +28,9 @@ import (
 // funcs by Field type.
 var defaultFieldByType = map[string]any{
 	// typeutil.TypeOf[cloudfilter.CloudAggregationField](): cloudfilter.DefaultFieldByName,
-	typeutil.TypeOf[afilter.AllocationField](): afilter.DefaultFieldByName,
-	typeutil.TypeOf[assetfilter.AssetField]():  assetfilter.DefaultFieldByName,
+	typeutil.TypeOf[afilter.AllocationField]():        afilter.DefaultFieldByName,
+	typeutil.TypeOf[assetfilter.AssetField]():         assetfilter.DefaultFieldByName,
+	typeutil.TypeOf[cloudcostfilter.CloudCostField](): cloudcostfilter.DefaultFieldByName,
 }
 
 // DefaultFieldByName looks up a specific T field instance by name and returns the default