09-21-2020 04:30 AM
Hi,
I'm trying to change admin status of an interface on a XE device (ASR920).
However running the code below does not seem to have any affect! It runs with no errors, but the interface status doesn't change.
Also if setting shutdown to Empty() brings the interface down, how can I bring it back up again?
import logging import ydk.models.cisco_ios_xe.Cisco_IOS_XE_native as xe_native from ydk.services.netconf_service import NetconfService, Datastore from ydk.providers.netconf_provider import NetconfServiceProvider from ydk.types import Empty def enable_logging(level): log = logging.getLogger('ydk') log.setLevel(level) handler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) log.addHandler(handler) def shutdown(native): gigabitethernet = native.interface.GigabitEthernet() gigabitethernet.name = "0/0/7" gigabitethernet.shutdown = Empty() native.interface.gigabitethernet.append(gigabitethernet) if __name__ == "__main__": enable_logging(logging.DEBUG) service = NetconfService() provider = NetconfServiceProvider(address="address", username="username", password="password") native = xe_native.Native() shutdown(native) service.edit_config(provider=provider, target=Datastore.running, config=native)
Attachment: DEBUG output from the logger
Solved! Go to Solution.
09-21-2020 08:55 AM
In YANG model:
leaf shutdown {
description
"Shutdown the selected interface";
type empty;
}
That means, if the leaf is set to Empty value (present), then interface is shut down; if the leaf is not present, then interface is up. This is basically repeats the CLI logic. Hence, if you want to bring interface up, you need delete leaf 'shutdown'.
import logging import ydk.models.cisco_ios_xe.Cisco_IOS_XE_native as xe_native from ydk.services.netconf_service import NetconfService, Datastore from ydk.providers.netconf_provider import NetconfServiceProvider from ydk.types import Empty def enable_logging(level): log = logging.getLogger('ydk') log.setLevel(level) handler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) log.addHandler(handler) def down_up(provider, shutdown_value): gigabitethernet = native.interface.GigabitEthernet() gigabitethernet.name = "0/0/7" gigabitethernet.shutdown = shutdown_value native = xe_native.Native()
native.interface.gigabitethernet.append(gigabitethernet)
service = NetconfService()
service.edit_config(provider=provider, target=Datastore.running, config=native) if __name__ == "__main__": enable_logging(logging.DEBUG) provider = NetconfServiceProvider(address="address", username="username", password="password") # Shutdown interface down_up(provider, Empty())
# Bring up interface
down_up(provider, YFilter.delete)
09-21-2020 08:55 AM
In YANG model:
leaf shutdown {
description
"Shutdown the selected interface";
type empty;
}
That means, if the leaf is set to Empty value (present), then interface is shut down; if the leaf is not present, then interface is up. This is basically repeats the CLI logic. Hence, if you want to bring interface up, you need delete leaf 'shutdown'.
import logging import ydk.models.cisco_ios_xe.Cisco_IOS_XE_native as xe_native from ydk.services.netconf_service import NetconfService, Datastore from ydk.providers.netconf_provider import NetconfServiceProvider from ydk.types import Empty def enable_logging(level): log = logging.getLogger('ydk') log.setLevel(level) handler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) log.addHandler(handler) def down_up(provider, shutdown_value): gigabitethernet = native.interface.GigabitEthernet() gigabitethernet.name = "0/0/7" gigabitethernet.shutdown = shutdown_value native = xe_native.Native()
native.interface.gigabitethernet.append(gigabitethernet)
service = NetconfService()
service.edit_config(provider=provider, target=Datastore.running, config=native) if __name__ == "__main__": enable_logging(logging.DEBUG) provider = NetconfServiceProvider(address="address", username="username", password="password") # Shutdown interface down_up(provider, Empty())
# Bring up interface
down_up(provider, YFilter.delete)
09-21-2020 09:04 AM
Thanks! It worked
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide