From f5ae79fc853b17fb3afef99c1630a634f114294d Mon Sep 17 00:00:00 2001 From: Dasom Eom Date: Mon, 5 Aug 2019 16:00:40 -0700 Subject: [PATCH] Add gNMI sample apps to configure MPLS OAM Includes two boilerplate and four custom apps to configure MPLS OAM for XR data model using gNMI/gNMI: gn-set-xr-mpls-oam-cfg-10-ydk.py - set boilerplate gn-set-xr-mpls-oam-cfg-20-ydk.py - Enable MPLS OAM gn-set-xr-mpls-oam-cfg-22-ydk.py - Disable vendor extension gn-set-xr-mpls-oam-cfg-24-ydk.py - Disable vendor ext and reply mode gn-get-xr-mpls-oam-cfg-10-ydk.py - get boilerplate gn-get-xr-mpls-oam-cfg-20-ydk.py - get MPLS OAM --- .../gn-get-xr-mpls-oam-cfg-10-ydk.py | 89 ++++++++++++++++++ .../gn-get-xr-mpls-oam-cfg-20-ydk.py | 89 ++++++++++++++++++ .../gn-set-xr-mpls-oam-cfg-10-ydk.py | 89 ++++++++++++++++++ .../gn-set-xr-mpls-oam-cfg-20-ydk.json | 6 ++ .../gn-set-xr-mpls-oam-cfg-20-ydk.py | 90 ++++++++++++++++++ .../gn-set-xr-mpls-oam-cfg-20-ydk.txt | 2 + .../gn-set-xr-mpls-oam-cfg-22-ydk.json | 7 ++ .../gn-set-xr-mpls-oam-cfg-22-ydk.py | 91 ++++++++++++++++++ .../gn-set-xr-mpls-oam-cfg-22.txt | 3 + .../gn-set-xr-mpls-oam-cfg-24-ydk.json | 12 +++ .../gn-set-xr-mpls-oam-cfg-24-ydk.py | 92 +++++++++++++++++++ .../gn-set-xr-mpls-oam-cfg-24.txt | 4 + 12 files changed, 574 insertions(+) create mode 100755 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-10-ydk.py create mode 100755 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-20-ydk.py create mode 100755 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-10-ydk.py create mode 100644 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.json create mode 100755 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.py create mode 100644 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.txt create mode 100644 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.json create mode 100755 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.py create mode 100644 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22.txt create mode 100644 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.json create mode 100755 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.py create mode 100644 samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24.txt diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-10-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-10-ydk.py new file mode 100755 index 0000000..3ea4d2f --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-10-ydk.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python +# +# Copyright 2016 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Get data for model Cisco-IOS-XR-mpls-oam-cfg. + +usage: gn-get-xr-mpls-oam-cfg-10-ydk.py [-h] [-v] device + +positional arguments: + device gNMI device (http://user:password@host:port) + +optional arguments: + -h, --help show this help message and exit + -v, --verbose print debugging messages +""" + +from argparse import ArgumentParser +from urlparse import urlparse + +from ydk.path import Repository +from ydk.filters import YFilter +from ydk.gnmi.services import gNMIService +from ydk.gnmi.providers import gNMIServiceProvider +from ydk.models.cisco_ios_xr import Cisco_IOS_XR_mpls_oam_cfg \ + as xr_mpls_oam_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def process_mpls_oam(mpls_oam): + """Process data in mpls_oam object.""" + pass + + +if __name__ == "__main__": + """Execute main program.""" + parser = ArgumentParser() + parser.add_argument("-v", "--verbose", help="print debugging messages", + action="store_true") + parser.add_argument("device", + help="gNMI device (http://user:password@host:port)") + args = parser.parse_args() + device = urlparse(args.device) + + # log debug messages if verbose argument specified + if args.verbose: + logger = logging.getLogger("ydk") + logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter(("%(asctime)s - %(name)s - " + "%(levelname)s - %(message)s")) + handler.setFormatter(formatter) + logger.addHandler(handler) + + # create gNMI provider + repository = Repository(YDK_REPO_DIR+device.hostname) + provider = gNMIServiceProvider(repo=repository, + address=device.hostname, + port=device.port, + username=device.username, + password=device.password) + # create gNMI service + gnmi = gNMIService() + + mpls_oam = xr_mpls_oam_cfg.MplsOam() # create object + + # get data from gNMI device + # mpls_oam.yfilter = YFilter.read + # mpls_oam = gnmi.get(provider, mpls_oam) + process_mpls_oam(mpls_oam) # process object data + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-20-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-20-ydk.py new file mode 100755 index 0000000..14a5bb9 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-get-xr-mpls-oam-cfg-20-ydk.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python +# +# Copyright 2016 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Get data for model Cisco-IOS-XR-mpls-oam-cfg. + +usage: gn-get-xr-mpls-oam-cfg-20-ydk.py [-h] [-v] device + +positional arguments: + device gNMI device (http://user:password@host:port) + +optional arguments: + -h, --help show this help message and exit + -v, --verbose print debugging messages +""" + +from argparse import ArgumentParser +from urlparse import urlparse + +from ydk.path import Repository +from ydk.filters import YFilter +from ydk.gnmi.services import gNMIService +from ydk.gnmi.providers import gNMIServiceProvider +from ydk.models.cisco_ios_xr import Cisco_IOS_XR_mpls_oam_cfg \ + as xr_mpls_oam_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def process_mpls_oam(mpls_oam): + """Process data in mpls_oam object.""" + pass + + +if __name__ == "__main__": + """Execute main program.""" + parser = ArgumentParser() + parser.add_argument("-v", "--verbose", help="print debugging messages", + action="store_true") + parser.add_argument("device", + help="gNMI device (http://user:password@host:port)") + args = parser.parse_args() + device = urlparse(args.device) + + # log debug messages if verbose argument specified + if args.verbose: + logger = logging.getLogger("ydk") + logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter(("%(asctime)s - %(name)s - " + "%(levelname)s - %(message)s")) + handler.setFormatter(formatter) + logger.addHandler(handler) + + # create gNMI provider + repository = Repository(YDK_REPO_DIR+device.hostname) + provider = gNMIServiceProvider(repo=repository, + address=device.hostname, + port=device.port, + username=device.username, + password=device.password) + # create gNMI service + gnmi = gNMIService() + + mpls_oam = xr_mpls_oam_cfg.MplsOam() # create object + + # get data from gNMI device + mpls_oam.yfilter = YFilter.read + mpls_oam = gnmi.get(provider, mpls_oam) + process_mpls_oam(mpls_oam) # process object data + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-10-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-10-ydk.py new file mode 100755 index 0000000..8197d59 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-10-ydk.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python +# +# Copyright 2016 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Set configuration for model Cisco-IOS-XR-mpls-oam-cfg. + +usage: gn-set-xr-mpls-oam-cfg-10-ydk.py [-h] [-v] device + +positional arguments: + device gNMI device (http://user:password@host:port) + +optional arguments: + -h, --help show this help message and exit + -v, --verbose print debugging messages +""" + +from argparse import ArgumentParser +from urlparse import urlparse + +from ydk.path import Repository +from ydk.filters import YFilter +from ydk.gnmi.services import gNMIService +from ydk.gnmi.providers import gNMIServiceProvider +from ydk.models.cisco_ios_xr import Cisco_IOS_XR_mpls_oam_cfg \ + as xr_mpls_oam_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_mpls_oam(mpls_oam): + """Add config data to mpls_oam object.""" + pass + + +if __name__ == "__main__": + """Execute main program.""" + parser = ArgumentParser() + parser.add_argument("-v", "--verbose", help="print debugging messages", + action="store_true") + parser.add_argument("device", + help="gNMI device (http://user:password@host:port)") + args = parser.parse_args() + device = urlparse(args.device) + + # log debug messages if verbose argument specified + if args.verbose: + logger = logging.getLogger("ydk") + logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter(("%(asctime)s - %(name)s - " + "%(levelname)s - %(message)s")) + handler.setFormatter(formatter) + logger.addHandler(handler) + + # create gNMI provider + repository = Repository(YDK_REPO_DIR+device.hostname) + provider = gNMIServiceProvider(repo=repository, + address=device.hostname, + port=device.port, + username=device.username, + password=device.password) + # create gNMI service + gnmi = gNMIService() + + mpls_oam = xr_mpls_oam_cfg.MplsOam() # create object + config_mpls_oam(mpls_oam) # add object configuration + + # set configuration on gNMI device + # mpls_oam.yfilter = YFilter.replace + # gnmi.set(provider, mpls_oam) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.json b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.json new file mode 100644 index 0000000..7defb3f --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.json @@ -0,0 +1,6 @@ +{ + "Cisco-IOS-XR-mpls-oam-cfg:mpls-oam": { + "enable-oam": [null] + } +} + diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.py new file mode 100755 index 0000000..cb1ce4e --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python +# +# Copyright 2016 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Set configuration for model Cisco-IOS-XR-mpls-oam-cfg. + +usage: gn-set-xr-mpls-oam-cfg-20-ydk.py [-h] [-v] device + +positional arguments: + device gNMI device (http://user:password@host:port) + +optional arguments: + -h, --help show this help message and exit + -v, --verbose print debugging messages +""" + +from argparse import ArgumentParser +from urlparse import urlparse + +from ydk.path import Repository +from ydk.filters import YFilter +from ydk.gnmi.services import gNMIService +from ydk.gnmi.providers import gNMIServiceProvider +from ydk.models.cisco_ios_xr import Cisco_IOS_XR_mpls_oam_cfg \ + as xr_mpls_oam_cfg +from ydk.types import Empty +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_mpls_oam(mpls_oam): + """Add config data to mpls_oam object.""" + mpls_oam.enable_oam = Empty() + + +if __name__ == "__main__": + """Execute main program.""" + parser = ArgumentParser() + parser.add_argument("-v", "--verbose", help="print debugging messages", + action="store_true") + parser.add_argument("device", + help="gNMI device (http://user:password@host:port)") + args = parser.parse_args() + device = urlparse(args.device) + + # log debug messages if verbose argument specified + if args.verbose: + logger = logging.getLogger("ydk") + logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter(("%(asctime)s - %(name)s - " + "%(levelname)s - %(message)s")) + handler.setFormatter(formatter) + logger.addHandler(handler) + + # create gNMI provider + repository = Repository(YDK_REPO_DIR+device.hostname) + provider = gNMIServiceProvider(repo=repository, + address=device.hostname, + port=device.port, + username=device.username, + password=device.password) + # create gNMI service + gnmi = gNMIService() + + mpls_oam = xr_mpls_oam_cfg.MplsOam() # create object + config_mpls_oam(mpls_oam) # add object configuration + + # set configuration on gNMI device + mpls_oam.yfilter = YFilter.replace + gnmi.set(provider, mpls_oam) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.txt b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.txt new file mode 100644 index 0000000..906827a --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-20-ydk.txt @@ -0,0 +1,2 @@ +mpls oam +! diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.json b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.json new file mode 100644 index 0000000..dbec6f1 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.json @@ -0,0 +1,7 @@ +{ + "Cisco-IOS-XR-mpls-oam-cfg:mpls-oam": { + "enable-oam": [null], + "disable-vendor-extension": [null] + } +} + diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.py new file mode 100755 index 0000000..2d63aa8 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22-ydk.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# +# Copyright 2016 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Set configuration for model Cisco-IOS-XR-mpls-oam-cfg. + +usage: gn-set-xr-mpls-oam-cfg-22-ydk.py [-h] [-v] device + +positional arguments: + device gNMI device (http://user:password@host:port) + +optional arguments: + -h, --help show this help message and exit + -v, --verbose print debugging messages +""" + +from argparse import ArgumentParser +from urlparse import urlparse + +from ydk.path import Repository +from ydk.filters import YFilter +from ydk.gnmi.services import gNMIService +from ydk.gnmi.providers import gNMIServiceProvider +from ydk.models.cisco_ios_xr import Cisco_IOS_XR_mpls_oam_cfg \ + as xr_mpls_oam_cfg +from ydk.types import Empty +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_mpls_oam(mpls_oam): + """Add config data to mpls_oam object.""" + mpls_oam.enable_oam = Empty() + mpls_oam.disable_vendor_extension = Empty() + + +if __name__ == "__main__": + """Execute main program.""" + parser = ArgumentParser() + parser.add_argument("-v", "--verbose", help="print debugging messages", + action="store_true") + parser.add_argument("device", + help="gNMI device (http://user:password@host:port)") + args = parser.parse_args() + device = urlparse(args.device) + + # log debug messages if verbose argument specified + if args.verbose: + logger = logging.getLogger("ydk") + logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter(("%(asctime)s - %(name)s - " + "%(levelname)s - %(message)s")) + handler.setFormatter(formatter) + logger.addHandler(handler) + + # create gNMI provider + repository = Repository(YDK_REPO_DIR+device.hostname) + provider = gNMIServiceProvider(repo=repository, + address=device.hostname, + port=device.port, + username=device.username, + password=device.password) + # create gNMI service + gnmi = gNMIService() + + mpls_oam = xr_mpls_oam_cfg.MplsOam() # create object + config_mpls_oam(mpls_oam) # add object configuration + + # set configuration on gNMI device + mpls_oam.yfilter = YFilter.replace + gnmi.set(provider, mpls_oam) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22.txt b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22.txt new file mode 100644 index 0000000..da7e203 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-22.txt @@ -0,0 +1,3 @@ +mpls oam + echo disable-vendor-extension +! diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.json b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.json new file mode 100644 index 0000000..fe4677c --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.json @@ -0,0 +1,12 @@ +{ + "Cisco-IOS-XR-mpls-oam-cfg:mpls-oam": { + "enable-oam": [null], + "disable-vendor-extension": [null], + "reply-mode": { + "control-channel": { + "allow-reverse-lsp": [null] + } + } + } +} + diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.py new file mode 100755 index 0000000..1556f95 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24-ydk.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# +# Copyright 2016 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Set configuration for model Cisco-IOS-XR-mpls-oam-cfg. + +usage: gn-set-xr-mpls-oam-cfg-24-ydk.py [-h] [-v] device + +positional arguments: + device gNMI device (http://user:password@host:port) + +optional arguments: + -h, --help show this help message and exit + -v, --verbose print debugging messages +""" + +from argparse import ArgumentParser +from urlparse import urlparse + +from ydk.path import Repository +from ydk.filters import YFilter +from ydk.gnmi.services import gNMIService +from ydk.gnmi.providers import gNMIServiceProvider +from ydk.models.cisco_ios_xr import Cisco_IOS_XR_mpls_oam_cfg \ + as xr_mpls_oam_cfg +from ydk.types import Empty +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_mpls_oam(mpls_oam): + """Add config data to mpls_oam object.""" + mpls_oam.enable_oam = Empty() + mpls_oam.disable_vendor_extension = Empty() + mpls_oam.reply_mode.control_channel.allow_reverse_lsp = Empty() + + +if __name__ == "__main__": + """Execute main program.""" + parser = ArgumentParser() + parser.add_argument("-v", "--verbose", help="print debugging messages", + action="store_true") + parser.add_argument("device", + help="gNMI device (http://user:password@host:port)") + args = parser.parse_args() + device = urlparse(args.device) + + # log debug messages if verbose argument specified + if args.verbose: + logger = logging.getLogger("ydk") + logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter(("%(asctime)s - %(name)s - " + "%(levelname)s - %(message)s")) + handler.setFormatter(formatter) + logger.addHandler(handler) + + # create gNMI provider + repository = Repository(YDK_REPO_DIR+device.hostname) + provider = gNMIServiceProvider(repo=repository, + address=device.hostname, + port=device.port, + username=device.username, + password=device.password) + # create gNMI service + gnmi = gNMIService() + + mpls_oam = xr_mpls_oam_cfg.MplsOam() # create object + config_mpls_oam(mpls_oam) # add object configuration + + # set configuration on gNMI device + mpls_oam.yfilter = YFilter.replace + gnmi.set(provider, mpls_oam) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24.txt b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24.txt new file mode 100644 index 0000000..2720502 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-mpls-oam-cfg/gn-set-xr-mpls-oam-cfg-24.txt @@ -0,0 +1,4 @@ +mpls oam + echo reply-mode control-channel allow-reverse-lsp + echo disable-vendor-extension +!