-
Notifications
You must be signed in to change notification settings - Fork 689
Adding initial draft of the Containerz yang model #1389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
3ea4065 to
3f56831
Compare
|
|
||
| augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server/" + | ||
| "oc-sys-grpc:state" { | ||
| when "../config[contains(services, 'oc-containerz:CONTAINERZ')]/enable = 'true'"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This identity does not exist. For new gRPC services, there is current way and potential future for expansion but you'll want to at a min follow what you should see for P4RT and GRIBI
| "A collection of counters that were collected while evaluating | ||
| access to the gRPC server."; | ||
|
|
||
| container counters { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This appears to try to add an overlapping container under /system/grpc-servers/grpc-server/state. Suggest consideration of bucketizing "containerz" specific state/counters under it's own hierarchy specific to this set of services
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| "A collection of counters that were collected by the gRPC during | ||
| the authentication process."; | ||
|
|
||
| leaf connection-rejects { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are these connection-* related leafs meant to convey or were they copied from other model?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They seem to be a duplicate of the counters in /system/grpc-servers/grpc-server/connections/connection/state/counters. I think they are not needed because they are already present.
/system/grpc-servers/grpc-server/containerz/state/counters could be created if there are containerz specific counters. But all generic "grpc-servers" counters regarding client connections should appear in:
/system/grpc-servers/grpc-server/connections/connection/state/counters
| description | ||
| "gRPC server containerz freshness-related data."; | ||
|
|
||
| container containers { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similar suggestion as above - consider grouping under containerz hierarchy first. If this is meant to be similar to docker ps outputs then can align as such. Any counters should go under child counters container at relevant hierarchy.
|
|
||
| augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server/" + | ||
| "oc-sys-grpc:state" { | ||
| when "../config[contains(services, 'oc-containerz:CONTAINERZ')]/enable = 'true'"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't allow for this kind of when statement using contains AFAIK.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This concept was introduced in the gNSI related models
https://github.com/openconfig/public/blob/master/release/models/gnsi/openconfig-gnsi-authz.yang#L205
But this identity does not exist and each gRPC service domain should really bring in a distinct related container and group everything related underneath (commented above)
| "gRPC server containerz freshness-related data."; | ||
|
|
||
| container containers { | ||
| list container { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see this as duplicative to the ListContainer RPC, which is fine in principle, but how do we expect the two to be used? I presume the thinking here is that some clients will just subscribe through gNMI to understand this state?
| "A timestamp of the last time a gRPC client succeeded | ||
| in establishing a connection to the server."; | ||
| } | ||
| leaf running-containers { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this a useful metric if we also have the list of containers?
|
/gcbrun |
|
No major YANG version changes in commit 6d0ec50 |
| "A collection of counters that were collected by the gRPC during | ||
| the authentication process."; | ||
|
|
||
| leaf connection-rejects { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They seem to be a duplicate of the counters in /system/grpc-servers/grpc-server/connections/connection/state/counters. I think they are not needed because they are already present.
/system/grpc-servers/grpc-server/containerz/state/counters could be created if there are containerz specific counters. But all generic "grpc-servers" counters regarding client connections should appear in:
/system/grpc-servers/grpc-server/connections/connection/state/counters
| "A collection of counters that were collected while evaluating | ||
| access to the gRPC server."; | ||
|
|
||
| container counters { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| list container { | ||
| key "name"; | ||
|
|
||
| leaf name { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For openconfig style compliance, this needs to be a leafref to a leaf of the same name in a "state container"
for example:
public/release/models/system/openconfig-system-grpc.yang
Lines 75 to 129 in 1463f23
| list grpc-server { | |
| key "name"; | |
| description | |
| "The list of gRPC servers that are running on the device. Each | |
| instance within this list corresponds to an individual gRPC listener | |
| that listens on a single TCP port on the specified addresses. | |
| Where there are multiple services that run on a single port, these | |
| are enabled through the service leaf-list which uses the GRPC_SERVICE | |
| identity to list the supported service types."; | |
| leaf name { | |
| type leafref { | |
| path "../config/name"; | |
| } | |
| description | |
| "Reference to the name of the service that is to be enabled."; | |
| } | |
| container config { | |
| description | |
| "Configuration parameters relating to the gRPC service."; | |
| uses grpc-server-config; | |
| } | |
| container state { | |
| config false; | |
| description | |
| "Operational state relating to the gRPC service."; | |
| uses grpc-server-config; | |
| } | |
| uses connections-top; | |
| } | |
| } | |
| } | |
| grouping grpc-server-config { | |
| description | |
| "Configuration parameters corresponding to an individual gRPC | |
| server."; | |
| leaf name { | |
| type string; | |
| default "DEFAULT"; | |
| description | |
| "The name of the gRPC server instance that is running on | |
| the local system. | |
| If the operator does not designate a name for the protocol | |
| instance (e.g. config), the implementation should use the | |
| name of 'DEFAULT' (e.g. state). In addition, for | |
| implementations that support a single gRPC server instance, | |
| the default value is recommended for consistency."; | |
| } |
| description | ||
| "gRPC server containerz freshness-related data."; | ||
|
|
||
| container containers { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider the same fields from a docker ps (or docker ls if the intent is only to show running containers)?
|
|
||
| // Augments section. | ||
|
|
||
| augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server/" + |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if we really should be augmenting the grpc-servers list with information about something which is system-level (i.e. containers are not tied to a particular gRPC server in any way).
maybe something like /system/containers would be more appropriate?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(likewise for the augment below)
|
FYI: set project review status to "waiting for author". |
Change Scope
This is a yang model for the gNOI.Containerz service.
This change is backwards compatible.