Closed rvilalta closed 8 years ago
Can you please check whether the object translated to list has an attribute with "isPartOfKey" set to "1" in UML? If all the list object has at least one key, there should not be errors like this. For the last error, "xx is not found" I will upload a new version to fix this bug. Now the list element starts with "L" which causes this error, we will change grouping element to resolve this. New grouping element will starts with "G".
I will check with Karthik later.
The name of the attribute property is "partOfObjectKey".
I have corrected in my private branch NodeEdgePoint with list name partOfObjectKey = 1, and the error persists. Moreover, I would like the tool to say error if it doesn't have a key for a configurable list (YANG mandatory).
It's a good suggestion. We'll include this error feature in the tool and upload a new version.
Hi Ricard, does this new version resolve the "xx is not found" problem? I tested the code and now pyang doesn't report this error.
Improved. Following errors:
TapiModule-ObjectClasses.yang TapiModule-ObjectClasses.yang:7: warning: imported module TapiModule-ObjectClasses-TopologyPacs not used TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:282)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:289)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:295)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:116)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:123)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:129)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:190)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:197)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:203)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:35)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:42)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:48)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:73: error: the list needs at least one key TapiModule-ObjectClasses.yang:80: error: the list needs at least one key TapiModule-ObjectClasses.yang:86: error: the list needs at least one key TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:95): error: the key "name" does not reference an existing leaf TapiModule-ObjectClasses.yang:103: error: the path for _aggregatedNodeEdgePoint at TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:100) does not refer to a leaf TapiModule-ObjectClasses.yang:151: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferCapacityPac/" (should be path-arg) TapiModule-ObjectClasses.yang:156: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferCostPac/" (should be path-arg) TapiModule-ObjectClasses.yang:161: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferTimingPac/" (should be path-arg) TapiModule-ObjectClasses.yang:166: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferIntegrityPac/" (should be path-arg) TapiModule-ObjectClasses.yang:231: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferCapacityPac/" (should be path-arg) TapiModule-ObjectClasses.yang:236: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferCostPac/" (should be path-arg) TapiModule-ObjectClasses.yang:241: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferTimingPac/" (should be path-arg) TapiModule-ObjectClasses.yang:246: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferIntegrityPac/" (should be path-arg) TapiModule-ObjectClasses.yang:251: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_RiskParameterPac/" (should be path-arg) TapiModule-ObjectClasses.yang:256: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_ValidationPac/" (should be path-arg) TapiModule-ObjectClasses.yang:261: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_LayerProtocolTransitionPac/" (should be path-arg) TapiModule-ObjectClasses.yang:318: error: the list at "TapiModule-ObjectClasses.yang:318 (at TapiModule-ObjectClasses.yang:339)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:318: error: the list at "TapiModule-ObjectClasses.yang:318 (at TapiModule-ObjectClasses.yang:345)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:318: error: the list at "TapiModule-ObjectClasses.yang:318 (at TapiModule-ObjectClasses.yang:352)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:331: error: the path for _mappedNodeEdgePoint at TapiModule-ObjectClasses.yang:318 (at TapiModule-ObjectClasses.yang:328) does not refer to a leaf TapiModule-ObjectClasses.yang:369: error: the list at "TapiModule-ObjectClasses.yang:369 (at TapiModule-ObjectClasses.yang:400)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:369: error: the list at "TapiModule-ObjectClasses.yang:369 (at TapiModule-ObjectClasses.yang:406)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:369: error: the list at "TapiModule-ObjectClasses.yang:369 (at TapiModule-ObjectClasses.yang:413)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:382: error: the path for _clientNodeEdgePoint at TapiModule-ObjectClasses.yang:369 (at TapiModule-ObjectClasses.yang:379) does not refer to a leaf TapiModule-ObjectClasses.yang:387: error: the path for _serverNodeEdgePoint at TapiModule-ObjectClasses.yang:369 (at TapiModule-ObjectClasses.yang:385) does not refer to a leaf TapiModule-ObjectClasses.yang:430: error: the list at "TapiModule-ObjectClasses.yang:430 (at TapiModule-ObjectClasses.yang:510)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:430: error: the list at "TapiModule-ObjectClasses.yang:430 (at TapiModule-ObjectClasses.yang:517)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:430: error: the list at "TapiModule-ObjectClasses.yang:430 (at TapiModule-ObjectClasses.yang:523)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:430: error: the list at "TapiModule-ObjectClasses.yang:430 (at TapiModule-ObjectClasses.yang:451)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:430: error: the list at "TapiModule-ObjectClasses.yang:430 (at TapiModule-ObjectClasses.yang:458)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:430: error: the list at "TapiModule-ObjectClasses.yang:430 (at TapiModule-ObjectClasses.yang:464)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:559: error: the path for _nodeEdgePoint at TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:557) does not refer to a leaf TapiModule-ObjectClasses.yang:645: error: the list needs at least one key TapiModule-ObjectClasses.yang:677: error: the list needs at least one key TapiModule-ObjectClasses.yang:680: error: the list at "TapiModule-ObjectClasses.yang:680 (at TapiModule-TypeDefinitions.yang:45)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:680: error: the list at "TapiModule-ObjectClasses.yang:680 (at TapiModule-TypeDefinitions.yang:51)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:680: error: the list at "TapiModule-ObjectClasses.yang:680 (at TapiModule-TypeDefinitions.yang:57)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:686: error: bad value "/Tapi_TeLink/" (should be path-arg)
Hi Ricard,
Can you locate the specific line in the yang file and check whether the "partOfObjectKey" is set for that object? I downloaded the onfModel from github and translated the uml to yang with our tool. You're right, the same errors are reported by pyang. However, I doublechecked the uml model and found that the keys are not set in UML.
For example, the first error is "TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:282)" needs at least one key because it is used as config". I located this line in yang, which it "list name". "name" has the type "NameAndValue" and none of the attribute of "NameAndValue" is set as key. You can set, for example, "valueName" as the key. And this error will be fix. This is not the bug in the tool.
As for the "bad value" error, for example, "TapiModule-ObjectClasses.yang:151: error: bad value "/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferCapacityPac/" (should be path-arg)".
I located the following lines in yang file.
leaf _transferCapacity {
type leafref {
path '/TapiModule-ObjectClasses-TopologyPacs:Tapi_TransferCapacityPac/';
}
}
the "_transferCapcity" should be translated to "container" and "uses" Tapi_TransferCapacityPac. This is because the aggregation is set to "none" when it should be set to "composite" because the situation is an object class has an attribute whose type is also an object class. So in UML the aggregation should be properly set. This is not a bug in the tool.
Thank you for the explanation. I have been able to solve this issue in the TapiModule.
According to YANG RFC https://tools.ietf.org/html/rfc6020#section-7.8.2
There are many pyang errors regarding this issue. I copy the first ones:
TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:282)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:289)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:295)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:116)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:123)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:129)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:190)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:197)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:203)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:35)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:42)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:15: error: the list at "TapiModule-ObjectClasses.yang:15 (at TapiModule-ObjectClasses.yang:48)" needs at least one key because it is used as config TapiModule-ObjectClasses.yang:65: error: TapiModule-ObjectClasses:Tapi_Topology in the path for _topology at TapiModule-ObjectClasses.yang:63 is not found