Examples¶
Switch¶
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 | from mdssdk.switch import Switch user = "yourswitchusername" pw = "yourswitchpassword" ip_address = "yourswitchip" # 10.197.155.110 p = 8443 # Set connection_type='https' for NXAPI # Set connection_type='ssh' for SSH switch_obj = Switch( ip_address=ip_address, username=user, password=pw, connection_type="https", port=p, timeout=30, verify_ssl=False, ) # Displaying switch name, version, image print("Name: " + switch_obj.name) print("Version: " + switch_obj.version) print("Kickstart Image: " + switch_obj.kickstart_image) print("System Image: " + switch_obj.system_image) # Changing name of switch switch_obj.name = "switch_test" print("Changed Name: " + switch_obj.name) # Enabling feature analytics switch_obj.feature("analytics", True) print("Analytics feature : " + str(switch_obj.feature("analytics"))) |
Download: ExampleScript
Module¶
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 | from mdssdk.switch import Switch user = "yourswitchusername" pw = "yourswitchpassword" ip_address = "yourswitchip" # 10.197.155.110 p = 8443 # Set connection_type='https' for NXAPI # Set connection_type='ssh' for SSH switch_obj = Switch( ip_address=ip_address, username=user, password=pw, connection_type="https", port=p, timeout=30, verify_ssl=False, ) # Print the information of all switch modules mod_handler = switch_obj.modules # dict of module objects print(mod_handler) for m in mod_handler.values(): print("Model : " + m.model) print("Module Number : " + str(m.module_number)) print("Ports : " + str(m.ports)) print("Status : " + m.status) print("Type : " + m.type) |
Download: ExampleScript
Vsan¶
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 | from mdssdk.switch import Switch from mdssdk.vsan import Vsan user = "yourswitchusername" pw = "yourswitchpassword" ip_address = "yourswitchip" # 10.197.155.110 p = 8443 # Set connection_type='https' for NXAPI # Set connection_type='ssh' for SSH sw = Switch( ip_address=ip_address, username=user, password=pw, connection_type="https", port=p, timeout=30, verify_ssl=False, ) # Example for creating and deleting 10 vsan objects from id 10 to 19 vsan = [] for i in range(10, 20): vsan.append(Vsan(switch=sw, id=i)) print("Vsan ID\tName\tState") for v in vsan: v.create() # creates vsan on switch print(str(v.id) + "\t\t" + v.name + "\t" + v.state) # print id,name,state v.delete() # deletes vsan |
Download: ExampleScript
DeviceAlias¶
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 | from mdssdk.devicealias import DeviceAlias from mdssdk.switch import Switch user = "yourswitchusername" pw = "yourswitchpassword" ip_address = "yourswitchip" # 10.197.155.110 p = 8443 # Set connection_type='https' for NXAPI # Set connection_type='ssh' for SSH sw = Switch( ip_address=ip_address, username=user, password=pw, connection_type="https", port=p, timeout=30, verify_ssl=False, ) # Instantiating DeviceAlias object d = DeviceAlias(sw) # Display the database, mode, distribute, locked print("Device Alias Database") print(d.database) print("Mode : " + d.mode) print("Distribute : " + str(d.distribute)) print("Locked : " + str(d.locked)) old = d.database d.clear_database() # Adding new device alias new = {"device1": "21:00:00:0e:1e:30:34:a5", "device2": "21:00:00:0e:1e:30:3c:c5"} d.create(new) prnt("Clearing database\nDatabase after adding new entry") print(d.database) # Renaming the device alias d.rename("device1", "device_new_name") print("Database after renaming device alias device1 as device_new_name") print(d.database) # Deleting device alias d.delete("device_new_name") d.delete("device2") # Recreating original database d.create(old) |
Download: ExampleScript
Zone¶
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 | from mdssdk.switch import Switch from mdssdk.vsan import Vsan from mdssdk.zone import Zone user = "yourswitchusername" pw = "yourswitchpassword" ip_address = "yourswitchip" # 10.197.155.110 p = 8443 # Set connection_type='https' for NXAPI # Set connection_type='ssh' for SSH sw = Switch( ip_address=ip_address, username=user, password=pw, connection_type="https", port=p, timeout=30, verify_ssl=False, ) # Instantiating Vsan object with id 2 v = Vsan(sw, 2) # Creating vsan v.create() # Instantiate zone object z = Zone(sw, "zone1", v.id) # Create new zone z.create() memlist = [ {"pwwn": "50:08:01:60:08:9f:4d:00"}, {"ip-address": "1.1.1.1"}, {"symbolic-nodename": "symbnodename"}, {"fwwn": "11:12:13:14:15:16:17:18"}, {"fcid": "0x123456"}, ] # Adding members to zone z.add_members(memlist) # Display zone name, vsan id, members print("Zone name: " + z.name) print("Vsan id: " + str(z.vsan.id)) print("Zone members: " + str(z.members)) # Removing members from zone z.remove_members(memlist) # Deleting zone z.delete() # Deleting vsan v.delete() |
Download: ExampleScript
Zoneset¶
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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | from mdssdk.devicealias import DeviceAlias from mdssdk.fc import Fc from mdssdk.portchannel import PortChannel from mdssdk.switch import Switch from mdssdk.vsan import Vsan from mdssdk.zone import Zone from mdssdk.zoneset import ZoneSet # Switch credentials user = "yourswitchusername" pw = "yourswitchpassword" ip_address = "yourswitchip" # 10.197.155.110 p = 8443 # Creating switch object sw = Switch( ip_address=ip_address, username=user, password=pw, connection_type="https", port=p, timeout=30, verify_ssl=False, ) # Instantiating Vsan object with id 2 v = Vsan(sw, 2) # Creating vsan v.create() # Creating Fc object for interface fc1/3 int13 = Fc(sw, "fc1/3") # Instantiating PortChannel object 1 pc1 = PortChannel(sw, 1) # Creating port channel pc1.create() # Adding interfaces to vsan 2 v.add_interfaces([int13, pc1]) # Instantiating DeviceAlias object d = DeviceAlias(sw) new = {"da1": "60:66:61:01:0e:00:01:ff"} # Adding new device alias d.create(new) # Instantiate zone object z = Zone(sw, "zone1", v.id) # Create new zone z.create() # Configuring fcalias sw.config("fcalias name somefcalias vsan " + str(v.id)) memlist = [ {"pwwn": "50:08:01:60:08:9f:4d:00"}, {"pwwn": "50:08:01:60:08:9f:4d:01"}, {"interface": int13.name}, {"device-alias": "da1"}, {"ip-address": "1.1.1.1"}, {"symbolic-nodename": "symbnodename"}, {"fwwn": "11:12:13:14:15:16:17:18"}, {"fcid": "0x123456"}, {"interface": pc1.name}, {"symbolic-nodename": "testsymnode"}, {"fcalias": "somefcalias"}, ] # Adding members to zone z.add_members(memlist) # Instantiating ZoneSet object zoneset = ZoneSet(sw, "zoneset1", v.id) # Creating zoneset zoneset.create() # Add members to zoneset zoneset.add_members([z]) # Activating zoneset zoneset.activate(True) # Display zoneset information print("Zoneset name: " + zoneset.name) print("Vsan id: " + str(zoneset.vsan.id)) print("Zoneset members: " + str(zoneset.members)) print("Activation: " + zonese.is_active()) # Removing members from zoneset zoneset.remove_members([z]) # Deleting zoneset zoneset.delete() # Removing members from zone z.remove_members(memlist) # Deleting zone z.delete() # Deleting vsan v.delete() # Deleting device alias d.delete("da1") # Deleting port channel pc1.delete() |
Download: ExampleScript
Multiprocessing¶
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 | # An example to show how we can do multiprocessing to execute some logic on multiple switches parallelly from mdssdk.switch import Switch from concurrent.futures import wait from concurrent.futures.thread import ThreadPoolExecutor import multiprocessing user = "your_switch_username" pw = "your_switch_password" iplist = ["ip1", "ip2"] p = 8443 myData = {} def runAnySwitchLogic(ip, user, pw, port): my_switch = Switch(ip, user, pw, "https", port=port, verify_ssl=False) status = isCFSoIpEnabled(my_switch) myData[my_switch.name] = status def isCFSoIpEnabled(sw): cmd = "show cfs status" # ensures that the output is in cli output format out = sw.show(cmd, raw_text=True) if "Distribution over IP : Disabled" in out: return "Disabled" return "Enabled" m = multiprocessing.Manager() allfutures = [] executor = ThreadPoolExecutor(len(iplist)) IP_list = [] CFS_list = [] for i in range(0, len(iplist)): ip = iplist[i] fut = executor.submit(runAnySwitchLogic, ip, user, pw, p) allfutures.append(fut) wait(allfutures) for swname, cfsstatus in myData.items(): print('CFS Distribution over IP on switch', swname, 'is', cfsstatus) |
Download: ExampleScript