If you design your models using identityref and define the identities in separate modules e.g. compression-zip.yang, compression-gzip.yang, etc. you can just chose not to load the particular YANG models containing the identities not supported when your device starts.

If you absolutely can not define your identities in separate YANG files (better modularity is indeed the edge YANG has over other modeling languages and it should be used) you can use feature with some limitations e.g. instead of leaf of type enumeration you will have a choice with each case containing if-feature and presence container for example.

If you can not change the model to be modular and your implementation does not support it 100% then you are not supporting the model and you are free to be creative with the workaround but then YANG is not the problem.

I also see alternative discussion value in the subject line. Lets say one would like to specify in a standard way a list of values supported by a device as valid /interface/interface/name values e.g. ("ge0", "ge1", .... "xe0", "xe1", "me0"). This can be useful in many ways e.g. tab completion. Also the supported types for each of the interface names and so on further reducing the entropy. Does anyone else see value in that?

On 08/31/2016 09:35 AM, Balazs Lengyel wrote:
Hello Jan,

This may be the best solution we have, but nacm rules may be changed, and then device limits might be edited by the operator, and then we have a problem.

The good solution would be to indicate that this is read-only static data, and allow must, leafref towards it. However I don't see a way to do this in YANG at the moment short of an ericsson-extension.

regards Balazs


On 2016-08-30 15:14, Jan Lindblad wrote:
Balazs,

We have the following design pattern.

1) An enumeration or a set of identities are defined that define a set of options generally supported by Ericsson products. (e.g. supported compression algorithms) 2) The specific node sets in run-time a leaf-list indicating the set of values that this specific node supports (e.g. nodes-supported-compression-types: zip, gzip, bz) 3) For some function the user has to select a specific option value (e.g. leaf file-compression for transferring backup files)

Problem: how do you restrict values for (3) - file-compression so that it is one of the nodes-supported-compression-types. The natural solution would be to use a must expression or a leaf-ref, but as nodes-supported-compression-types is config-false data, it is not allowed to constrain the config=true leaf, file-compression, with it.

It would be perfectly reasonable because the nodes-supported-compression-types only change during upgrade, but YANG does not allow this.

I would still like to have some modeled solution, not just plain English stating the constraint. Any idea how to do it?
I have seen this use case many times. I usually solve this by making a container with device specific limits, lists of supported values, etc, which is config true but with nacm rules preventing everyone from making changes. Then I have a device specific database initialization file with the correct settings for this device, which is loaded into the database at first boot.

/jan


Vladimir

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to