Răsfoiți Sursa

[v2.3] Filter Parameters for Cloud (#2836)

* Add cloud filter params

Signed-off-by: Matt Bolt <mbolt35@gmail.com>

* ensure the field types are registered in filterutil

Signed-off-by: Matt Bolt <mbolt35@gmail.com>

---------

Signed-off-by: Matt Bolt <mbolt35@gmail.com>
Matt Bolt 1 an în urmă
părinte
comite
8d119f6e98

+ 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 - 2
core/pkg/util/filterutil/filterutil.go

@@ -29,8 +29,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