1
2
3 package metricsscopes
4
5 import (
6 "context"
7 "fmt"
8
9 metricsscope "cloud.google.com/go/monitoring/metricsscope/apiv1"
10 "cloud.google.com/go/monitoring/metricsscope/apiv1/metricsscopepb"
11 "google.golang.org/api/option"
12 )
13
14
15 type Client struct {
16
17
18 scopingProject string
19 options []option.ClientOption
20 }
21
22
23
24
25 func New(scopingProject string, opts ...option.ClientOption) *Client {
26 c := &Client{
27 scopingProject: scopingProject,
28 options: opts,
29 }
30
31 return c
32 }
33
34
35
36 func (c *Client) createClient(ctx context.Context) (client *metricsscope.MetricsScopesClient, err error) {
37 client, err = metricsscope.NewMetricsScopesClient(ctx, c.options...)
38 if err != nil {
39 return nil, fmt.Errorf("Error creating client: %w", err)
40 }
41 return
42 }
43
44
45
46 func (c *Client) AddMonitoredProject(ctx context.Context, projectID string) (*metricsscope.CreateMonitoredProjectOperation, error) {
47
48 client, clientErr := c.createClient(ctx)
49 if clientErr != nil {
50 return nil, clientErr
51 }
52 defer client.Close()
53
54
55 createReq := &metricsscopepb.CreateMonitoredProjectRequest{
56 Parent: fmt.Sprintf("locations/global/metricsScopes/%s", c.scopingProject),
57 MonitoredProject: &metricsscopepb.MonitoredProject{
58 Name: fmt.Sprintf("locations/global/metricsScopes/%s/projects/%s", c.scopingProject, projectID),
59 },
60 }
61
62 createResp, createErr := client.CreateMonitoredProject(ctx, createReq)
63
64 return createResp, createErr
65 }
66
67
68
69 func (c *Client) QueryMetricsScope(ctx context.Context) (*metricsscopepb.MetricsScope, error) {
70
71 client, clientErr := c.createClient(ctx)
72 if clientErr != nil {
73 return nil, clientErr
74 }
75 defer client.Close()
76
77
78 scopesReq := &metricsscopepb.GetMetricsScopeRequest{
79 Name: fmt.Sprintf("locations/global/metricsScopes/%s", c.scopingProject),
80 }
81
82 scopesResp, scopesErr := client.GetMetricsScope(ctx, scopesReq)
83
84 return scopesResp, scopesErr
85 }
86
87
88
89 func (c *Client) ListMetricsScope(ctx context.Context, projectID string) (*metricsscopepb.ListMetricsScopesByMonitoredProjectResponse, error) {
90
91 client, clientErr := c.createClient(ctx)
92 if clientErr != nil {
93 return nil, clientErr
94 }
95 defer client.Close()
96
97
98 listReq := &metricsscopepb.ListMetricsScopesByMonitoredProjectRequest{
99 MonitoredResourceContainer: fmt.Sprintf("projects/%s", projectID),
100 }
101
102 listResp, listErr := client.ListMetricsScopesByMonitoredProject(ctx, listReq)
103
104 return listResp, listErr
105 }
106
107
108 func (c *Client) RemoveMetricsScope(ctx context.Context, projectID string) (*metricsscope.DeleteMonitoredProjectOperation, error) {
109
110 client, clientErr := c.createClient(ctx)
111 if clientErr != nil {
112 return nil, clientErr
113 }
114 defer client.Close()
115
116
117 deleteReq := &metricsscopepb.DeleteMonitoredProjectRequest{
118 Name: fmt.Sprintf("locations/global/metricsScopes/%s/projects/%s", c.scopingProject, projectID),
119 }
120
121 deleteResp, deleteErr := client.DeleteMonitoredProject(ctx, deleteReq)
122
123 return deleteResp, deleteErr
124 }
125
View as plain text