NBI validation for entity attributes
-
Review changes -
-
Download -
Patches
-
Plain diff
Description
This MR provides basic validation (e.g. name of an entity must be provided) on the NBI gRPC layer.
It is based on protovalidate by buf, which uses protovalidate-go underneath.
Related Issue
Motivation and Context
Currently it is very easy to crash the controller by simply not providing a needed field via a NBI request. For example create a new entity and don't provide some configuration field.
Screenshots (if appropriate):
Example for link.proto
with validation rule:
message Link {
string id = 1 [(buf.validate.field).string.min_len = 1];
...
}
The validator can the can be called in the respective NBI server implementation via:
v, err := protovalidate.New()
if err != nil {
return nil, status.Errorf(codes.Aborted, "%v", err)
}
if err = v.Validate(request); err != nil {
return nil, status.Errorf(codes.Aborted, "%v", err)
} else {
logrus.Info("validation succeeded")
}
If the request is not valid, the caller will get this message:
Edited by Ghost User
Merge request reports
Compare and
- version 3102abdd9e
- version 30a615a2d3
- version 2907c7b899
- version 28d505d450
- version 27a35d51ed
- version 2651445f32
- version 251c96b39d
- version 24dc446b7d
- version 23a61673a0
- version 225f95285d
- version 21459cb143
- version 206049f901
- version 19d0899506
- version 184afa3a50
- version 17ed646979
- version 169f38ebc8
- version 1573dbc73d
- version 14f4fe0411
- version 13d853e17d
- version 1247be398c
- version 11b24c3a07
- version 10442f02b4
- version 932e7a926
- version 81ac8876c
- version 78d6fb403
- version 690f4be1b
- version 5ef253069
- version 4374f8f5b
- version 33296d2f0
- version 2992e94ca
- version 186b38ce6
- master (base)
- latest version4ca5290542 commits,
- version 3102abdd9e41 commits,
- version 30a615a2d340 commits,
- version 2907c7b89939 commits,
- version 28d505d45038 commits,
- version 27a35d51ed36 commits,
- version 2651445f3234 commits,
- version 251c96b39d33 commits,
- version 24dc446b7d32 commits,
- version 23a61673a028 commits,
- version 225f95285d27 commits,
- version 21459cb14326 commits,
- version 206049f90125 commits,
- version 19d089950624 commits,
- version 184afa3a5023 commits,
- version 17ed64697922 commits,
- version 169f38ebc820 commits,
- version 1573dbc73d19 commits,
- version 14f4fe041117 commits,
- version 13d853e17d16 commits,
- version 1247be398c15 commits,
- version 11b24c3a0714 commits,
- version 10442f02b413 commits,
- version 932e7a92612 commits,
- version 81ac8876c11 commits,
- version 78d6fb4039 commits,
- version 690f4be1b6 commits,
- version 5ef2530695 commits,
- version 4374f8f5b4 commits,
- version 33296d2f03 commits,
- version 2992e94ca2 commits,
- version 186b38ce61 commit,
Compare changes
- Side-by-side
- Inline
Files
69Loading