-
Notifications
You must be signed in to change notification settings - Fork 0
/
ncs_scripting.py
93 lines (69 loc) · 2.96 KB
/
ncs_scripting.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import ncs
def update_device_attribute_dry_run(device_name: str, hostname: str) -> dict:
with ncs.maapi.single_write_trans(
user="admin", context="system"
) as transaction:
root = ncs.maagic.get_root(backend=transaction)
root.devices.device[device_name].hostname = hostname
commit_params = transaction.get_params()
commit_params.dry_run_native()
dry_run_result = transaction.apply_params(
keep_open=True, params=commit_params
)
print(f"{dry_run_result=}")
# TIP: See the attributes of the device object
def update_device_attribute(device_name: str, hostname: str) -> None:
with ncs.maapi.single_write_trans(
user="admin", context="system"
) as transaction:
root = ncs.maagic.get_root(backend=transaction)
root.devices.device[device_name].config.hostname = hostname
transaction.apply()
print("Transaction applied")
def see_object_attributes() -> None:
maapi = ncs.maapi.Maapi()
maapi.start_user_session(user="admin", context="system", groups=[])
transaction = maapi.start_write_trans()
root = ncs.maagic.get_root(backend=transaction)
for device in root.devices.device:
print("#" * 50)
print(dir(device))
maapi.close()
def see_device_address() -> None:
maapi = ncs.maapi.Maapi()
maapi.start_user_session(user="admin", context="system", groups=[])
transaction = maapi.start_write_trans()
root = ncs.maagic.get_root(backend=transaction)
for device in root.devices.device:
print(f"Device {device.name} address {device.address}")
print(f"{dir(device.config)=}")
maapi.close()
def show_xr_command(device_name: str, show_command: str) -> None:
with ncs.maapi.Maapi() as maapi:
with ncs.maapi.Session(maapi=maapi, user="admin", context="system"):
root = ncs.maagic.get_root(backend=maapi)
device = root.devices.device[device_name]
cli_any_command = device.live_status.cisco_ios_xr_stats__exec.show
command = cli_any_command.get_input()
command.args = [show_command]
result = cli_any_command.request(command)
print(result.result)
def get_device_hostname(device_name: str) -> None:
with ncs.maapi.single_read_trans(
user="admin", context="system"
) as transaction:
root = ncs.maagic.get_root(backend=transaction)
device = root.devices.device[device_name]
result = device.config.hostname
print(f"{result=}")
if "__main__" == __name__:
HOSTNAME = "devwks-2551"
DEVICE_NAME = "core-rtr0"
# see_object_attributes()
# see_device_address()
update_device_attribute_dry_run(device_name=DEVICE_NAME, hostname=HOSTNAME)
update_device_attribute(device_name=DEVICE_NAME, hostname=HOSTNAME)
# show_xr_command(
# device_name=DEVICE_NAME, show_command="running-config hostname"
# )
# get_device_hostname(device_name=DEVICE_NAME)