diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-get-xr-lib-keychain-cfg-10-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-get-xr-lib-keychain-cfg-10-ydk.py new file mode 100755 index 0000000..0d3375f --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-get-xr-lib-keychain-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-lib-keychain-cfg. + +usage: gn-get-xr-lib-keychain-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_lib_keychain_cfg \ + as xr_lib_keychain_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def process_keychains(keychains): + """Process data in keychains 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() + + keychains = xr_lib_keychain_cfg.Keychains() # create object + + # get data from gNMI device + # keychains.yfilter = YFilter.read + # keychains = gnmi.get(provider, keychains) + process_keychains(keychains) # process object data + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-get-xr-lib-keychain-cfg-20-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-get-xr-lib-keychain-cfg-20-ydk.py new file mode 100755 index 0000000..c4be1ba --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-get-xr-lib-keychain-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-lib-keychain-cfg. + +usage: gn-get-xr-lib-keychain-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_lib_keychain_cfg \ + as xr_lib_keychain_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def process_keychains(keychains): + """Process data in keychains 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() + + keychains = xr_lib_keychain_cfg.Keychains() # create object + + # get data from gNMI device + keychains.yfilter = YFilter.read + keychains = gnmi.get(provider, keychains) + process_keychains(keychains) # process object data + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-10-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-10-ydk.py new file mode 100755 index 0000000..e4c906d --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-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-lib-keychain-cfg. + +usage: gn-set-xr-lib-keychain-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_lib_keychain_cfg \ + as xr_lib_keychain_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_keychains(keychains): + """Add config data to keychains 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() + + keychains = xr_lib_keychain_cfg.Keychains() # create object + config_keychains(keychains) # add object configuration + + # set configuration on gNMI device + # keychains.yfilter = YFilter.replace + # gnmi.set(provider, keychains) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.json b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.json new file mode 100644 index 0000000..cc62d27 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.json @@ -0,0 +1,33 @@ +{ + "Cisco-IOS-XR-lib-keychain-cfg:keychains": { + "keychain": [ + { + "chain-name": "CHAIN1", + "macsec-keychain": { + "macsec-keys": { + "macsec-key": [ + { + "key-id": "10", + "macsec-lifetime": { + "start-hour": 0, + "start-minutes": 0, + "start-seconds": 0, + "start-date": 1, + "start-month": "jan", + "start-year": 2017, + "infinite-flag": true + }, + "macsec-key-string": { + "string": "101E584B5643475D5B547B79777C6663754356445055030F0F03055C504C430F0F", + "cryptographic-algorithm": "aes-128-cmac", + "encryption-type": "type7" + } + } + ] + } + } + } + ] + } +} + diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.py new file mode 100755 index 0000000..8e71c7e --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.py @@ -0,0 +1,106 @@ +#!/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-lib-keychain-cfg. + +usage: gn-set-xr-lib-keychain-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_lib_keychain_cfg \ + as xr_lib_keychain_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_keychains(keychains): + """Add config data to keychains object.""" + keychain = keychains.Keychain() + keychain.chain_name = "CHAIN1" + key = keychain.macsec_keychain.macsec_keys.MacsecKey() + key.key_id = "10" + key.macsec_key_string = key.MacsecKeyString() + key.macsec_key_string.string = "101E584B5643475D5B547B79777C6663754356445055030F0F03055C504C430F0F" + key.macsec_key_string.cryptographic_algorithm = xr_lib_keychain_cfg.MacsecCryptoAlg.aes_128_cmac + key.macsec_key_string.encryption_type = xr_lib_keychain_cfg.MacsecEncryption.type7 + key.macsec_lifetime = key.MacsecLifetime() + key.macsec_lifetime.start_hour = 0 + key.macsec_lifetime.start_minutes = 0 + key.macsec_lifetime.start_seconds = 0 + key.macsec_lifetime.start_date = 1 + key.macsec_lifetime.start_month = xr_lib_keychain_cfg.KeyChainMonth.jan + key.macsec_lifetime.start_year = 2017 + key.macsec_lifetime.infinite_flag = True + keychain.macsec_keychain.macsec_keys.macsec_key.append(key) + keychains.keychain.append(keychain) + + +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() + + keychains = xr_lib_keychain_cfg.Keychains() # create object + config_keychains(keychains) # add object configuration + + # set configuration on gNMI device + keychains.yfilter = YFilter.replace + gnmi.set(provider, keychains) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.txt b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.txt new file mode 100755 index 0000000..ccfbed3 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-20-ydk.txt @@ -0,0 +1,9 @@ +!! IOS XR Configuration version = 6.2.1 +key chain CHAIN1 + macsec + key 10 + key-string password 101E584B5643475D5B547B79777C6663754356445055030F0F03055C504C430F0F cryptographic-algorithm aes-128-cmac + lifetime 00:00:00 january 01 2017 infinite + ! + ! +! diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.json b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.json new file mode 100644 index 0000000..02ecf37 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.json @@ -0,0 +1,33 @@ +{ + "Cisco-IOS-XR-lib-keychain-cfg:keychains": { + "keychain": [ + { + "chain-name": "CHAIN2", + "macsec-keychain": { + "macsec-keys": { + "macsec-key": [ + { + "key-id": "20", + "macsec-lifetime": { + "start-hour": 0, + "start-minutes": 0, + "start-seconds": 0, + "start-date": 1, + "start-month": "jan", + "start-year": 2017, + "infinite-flag": true + }, + "macsec-key-string": { + "string": "0256550958525A771B1E584B5643475D5B547B79777C6663754356445055030F0F03055C504C430F0F07020006005E0D51570905574753520C5B575D72181B5F4E", + "cryptographic-algorithm": "aes-256-cmac", + "encryption-type": "type7" + } + } + ] + } + } + } + ] + } +} + diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.py new file mode 100755 index 0000000..d140e28 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.py @@ -0,0 +1,106 @@ +#!/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-lib-keychain-cfg. + +usage: gn-set-xr-lib-keychain-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_lib_keychain_cfg \ + as xr_lib_keychain_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_keychains(keychains): + """Add config data to keychains object.""" + keychain = keychains.Keychain() + keychain.chain_name = "CHAIN2" + key = keychain.macsec_keychain.macsec_keys.MacsecKey() + key.key_id = "20" + key.macsec_key_string = key.MacsecKeyString() + key.macsec_key_string.string = "0256550958525A771B1E584B5643475D5B547B79777C6663754356445055030F0F03055C504C430F0F07020006005E0D51570905574753520C5B575D72181B5F4E" + key.macsec_key_string.cryptographic_algorithm = xr_lib_keychain_cfg.MacsecCryptoAlg.aes_256_cmac + key.macsec_key_string.encryption_type = xr_lib_keychain_cfg.MacsecEncryption.type7 + key.macsec_lifetime = key.MacsecLifetime() + key.macsec_lifetime.start_hour = 0 + key.macsec_lifetime.start_minutes = 0 + key.macsec_lifetime.start_seconds = 0 + key.macsec_lifetime.start_date = 1 + key.macsec_lifetime.start_month = xr_lib_keychain_cfg.KeyChainMonth.jan + key.macsec_lifetime.start_year = 2017 + key.macsec_lifetime.infinite_flag = True + keychain.macsec_keychain.macsec_keys.macsec_key.append(key) + keychains.keychain.append(keychain) + + +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() + + keychains = xr_lib_keychain_cfg.Keychains() # create object + config_keychains(keychains) # add object configuration + + # set configuration on gNMI device + keychains.yfilter = YFilter.replace + gnmi.set(provider, keychains) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.txt b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.txt new file mode 100755 index 0000000..94ccf44 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-22-ydk.txt @@ -0,0 +1,9 @@ +!! IOS XR Configuration version = 6.2.1 +key chain CHAIN2 + macsec + key 20 + key-string password 0256550958525A771B1E584B5643475D5B547B79777C6663754356445055030F0F03055C504C430F0F07020006005E0D51570905574753520C5B575D72181B5F4E cryptographic-algorithm aes-256-cmac + lifetime 00:00:00 january 01 2017 infinite + ! + ! +! diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.json b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.json new file mode 100644 index 0000000..a9a8c70 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.json @@ -0,0 +1,60 @@ +{ + "Cisco-IOS-XR-lib-keychain-cfg:keychains": { + "keychain": [ + { + "chain-name": "CHAIN3", + "macsec-keychain": { + "macsec-keys": { + "macsec-key": [ + { + "key-id": "10", + "macsec-lifetime": { + "start-hour": 0, + "start-minutes": 0, + "start-seconds": 0, + "start-date": 1, + "start-month": "jan", + "start-year": 2017, + "end-hour": 23, + "end-minutes": 59, + "end-seconds": 59, + "end-date": 7, + "end-month": "jan", + "end-year": 2017 + }, + "macsec-key-string": { + "string": "01435756085F5359761C1F5B4A5142445C5C557878707D6562724255455754000E0802065D574D400E0806010101015D0C56560A04504650530B5A545C7519185E", + "cryptographic-algorithm": "aes-256-cmac", + "encryption-type": "type7" + } + }, + { + "key-id": "20", + "macsec-lifetime": { + "start-hour": 23, + "start-minutes": 0, + "start-seconds": 0, + "start-date": 7, + "start-month": "jan", + "start-year": 2017, + "end-hour": 23, + "end-minutes": 59, + "end-seconds": 59, + "end-date": 13, + "end-month": "jan", + "end-year": 2017 + }, + "macsec-key-string": { + "string": "04035C505A751F1C58415241475F5F567B73737E66617141564E5457030D0B010556544E430D0B05020A02025E0F5555090F5345535008595757761A1B5D4A5746", + "cryptographic-algorithm": "aes-256-cmac", + "encryption-type": "type7" + } + } + ] + } + } + } + ] + } +} + diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.py b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.py new file mode 100755 index 0000000..9f35751 --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.py @@ -0,0 +1,133 @@ +#!/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-lib-keychain-cfg. + +usage: gn-set-xr-lib-keychain-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_lib_keychain_cfg \ + as xr_lib_keychain_cfg +import os +import logging + + +YDK_REPO_DIR = os.path.expanduser("~/.ydk/") + +def config_keychains(keychains): + """Add config data to keychains object.""" + keychain = keychains.Keychain() + keychain.chain_name = "CHAIN3" + key = keychain.macsec_keychain.macsec_keys.MacsecKey() + key.key_id = "10" + key.macsec_key_string = key.MacsecKeyString() + key.macsec_key_string.string = "01435756085F5359761C1F5B4A5142445C5C557878707D6562724255455754000E0802065D574D400E0806010101015D0C56560A04504650530B5A545C7519185E" + key.macsec_key_string.cryptographic_algorithm = xr_lib_keychain_cfg.MacsecCryptoAlg.aes_256_cmac + key.macsec_key_string.encryption_type = xr_lib_keychain_cfg.MacsecEncryption.type7 + key.macsec_lifetime = key.MacsecLifetime() + key.macsec_lifetime.start_hour = 0 + key.macsec_lifetime.start_minutes = 0 + key.macsec_lifetime.start_seconds = 0 + key.macsec_lifetime.start_date = 1 + key.macsec_lifetime.start_month = xr_lib_keychain_cfg.KeyChainMonth.jan + key.macsec_lifetime.start_year = 2017 + key.macsec_lifetime.end_hour = 23 + key.macsec_lifetime.end_minutes = 59 + key.macsec_lifetime.end_seconds = 59 + key.macsec_lifetime.end_date = 7 + key.macsec_lifetime.end_month = xr_lib_keychain_cfg.KeyChainMonth.jan + key.macsec_lifetime.end_year = 2017 + keychain.macsec_keychain.macsec_keys.macsec_key.append(key) + + # Second key + key = keychain.macsec_keychain.macsec_keys.MacsecKey() + key.key_id = "20" + key.macsec_key_string = key.MacsecKeyString() + key.macsec_key_string.string = "04035C505A751F1C58415241475F5F567B73737E66617141564E5457030D0B010556544E430D0B05020A02025E0F5555090F5345535008595757761A1B5D4A5746" + key.macsec_key_string.cryptographic_algorithm = xr_lib_keychain_cfg.MacsecCryptoAlg.aes_256_cmac + key.macsec_key_string.encryption_type = xr_lib_keychain_cfg.MacsecEncryption.type7 + key.macsec_lifetime = key.MacsecLifetime() + key.macsec_lifetime.start_hour = 23 + key.macsec_lifetime.start_minutes = 0 + key.macsec_lifetime.start_seconds = 0 + key.macsec_lifetime.start_date = 7 + key.macsec_lifetime.start_month = xr_lib_keychain_cfg.KeyChainMonth.jan + key.macsec_lifetime.start_year = 2017 + key.macsec_lifetime.end_hour = 23 + key.macsec_lifetime.end_minutes = 59 + key.macsec_lifetime.end_seconds = 59 + key.macsec_lifetime.end_date = 13 + key.macsec_lifetime.end_month = xr_lib_keychain_cfg.KeyChainMonth.jan + key.macsec_lifetime.end_year = 2017 + keychain.macsec_keychain.macsec_keys.macsec_key.append(key) + keychains.keychain.append(keychain) + + +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() + + keychains = xr_lib_keychain_cfg.Keychains() # create object + config_keychains(keychains) # add object configuration + + # set configuration on gNMI device + keychains.yfilter = YFilter.replace + gnmi.set(provider, keychains) + + exit() +# End of script diff --git a/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.txt b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.txt new file mode 100755 index 0000000..96c7adb --- /dev/null +++ b/samples/basic/gnmi/models/cisco-ios-xr/Cisco-IOS-XR-lib-keychain-cfg/gn-set-xr-lib-keychain-cfg-24-ydk.txt @@ -0,0 +1,13 @@ +!! IOS XR Configuration version = 6.2.1 +key chain CHAIN3 + macsec + key 10 + key-string password 01435756085F5359761C1F5B4A5142445C5C557878707D6562724255455754000E0802065D574D400E0806010101015D0C56560A04504650530B5A545C7519185E cryptographic-algorithm aes-256-cmac + lifetime 00:00:00 january 01 2017 23:59:59 january 07 2017 + ! + key 20 + key-string password 04035C505A751F1C58415241475F5F567B73737E66617141564E5457030D0B010556544E430D0B05020A02025E0F5555090F5345535008595757761A1B5D4A5746 cryptographic-algorithm aes-256-cmac + lifetime 23:00:00 january 07 2017 23:59:59 january 13 2017 + ! + ! +!