Skip to content

Create openconfig-bgp-bmp.yang#1343

Open
vvlakshmanamurthy wants to merge 25 commits intomasterfrom
vvlakshmanamurthy-patch-1
Open

Create openconfig-bgp-bmp.yang#1343
vvlakshmanamurthy wants to merge 25 commits intomasterfrom
vvlakshmanamurthy-patch-1

Conversation

@vvlakshmanamurthy
Copy link
Copy Markdown

Creating BGP BMP yang OC path definitions

[Note: Please fill out the following template for your pull request. lines
tagged with "Note" can be removed from the template.]

[Note: Before this PR can be reviewed please agree to the CLA covering this
repo. Please also review the contribution guide -
https://github.com/openconfig/public/blob/master/doc/contributions-guide.md]

Change Scope

  • [Please briefly describe the change that is being made to the models.]
  • [Please indicate whether this change is backwards compatible.]

Platform Implementations

[Note: Please provide at least two references to implementations which are relevant to the model changes proposed. Each implementation should be from separate organizations.].

[Note: If the feature being proposed is new - and something that is being
proposed as an enhancement to device functionality, it is sufficient to have
reviewers from the producers of two different implementations].

Creating BGP BMP yang OC path definitions
@OpenConfigBot
Copy link
Copy Markdown

OpenConfigBot commented Jul 27, 2025

No major YANG version changes in commit ea00165

Copy link
Copy Markdown
Member

@dplore dplore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a .spec.yml file to ensure our CI tools and website will check and build this model. For example:
https://github.com/openconfig/public/blob/master/release/models/acl/.spec.yml

Comment on lines +9 to +14
import openconfig-bgp { prefix oc-bgp; }
import openconfig-bgp-types { prefix oc-bgp-types; }
import openconfig-network-instance { prefix oc-netinst; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-yang-types { prefix oc-yang; }
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Run pyang to build the tree and you'll see a series of errors you can correct:

 dloher@nettool:~$ python3 -m venv ~/venv
 dloher@nettool:~$ source ~/venv/bin/activate
(venv) dloher@nettool:~$ pip install pyang
(venv) dloher@nettool:~$ pyang -f tree -p release/models/*/* > ~/bmp.tree

When the tree looks like what you want, you can add it to the comment in the description for everyone to see for easy review.

Here are the errors so far:

release/models/bgp/openconfig-bgp-bmp.yang:9: warning: imported module "openconfig-bgp" not used
release/models/bgp/openconfig-bgp-bmp.yang:10: warning: imported module "openconfig-bgp-types" not used
release/models/bgp/openconfig-bgp-bmp.yang:97: error: prefix "oc-types" is not defined (reported only once)
release/models/bgp/openconfig-bgp-bmp.yang:281: error: unexpected keyword "type"
release/models/bgp/openconfig-bgp-bmp.yang:330: error: "openconfig-bgp-bmp:stations" in the path for station-names at release/models/bgp/openconfig-bgp-bmp.yang:556 (at release/models/bgp/openconfig-bgp-bmp.yang:328) is not found
release/models/bgp/openconfig-bgp-bmp.yang:343: error: "openconfig-bgp-bmp:stations" in the path for station-names at release/models/bgp/openconfig-bgp-bmp.yang:556 (at release/models/bgp/openconfig-bgp-bmp.yang:341) is not found
release/models/bgp/openconfig-bgp-bmp.yang:381: error: grouping "bmp-afi-safis-top" not found in module "openconfig-bgp-bmp"
release/models/bgp/openconfig-bgp-bmp.yang:446: error: grouping name "bmp-config" is already defined at release/models/bgp/openconfig-bgp-bmp.yang:413
release/models/bgp/openconfig-bgp-bmp.yang:496: error: grouping "bmp-state" not found in module "openconfig-bgp-bmp"
release/models/bgp/openconfig-bgp-bmp.yang:501: error: grouping "bmp-afi-safis-top" not found in module "openconfig-bgp-bmp"
release/models/bgp/openconfig-bgp-bmp.yang:548: error: grouping "bmp-afi-safis-top" not found in module "openconfig-bgp-bmp"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran this but i dont see any output , still checking.

:$ python3 -m venv oc-env
:
$ source oc-env/bin/activate
:$ pip install pyang
:
$ source oc-env/bin/activate
:~$ pyang -f tree -p release/models// > ~/bmp.tree

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Latest:

module: openconfig-bgp-bmp
+--rw bmp
+--rw config
| +--rw enabled? boolean
| +--rw connection-mode connection-mode-type
| +--rw local-address? oc-inet:ip-address
| +--rw local-port? oc-inet:port-number
| +--rw statistics-timeout? uint32
+--ro state
| +--ro enabled? boolean
| +--ro connection-mode connection-mode-type
| +--ro local-address? oc-inet:ip-address
| +--ro local-port? oc-inet:port-number
| +--ro statistics-timeout? uint32
+--rw tcp-keepalive
| +--rw config
| | +--rw idle-time? uint32
| | +--rw probe-count? uint8
| | +--rw probe-interval? uint32
| +--ro state
| +--ro idle-time? uint32
| +--ro probe-count? uint8
| +--ro probe-interval? uint32
+--rw stations
| +--rw station* [name]
| +--rw name -> ../config/name
| +--rw config
| | +--rw name? string
| | +--rw station-address oc-inet:ip-address
| | +--rw station-port? oc-inet:port-number
| | +--rw policy-type? route-monitoring-policy-type
| | +--rw exclude-non-eligible? boolean
| | +--rw exclude-non-feasible? boolean
| +--ro state
| | +--ro name? string
| | +--ro station-address oc-inet:ip-address
| | +--ro station-port? oc-inet:port-number
| | +--ro policy-type? route-monitoring-policy-type
| | +--ro exclude-non-eligible? boolean
| | +--ro exclude-non-feasible? boolean
| | +--ro connection-status? connection-status-type
| | +--ro uptime? uint64
| | +--ro flap-count? oc-yang:counter64
| | +--ro message-counters
| | +--ro total? oc-yang:counter64
| | +--ro tx-statistics? oc-yang:counter64
| | +--ro route-monitoring? oc-yang:counter64
| | +--ro peer-monitoring? oc-yang:counter64
| | +--ro route-mirroring? oc-yang:counter64
| +--rw afi-safis
| +--rw afi-safi* [afi-safi-name]
| +--rw afi-safi-name -> ../config/afi-safi-name
| +--rw config
| | +--rw afi-safi-name? identityref
| | +--rw enabled? boolean
| +--ro state
| +--ro afi-safi-name? identityref
| +--ro enabled? boolean
+--rw station-groups
| +--rw station-group* [name]
| +--rw name string
| +--rw config
| | +--rw station-names* -> ../../../stations/station/name
| +--ro state
| +--ro station-names* -> ../../../stations/station/name
+--rw afi-safis
+--rw afi-safi* [afi-safi-name]
+--rw afi-safi-name -> ../config/afi-safi-name
+--rw config
| +--rw afi-safi-name? identityref
| +--rw enabled? boolean
+--ro state
+--ro afi-safi-name? identityref
+--ro enabled? boolean

@dplore dplore self-assigned this Jul 29, 2025
@dplore dplore moved this to Ready to discuss in OC Operator Review Jul 29, 2025
Copy link
Copy Markdown
Contributor

@earies earies left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Provided quick first pass - some overall comments

@earies
Copy link
Copy Markdown
Contributor

earies commented Aug 4, 2025

Also want to bring to attention some prior art/IETF modeling as reference/alignment.

https://datatracker.ietf.org/doc/html/draft-ietf-grow-bmp-yang-05

@Ankur19
Copy link
Copy Markdown

Ankur19 commented Aug 6, 2025

Hi @vvlakshmanamurthy! Looking at the config, system/ or system/logging should be a better fit for the collector information.

@ElodinLaarz
Copy link
Copy Markdown
Contributor

Discussed at OC Operators Meet Oct 07:

(1) Seems like a lot of open comments; so, moving to waiting-for-author,
(2) Once the comments are addressed, can we include a tree overview in the initial comment (and maybe fill out the template, as well)

@ElodinLaarz ElodinLaarz moved this from Ready to discuss to Waiting for author in OC Operator Review Oct 7, 2025
Co-authored-by: Darren Loher <dloher@google.com>
@vvlakshmanamurthy vvlakshmanamurthy requested a review from a team as a code owner March 16, 2026 20:43
vvlakshmanamurthy and others added 6 commits March 16, 2026 15:44
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updating a few comments. few more comments to resolve.

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update comments

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated comments

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only 2 comments left , will need to check with Darren.

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updating the config

@vvlakshmanamurthy
Copy link
Copy Markdown
Author

For reference: @dplore

module: openconfig-bgp-bmp
+--rw bmp
+--rw config
| +--rw enabled? boolean
| +--rw connection-mode connection-mode-type
| +--rw local-address? oc-inet:ip-address
| +--rw local-port? oc-inet:port-number
| +--rw statistics-timeout? uint32
+--ro state
| +--ro enabled? boolean
| +--ro connection-mode connection-mode-type
| +--ro local-address? oc-inet:ip-address
| +--ro local-port? oc-inet:port-number
| +--ro statistics-timeout? uint32
+--rw tcp-keepalive
| +--rw config
| | +--rw idle-time? uint32
| | +--rw probe-count? uint8
| | +--rw probe-interval? uint32
| +--ro state
| +--ro idle-time? uint32
| +--ro probe-count? uint8
| +--ro probe-interval? uint32
+--rw stations
| +--rw station* [name]
| +--rw name -> ../config/name
| +--rw config
| | +--rw name? string
| | +--rw station-address oc-inet:ip-address
| | +--rw station-port? oc-inet:port-number
| | +--rw policy-type? route-monitoring-policy-type
| | +--rw exclude-non-eligible? boolean
| | +--rw exclude-non-feasible? boolean
| +--ro state
| | +--ro name? string
| | +--ro station-address oc-inet:ip-address
| | +--ro station-port? oc-inet:port-number
| | +--ro policy-type? route-monitoring-policy-type
| | +--ro exclude-non-eligible? boolean
| | +--ro exclude-non-feasible? boolean
| | +--ro connection-status? connection-status-type
| | +--ro uptime? uint64
| | +--ro flap-count? oc-yang:counter64
| | +--ro message-counters
| | +--ro total? oc-yang:counter64
| | +--ro tx-statistics? oc-yang:counter64
| | +--ro route-monitoring? oc-yang:counter64
| | +--ro peer-monitoring? oc-yang:counter64
| | +--ro route-mirroring? oc-yang:counter64
| +--rw afi-safis
| +--rw afi-safi* [afi-safi-name]
| +--rw afi-safi-name -> ../config/afi-safi-name
| +--rw config
| | +--rw afi-safi-name? identityref
| | +--rw enabled? boolean
| +--ro state
| +--ro afi-safi-name? identityref
| +--ro enabled? boolean
+--rw station-groups
| +--rw station-group* [name]
| +--rw name string
| +--rw config
| | +--rw station-names* -> ../../../stations/station/name
| +--ro state
| +--ro station-names* -> ../../../stations/station/name
+--rw afi-safis
+--rw afi-safi* [afi-safi-name]
+--rw afi-safi-name -> ../config/afi-safi-name
+--rw config
| +--rw afi-safi-name? identityref
| +--rw enabled? boolean
+--ro state
+--ro afi-safi-name? identityref
+--ro enabled? boolean

Adding BMP to the bgp.spec.yml
Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated bgp.spec.yml

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added .spec.yml

Adding yang/bgp/openconfig-bgp-bmp.yang
@openconfig openconfig deleted a comment from vvlakshmanamurthy Mar 18, 2026
Comment on lines +186 to +201
list station-group {
key "name";
leaf name { type string; }
container config {
leaf-list station-names {
type leafref { path "../../../stations/station/name"; }
}
}
container state {
config false;
leaf-list station-names {
type leafref { path "../../../stations/station/name"; }
}
}
}
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
list station-group {
key "name";
leaf name { type string; }
container config {
leaf-list station-names {
type leafref { path "../../../stations/station/name"; }
}
}
container state {
config false;
leaf-list station-names {
type leafref { path "../../../stations/station/name"; }
}
}
}
}
list station-group {
key "name";
leaf name {
type leafref {
path "../config/name";
}
description
"references the station-group name key";
}
container config {
leaf name {
type string;
description "Name of the station-group."
}
leaf-list station-names {
type leafref { path "../../../stations/station/name"; }
}
}
container state {
config false;
leaf-list station-names {
type leafref { path "../../../stations/station/name"; }
}
}
}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Waiting for author

Development

Successfully merging this pull request may close these issues.

7 participants