openconfig / gnmic

gNMIc is a gNMI CLI client and collector
https://gnmic.openconfig.net
Apache License 2.0
166 stars 52 forks source link

Junos CRPD set error on YAML file format when network-instance name is upper case #467

Closed synliao closed 4 weeks ago

synliao commented 4 weeks ago

I ran into an issue when push config with upper case network instance name to Juniper CRPD. it works well when I switch the name to lower case:

- prefix: ""
  encoding: "json_ietf"
  path: '/network-instances/network-instance[name=DEFAULT]/protocols/protocol[name=DEFAULT][identifier=BGP]/bgp/global'
  value: '{"config":{"as": 100, "router-id": "2.2.2.2"}}'

- prefix: ""
  encoding: "json_ietf"
  path: '/network-instances/network-instance[name=DEFAULT]/protocols/protocol[name=DEFAULT][identifier=BGP]/bgp/global/afi-safis/afi-safi[afi-safi-name=IPV4_UNICAST]'
  value: '{"config":{"afi-safi-name": "IPV4_UNICAST", "enabled": true}}'

- prefix: "/network-instances/network-instance[name=DEFAULT]/protocols/protocol[name=DEFAULT][identifier=BGP]/bgp"
  encoding: "json_ietf"
  path: '/neighbors/neighbor[neighbor-address=1.1.1.1]'
  value: '{"config":{"peer-group": "iBGP", "enabled": true, "neighbor-address": "1.1.1.1", "peer-as": 100, "local-as": 100}}'

go run main.go panic: rpc error: code = Unknown desc = 2 errors reported by translation scripts ; translation script failure ;

goroutine 1 [running]: main.check(...) /home/sliao/clabs/crpd-gnmic/main.go:16 main.main() /home/sliao/clabs/crpd-gnmic/main.go:131 +0x905 exit status 2

- prefix: ""
  encoding: "json_ietf"
  path: '/network-instances/network-instance[name=default]/protocols/protocol[name=default][identifier=BGP]/bgp/global'
  value: '{"config":{"as": 100, "router-id": "2.2.2.2"}}'

- prefix: ""
  encoding: "json_ietf"
  path: '/network-instances/network-instance[name=default]/protocols/protocol[name=default][identifier=BGP]/bgp/global/afi-safis/afi-safi[afi-safi-name=IPV4_UNICAST]'
  value: '{"config":{"afi-safi-name": "IPV4_UNICAST", "enabled": true}}'

- prefix: "/network-instances/network-instance[name=default]/protocols/protocol[name=default][identifier=BGP]/bgp"
  encoding: "json_ietf"
  path: '/neighbors/neighbor[neighbor-address=1.1.1.1]'
  value: '{"config":{"peer-group": "iBGP", "enabled": true, "neighbor-address": "1.1.1.1", "peer-as": 100, "local-as": 100}}'

go run main.go response: { path: { origin: "openconfig" elem: { name: "network-instances" } elem: { name: "network-instance" key: { key: "name" value: "default" } } elem: { name: "protocols" } elem: { name: "protocol" key: { key: "identifier" value: "BGP" } key: { key: "name" value: "default" } } elem: { name: "bgp" } elem: { name: "global" } } op: UPDATE } timestamp: 1718642096561528163

response: { path: { origin: "openconfig" elem: { name: "network-instances" } elem: { name: "network-instance" key: { key: "name" value: "default" } } elem: { name: "protocols" } elem: { name: "protocol" key: { key: "identifier" value: "BGP" } key: { key: "name" value: "default" } } elem: { name: "bgp" } elem: { name: "global" } elem: { name: "afi-safis" } elem: { name: "afi-safi" key: { key: "afi-safi-name" value: "IPV4_UNICAST" } } } op: UPDATE } timestamp: 1718642098669755836

response: { path: { origin: "openconfig" elem: { name: "network-instances" } elem: { name: "network-instance" key: { key: "name" value: "default" } } elem: { name: "protocols" } elem: { name: "protocol" key: { key: "identifier" value: "BGP" } key: { key: "name" value: "default" } } elem: { name: "bgp" } elem: { name: "neighbors" } elem: { name: "neighbor" key: { key: "neighbor-address" value: "1.1.1.1" } } } op: UPDATE } timestamp: 1718642100632421100

synliao commented 4 weeks ago

solved by adding DEFAULT_INSTANCE in the first lines