Skip to content

Commit f752362

Browse files
committed
Standardize metrics in networking package
This ensures that all calls made by the client in the networking package have a Prometheus metric associated with them. Delete and Get calls are standardized to not record an error in the metrics if the resource in OpenStack is not found. (However, the not found error will still be returned by the function as nil, err.) Finally, the replace all attributes tags call is no longer recorded as a trunk update event.
1 parent 35351cb commit f752362

File tree

2 files changed

+73
-23
lines changed

2 files changed

+73
-23
lines changed

pkg/cloud/services/networking/client.go

Lines changed: 72 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,12 @@ func (c networkClient) RemoveRouterInterface(id string, opts routers.RemoveInter
108108
}
109109

110110
func (c networkClient) ReplaceAllAttributesTags(resourceType string, resourceID string, opts attributestags.ReplaceAllOptsBuilder) ([]string, error) {
111-
return attributestags.ReplaceAll(c.serviceClient, resourceType, resourceID, opts).Extract()
111+
mc := metrics.NewMetricPrometheusContext("attributes_tags", "replace_all")
112+
tags, err := attributestags.ReplaceAll(c.serviceClient, resourceType, resourceID, opts).Extract()
113+
if mc.ObserveRequest(err) != nil {
114+
return nil, err
115+
}
116+
return tags, nil
112117
}
113118

114119
func (c networkClient) ListRouter(opts routers.ListOpts) ([]routers.Router, error) {
@@ -140,13 +145,13 @@ func (c networkClient) CreateFloatingIP(opts floatingips.CreateOptsBuilder) (*fl
140145

141146
func (c networkClient) DeleteFloatingIP(id string) error {
142147
mc := metrics.NewMetricPrometheusContext("floating_ip", "delete")
143-
return mc.ObserveRequest(floatingips.Delete(c.serviceClient, id).ExtractErr())
148+
return mc.ObserveRequestIgnoreNotFound(floatingips.Delete(c.serviceClient, id).ExtractErr())
144149
}
145150

146151
func (c networkClient) GetFloatingIP(id string) (*floatingips.FloatingIP, error) {
147152
mc := metrics.NewMetricPrometheusContext("floating_ip", "list")
148153
fip, err := floatingips.Get(c.serviceClient, id).Extract()
149-
if mc.ObserveRequest(err) != nil {
154+
if mc.ObserveRequestIgnoreNotFound(err) != nil {
150155
return nil, err
151156
}
152157
return fip, nil
@@ -181,7 +186,7 @@ func (c networkClient) CreatePort(opts ports.CreateOptsBuilder) (*ports.Port, er
181186

182187
func (c networkClient) DeletePort(id string) error {
183188
mc := metrics.NewMetricPrometheusContext("port", "delete")
184-
return mc.ObserveRequest(ports.Delete(c.serviceClient, id).ExtractErr())
189+
return mc.ObserveRequestIgnoreNotFound(ports.Delete(c.serviceClient, id).ExtractErr())
185190
}
186191

187192
func (c networkClient) GetPort(id string) (*ports.Port, error) {
@@ -194,7 +199,12 @@ func (c networkClient) GetPort(id string) (*ports.Port, error) {
194199
}
195200

196201
func (c networkClient) UpdatePort(id string, opts ports.UpdateOptsBuilder) (*ports.Port, error) {
197-
return ports.Update(c.serviceClient, id, opts).Extract()
202+
mc := metrics.NewMetricPrometheusContext("port", "update")
203+
port, err := ports.Update(c.serviceClient, id, opts).Extract()
204+
if mc.ObserveRequest(err) != nil {
205+
return nil, err
206+
}
207+
return port, nil
198208
}
199209

200210
func (c networkClient) CreateTrunk(opts trunks.CreateOptsBuilder) (*trunks.Trunk, error) {
@@ -208,7 +218,7 @@ func (c networkClient) CreateTrunk(opts trunks.CreateOptsBuilder) (*trunks.Trunk
208218

209219
func (c networkClient) DeleteTrunk(id string) error {
210220
mc := metrics.NewMetricPrometheusContext("trunk", "delete")
211-
return mc.ObserveRequest(trunks.Delete(c.serviceClient, id).ExtractErr())
221+
return mc.ObserveRequestIgnoreNotFound(trunks.Delete(c.serviceClient, id).ExtractErr())
212222
}
213223

214224
func (c networkClient) ListTrunk(opts trunks.ListOptsBuilder) ([]trunks.Trunk, error) {
@@ -231,11 +241,16 @@ func (c networkClient) CreateRouter(opts routers.CreateOptsBuilder) (*routers.Ro
231241

232242
func (c networkClient) DeleteRouter(id string) error {
233243
mc := metrics.NewMetricPrometheusContext("router", "delete")
234-
return mc.ObserveRequest(routers.Delete(c.serviceClient, id).ExtractErr())
244+
return mc.ObserveRequestIgnoreNotFound(routers.Delete(c.serviceClient, id).ExtractErr())
235245
}
236246

237247
func (c networkClient) GetRouter(id string) (*routers.Router, error) {
238-
return routers.Get(c.serviceClient, id).Extract()
248+
mc := metrics.NewMetricPrometheusContext("router", "get")
249+
router, err := routers.Get(c.serviceClient, id).Extract()
250+
if mc.ObserveRequestIgnoreNotFound(err) != nil {
251+
return nil, err
252+
}
253+
return router, nil
239254
}
240255

241256
func (c networkClient) UpdateRouter(id string, opts routers.UpdateOptsBuilder) (*routers.Router, error) {
@@ -267,20 +282,31 @@ func (c networkClient) CreateSecGroup(opts groups.CreateOptsBuilder) (*groups.Se
267282

268283
func (c networkClient) DeleteSecGroup(id string) error {
269284
mc := metrics.NewMetricPrometheusContext("security_group", "delete")
270-
return mc.ObserveRequest(groups.Delete(c.serviceClient, id).ExtractErr())
285+
return mc.ObserveRequestIgnoreNotFound(groups.Delete(c.serviceClient, id).ExtractErr())
271286
}
272287

273288
func (c networkClient) GetSecGroup(id string) (*groups.SecGroup, error) {
274-
return groups.Get(c.serviceClient, id).Extract()
289+
mc := metrics.NewMetricPrometheusContext("security_group", "get")
290+
group, err := groups.Get(c.serviceClient, id).Extract()
291+
if mc.ObserveRequestIgnoreNotFound(err) != nil {
292+
return nil, err
293+
}
294+
return group, nil
275295
}
276296

277297
func (c networkClient) UpdateSecGroup(id string, opts groups.UpdateOptsBuilder) (*groups.SecGroup, error) {
278-
return groups.Update(c.serviceClient, id, opts).Extract()
298+
mc := metrics.NewMetricPrometheusContext("security_group", "update")
299+
group, err := groups.Update(c.serviceClient, id, opts).Extract()
300+
if mc.ObserveRequest(err) != nil {
301+
return nil, err
302+
}
303+
return group, nil
279304
}
280305

281306
func (c networkClient) ListSecGroupRule(opts rules.ListOpts) ([]rules.SecGroupRule, error) {
307+
mc := metrics.NewMetricPrometheusContext("security_group_rule", "list")
282308
allPages, err := rules.List(c.serviceClient, opts).AllPages()
283-
if err != nil {
309+
if mc.ObserveRequest(err) != nil {
284310
return nil, err
285311
}
286312
return rules.ExtractRules(allPages)
@@ -297,11 +323,16 @@ func (c networkClient) CreateSecGroupRule(opts rules.CreateOptsBuilder) (*rules.
297323

298324
func (c networkClient) DeleteSecGroupRule(id string) error {
299325
mc := metrics.NewMetricPrometheusContext("security_group_rule", "delete")
300-
return mc.ObserveRequest(rules.Delete(c.serviceClient, id).ExtractErr())
326+
return mc.ObserveRequestIgnoreNotFound(rules.Delete(c.serviceClient, id).ExtractErr())
301327
}
302328

303329
func (c networkClient) GetSecGroupRule(id string) (*rules.SecGroupRule, error) {
304-
return rules.Get(c.serviceClient, id).Extract()
330+
mc := metrics.NewMetricPrometheusContext("security_group_rule", "get")
331+
rule, err := rules.Get(c.serviceClient, id).Extract()
332+
if mc.ObserveRequestIgnoreNotFound(err) != nil {
333+
return nil, err
334+
}
335+
return rule, nil
305336
}
306337

307338
func (c networkClient) ListNetwork(opts networks.ListOptsBuilder) ([]networks.Network, error) {
@@ -324,15 +355,25 @@ func (c networkClient) CreateNetwork(opts networks.CreateOptsBuilder) (*networks
324355

325356
func (c networkClient) DeleteNetwork(id string) error {
326357
mc := metrics.NewMetricPrometheusContext("network", "delete")
327-
return mc.ObserveRequest(networks.Delete(c.serviceClient, id).ExtractErr())
358+
return mc.ObserveRequestIgnoreNotFound(networks.Delete(c.serviceClient, id).ExtractErr())
328359
}
329360

330361
func (c networkClient) GetNetwork(id string) (*networks.Network, error) {
331-
return networks.Get(c.serviceClient, id).Extract()
362+
mc := metrics.NewMetricPrometheusContext("network", "get")
363+
net, err := networks.Get(c.serviceClient, id).Extract()
364+
if mc.ObserveRequestIgnoreNotFound(err) != nil {
365+
return nil, err
366+
}
367+
return net, nil
332368
}
333369

334370
func (c networkClient) UpdateNetwork(id string, opts networks.UpdateOptsBuilder) (*networks.Network, error) {
335-
return networks.Update(c.serviceClient, id, opts).Extract()
371+
mc := metrics.NewMetricPrometheusContext("network", "update")
372+
net, err := networks.Update(c.serviceClient, id, opts).Extract()
373+
if mc.ObserveRequest(err) != nil {
374+
return nil, err
375+
}
376+
return net, nil
336377
}
337378

338379
func (c networkClient) ListSubnet(opts subnets.ListOptsBuilder) ([]subnets.Subnet, error) {
@@ -354,15 +395,26 @@ func (c networkClient) CreateSubnet(opts subnets.CreateOptsBuilder) (*subnets.Su
354395
}
355396

356397
func (c networkClient) DeleteSubnet(id string) error {
357-
return subnets.Delete(c.serviceClient, id).ExtractErr()
398+
mc := metrics.NewMetricPrometheusContext("subnet", "delete")
399+
return mc.ObserveRequestIgnoreNotFound(subnets.Delete(c.serviceClient, id).ExtractErr())
358400
}
359401

360402
func (c networkClient) GetSubnet(id string) (*subnets.Subnet, error) {
361-
return subnets.Get(c.serviceClient, id).Extract()
403+
mc := metrics.NewMetricPrometheusContext("subnet", "get")
404+
subnet, err := subnets.Get(c.serviceClient, id).Extract()
405+
if mc.ObserveRequestIgnoreNotFound(err) != nil {
406+
return nil, err
407+
}
408+
return subnet, nil
362409
}
363410

364411
func (c networkClient) UpdateSubnet(id string, opts subnets.UpdateOptsBuilder) (*subnets.Subnet, error) {
365-
return subnets.Update(c.serviceClient, id, opts).Extract()
412+
mc := metrics.NewMetricPrometheusContext("subnet", "update")
413+
subnet, err := subnets.Update(c.serviceClient, id, opts).Extract()
414+
if mc.ObserveRequest(err) != nil {
415+
return nil, err
416+
}
417+
return subnet, nil
366418
}
367419

368420
func (c networkClient) ListExtensions() ([]extensions.Extension, error) {

pkg/cloud/services/networking/trunk.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"k8s.io/apimachinery/pkg/runtime"
2626
"sigs.k8s.io/cluster-api/util"
2727

28-
"sigs.k8s.io/cluster-api-provider-openstack/pkg/metrics"
2928
"sigs.k8s.io/cluster-api-provider-openstack/pkg/record"
3029
capoerrors "sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/errors"
3130
"sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/names"
@@ -80,11 +79,10 @@ func (s *Service) getOrCreateTrunk(eventObject runtime.Object, clusterName, trun
8079
}
8180

8281
func (s *Service) replaceAllAttributesTags(eventObject runtime.Object, trunkID string, tags []string) error {
83-
mc := metrics.NewMetricPrometheusContext("trunk", "update")
8482
_, err := s.client.ReplaceAllAttributesTags("trunks", trunkID, attributestags.ReplaceAllOpts{
8583
Tags: tags,
8684
})
87-
if mc.ObserveRequest(err) != nil {
85+
if err != nil {
8886
record.Warnf(eventObject, "FailedReplaceAllAttributesTags", "Failed to replace all attributestags, trunk %s: %v", trunkID, err)
8987
return err
9088
}

0 commit comments

Comments
 (0)