Skip to content

Commit 3d89be8

Browse files
committed
Add armcostmanagement dep and blob StorageCostQuerier skeleton
1 parent 2f80ab7 commit 3d89be8

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ require (
1010
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1
1111
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v7 v7.3.0
1212
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v8 v8.2.0
13+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement v1.1.1
1314
github.com/Azure/go-autorest/autorest/to v0.4.1
1415
github.com/aws/aws-sdk-go-v2 v1.41.4
1516
github.com/aws/aws-sdk-go-v2/config v1.32.12
@@ -39,6 +40,7 @@ require (
3940

4041
require (
4142
cloud.google.com/go/managedkafka v0.8.1
43+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0
4244
github.com/aws/aws-sdk-go-v2/service/kafka v1.49.0
4345
)
4446

@@ -50,7 +52,6 @@ require (
5052
cloud.google.com/go/compute/metadata v0.9.0 // indirect
5153
cloud.google.com/go/iam v1.6.0 // indirect
5254
cloud.google.com/go/longrunning v0.8.0 // indirect
53-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 // indirect
5455
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
5556
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
5657
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v7 v7.3
3838
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v7 v7.3.0/go.mod h1:e4RAYykLIz73CF52KhSooo4whZGXvXrD09m0jkgnWiU=
3939
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v8 v8.2.0 h1:aXzpyYcHexm3eSlvy6g7r3cshXtGcEg6VJpOdrN0Us0=
4040
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v8 v8.2.0/go.mod h1:vs/o7so4c3csg/CM0LDrqxSKDxcKgeYbgI3zaL6vu7U=
41+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement v1.1.1 h1:ehSLdbLah6kk6HTVc6e/lrbmbz7MMbpNxkOd3OYlhB0=
42+
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement v1.1.1/go.mod h1:Am1cUioOk0HdZIsjpXJkQ4RIeQbwYsW6LkNIc5z/5XY=
4143
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.1.0 h1:2qsIIvxVT+uE6yrNldntJKlLRgxGbZ85kgtz5SNBhMw=
4244
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.1.0/go.mod h1:AW8VEadnhw9xox+VaVd9sP7NjzOAnaZBLRH6Tq3cJ38=
4345
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM=
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package client
2+
3+
import (
4+
"context"
5+
"time"
6+
7+
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
8+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
9+
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement"
10+
11+
"github.com/grafana/cloudcost-exporter/pkg/azure/blob"
12+
)
13+
14+
var _ blob.StorageCostQuerier = (*BlobStorageCostQuerier)(nil)
15+
16+
// BlobStorageCostQuerier implements blob.StorageCostQuerier using Azure Cost Management QueryClient.
17+
// QueryBlobStorage returns no rows until a subscription-scoped Usage query is implemented.
18+
type BlobStorageCostQuerier struct {
19+
query *armcostmanagement.QueryClient
20+
}
21+
22+
// NewBlobStorageCostQuerier builds a querier backed by armcostmanagement.
23+
func NewBlobStorageCostQuerier(credential azcore.TokenCredential, options *arm.ClientOptions) (*BlobStorageCostQuerier, error) {
24+
factory, err := armcostmanagement.NewClientFactory(credential, options)
25+
if err != nil {
26+
return nil, err
27+
}
28+
return &BlobStorageCostQuerier{query: factory.NewQueryClient()}, nil
29+
}
30+
31+
// CostQueryClient returns the underlying Cost Management client for subscription-scoped Usage calls.
32+
func (q *BlobStorageCostQuerier) CostQueryClient() *armcostmanagement.QueryClient {
33+
return q.query
34+
}
35+
36+
// QueryBlobStorage implements blob.StorageCostQuerier.
37+
func (*BlobStorageCostQuerier) QueryBlobStorage(context.Context, string, time.Duration) ([]blob.StorageCostRow, error) {
38+
return nil, nil
39+
}

0 commit comments

Comments
 (0)