PDU automation with port

This commit is contained in:
Amrit Raj
2021-09-15 17:01:18 +05:30
parent 0f4b65aa0d
commit 50c2a1cd6e
2 changed files with 569 additions and 6 deletions

View File

@@ -1,14 +1,473 @@
{
"basic-01":
"basic-01-testing":
{
"host": "192.168.200.49",
"username": "admin",
"password": "Lanforge12345!"
},
"basic-02":
"basic-01": {
"controller": {
"url": "https://wlan-portal-svc-nola-02.cicd.lab.wlan.tip.build",
"username": "support@example.com",
"password": "support",
"version": "1.1.0-SNAPSHOT",
"commit_date": "2021-06-01"
},
"access_point": [
{
"host": "192.168.200.49",
"username": "admin",
"password": "Lanforge12345!"
"model": "ecw5410",
"mode": "wifi5",
"serial": "3c2c99f44e77",
"jumphost": "True",
"ip": "10.28.3.100",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP1",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/ecw5410/trunk/ecw5410-1.2.0-rc2.tar.gz"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.6",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy4"
],
"5G-Radio": [
"1.1.wiphy5"
],
"AX-Radio": [
"1.1.wiphy0",
"1.1.wiphy1",
"1.1.wiphy2",
"1.1.wiphy3"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "wlan0",
"5G-Station-Name": "wlan1",
"AX-Station-Name": "ax"
}
}
},
"basic-02": {
"controller": {
"url": "https://wlan-portal-svc-nola-02.cicd.lab.wlan.tip.build",
"username": "support@example.com",
"password": "support",
"version": "1.1.0-SNAPSHOT",
"commit_date": "2021-06-01"
},
"access_point": [
{
"model": "eap101",
"mode": "wifi6",
"serial": "34efb6af48db",
"jumphost": "True",
"ip": "10.28.3.100",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP2",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/eap101/trunk/eap101-1.2.0-rc2.tar.gz"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.8",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy4"
],
"5G-Radio": [
"1.1.wiphy5"
],
"AX-Radio": [
"1.1.wiphy0",
"1.1.wiphy1",
"1.1.wiphy2",
"1.1.wiphy3"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "wlan0",
"5G-Station-Name": "wlan0",
"AX-Station-Name": "ax"
}
}
},
"basic-03": {
"controller": {
"url": "https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001",
"username": "tip@ucentral.com",
"password": "openwifi"
},
"access_point": [
{
"model": "ec420",
"mode": "wifi5",
"serial": "001122090801",
"jumphost": "True",
"ip": "127.0.0.1",
"username": "lanforge",
"password": "pumpkin77",
"port": 8833,
"jumphost_tty": "/dev/ttyAP3",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/tplink_ec420/20210728-tplink_ec420-uCentral-trunk-12ad0d5-upgrade.bin"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.10",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy4"
],
"5G-Radio": [
"1.1.wiphy5"
],
"AX-Radio": [
"1.1.wiphy0",
"1.1.wiphy1",
"1.1.wiphy2",
"1.1.wiphy3"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "sta00",
"5G-Station-Name": "sta10",
"AX-Station-Name": "ax"
}
}
},
"basic-04": {
"controller": {
"url": "https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001",
"username": "tip@ucentral.com",
"password": "openwifi"
},
"access_point": [
{
"model": "ecw5211",
"mode": "wifi5",
"serial": "68215fda456d",
"jumphost": "True",
"ip": "10.28.3.100",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP5",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap102/20210625-edgecore_eap102-uCentral-trunk-4225122-upgrade.bin"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.12",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy4"
],
"5G-Radio": [
"1.1.wiphy5"
],
"AX-Radio": [
"1.1.wiphy0",
"1.1.wiphy1",
"1.1.wiphy2",
"1.1.wiphy3"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "wlan0",
"5G-Station-Name": "wlan0",
"AX-Station-Name": "ax"
}
}
},
"basic-05": {
"controller": {
"url": "https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001",
"username": "tip@ucentral.com",
"password": "openwifi"
},
"access_point": [
{
"model": "wf188n",
"mode": "wifi6",
"serial": "0000c1018812",
"jumphost": "True",
"ip": "10.28.3.103",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP1",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/cig_wf188/20210729-cig_wf188-v2.0.0-rc2-ec3662e-upgrade.bin"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.28",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy2"
],
"5G-Radio": [
"1.1.wiphy3"
],
"AX-Radio": [
"1.1.wiphy0",
"1.1.wiphy1",
"1.1.wiphy2",
"1.1.wiphy3"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth1",
"2.4G-Station-Name": "sta00",
"5G-Station-Name": "sta10",
"AX-Station-Name": "ax"
}
}
},
"basic-06": {
"controller": {
"url": "https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001",
"username": "tip@ucentral.com",
"password": "openwifi"
},
"access_point": [
{
"model": "eap102",
"mode": "wifi6",
"serial": "903cb39d6918",
"jumphost": "True",
"ip": "10.28.3.103",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP2",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap102/20210625-edgecore_eap102-uCentral-trunk-4225122-upgrade.bin"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.30",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy0",
"1.1.wiphy2"
],
"5G-Radio": [
"1.1.wiphy1",
"1.1.wiphy3"
],
"AX-Radio": [
"1.1.wiphy4",
"1.1.wiphy5",
"1.1.wiphy6",
"1.1.wiphy7"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "wlan0",
"5G-Station-Name": "wlan0",
"AX-Station-Name": "ax"
}
}
},
"basic-07": {
"controller": {
"url": "https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001",
"username": "tip@ucentral.com",
"password": "openwifi"
},
"access_point": [
{
"model": "eap101",
"mode": "wifi6",
"serial": "903cb36ae223",
"jumphost": "True",
"ip": "10.28.3.103",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP3",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap101/20210729-edgecore_eap101-v2.0.0-rc2-02244b8-upgrade.bin"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.32",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"wiphy4"
],
"5G-Radio": [
"wiphy5"
],
"AX-Radio": [
"wiphy0",
"wiphy1",
"wiphy2",
"wiphy3"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "sta10",
"5G-Station-Name": "sta00",
"AX-Station-Name": "ax"
}
}
},
"basic-08": {
"controller": {
"url": "https://sec-ucentral-qa01.cicd.lab.wlan.tip.build:16001",
"username": "tip@ucentral.com",
"password": "openwifi"
},
"access_point": [
{
"model": "wf194c",
"mode": "wifi6",
"serial": "089b4bb2f10c",
"jumphost": "True",
"ip": "10.28.3.103",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP5",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/cig_wf194c/20210729-cig_wf194c-v2.0.0-rc2-02244b8-upgrade.bin"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.34",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"1.1.wiphy0",
"1.1.wiphy2"
],
"5G-Radio": [
"1.1.wiphy1",
"1.1.wiphy3"
],
"AX-Radio": [
"1.1.wiphy4",
"1.1.wiphy5",
"1.1.wiphy6",
"1.1.wiphy7"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "wlan0",
"5G-Station-Name": "wlan0",
"AX-Station-Name": "ax"
}
}
},
"mesh": {
"controller": {
"url": "http://wlan-portal-svc-digicert.cicd.lab.wlan.tip.build",
"username": "support@example.com",
"password": "support",
"version": "1.1.0-SNAPSHOT",
"commit_date": "2021-06-01"
},
"access_point": [
{
"model": "eap101",
"mode": "wifi6",
"serial": "34efb6af4a7a",
"jumphost": "True",
"ip": "10.28.3.101",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP2",
"version": "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/eap101/trunk/eap101-1.1.0.tar.gz"
}
],
"traffic_generator": {
"name": "lanforge",
"details": {
"ip": "10.28.3.14",
"port": 8080,
"ssh_port": 22,
"2.4G-Radio": [
"wiphy0",
"wiphy2"
],
"5G-Radio": [
"wiphy1",
"wiphy3"
],
"AX-Radio": [
"wiphy4",
"wiphy5",
"wiphy6",
"wiphy7"
],
"upstream": "1.1.eth2",
"upstream_subnet": "10.28.2.1/24",
"uplink": "1.1.eth3",
"2.4G-Station-Name": "wlan0",
"5G-Station-Name": "wlan0",
"AX-Station-Name": "ax"
}
}
},
"interop": {
"controller": {
"url": "https://wlan-portal-svc-nola-02.cicd.lab.wlan.tip.build",
"username": "support@example.com",
"password": "support",
"version": "19.07-SNAPSHOT",
"commit_date": "2021-06-01"
},
"access_point": [
{
"model": "ecw5410",
"mode": "wifi5",
"serial": "68215fd2f78c",
"jumphost": "True",
"ip": "10.28.3.102",
"username": "lanforge",
"password": "pumpkin77",
"port": 22,
"jumphost_tty": "/dev/ttyAP1",
"version": "https://tip-tip-wlan-cloud-docker-repo.jfrog.io/artifactory/tip-wlan-ap-firmware/ecw5410/dev/ecw5410-2021-07-28-pending-0ec23e8.tar.gz"
}
],
"traffic_generator": {
"name": "Perfecto",
"details": {
"securityToken": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJqdGkiOiJjYjRjYjQzYi05Y2FiLTQxNzQtOTYxYi04MDEwNTZkNDM2MzgiLCJleHAiOjAsIm5iZiI6MCwiaWF0IjoxNjExNTk0NzcxLCJpc3MiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRoMi5wZXJmZWN0b21vYmlsZS5jb20vYXV0aC9yZWFsbXMvdGlwLXBlcmZlY3RvbW9iaWxlLWNvbSIsInN1YiI6IjdiNTMwYWUwLTg4MTgtNDdiOS04M2YzLTdmYTBmYjBkZGI0ZSIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJvZmZsaW5lLXRva2VuLWdlbmVyYXRvciIsIm5vbmNlIjoiZTRmOTY4NjYtZTE3NS00YzM2LWEyODMtZTQwMmI3M2U5NzhlIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiYWNkNTQ3MTctNzJhZC00MGU3LWI0ZDctZjlkMTAyNDRkNWZlIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZXBvcnRpdW0iOnsicm9sZXMiOlsiYWRtaW5pc3RyYXRvciJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.SOL-wlZiQ4BoLLfaeIW8QoxJ6xzrgxBjwSiSzkLBPYw",
"perfectoURL": "tip"
}
}
}
}

104
tools/pdu_v3.py Normal file
View File

@@ -0,0 +1,104 @@
#!/usr/bin/env python3
"""
Date: 15-09-2021
By: Amrit Raj @ Candela Technologies Pvt. ltd.
Note: Please ensure that PDU is powered on
Command line to be used as
python pdu_automation.py --host 192.168.200.49 --user admin --password pass1234 --action on/off/cycle --port all/specific_port_number
Eg 1: python pdu_v3.py --host 192.168.200.49 --user admin --password pass1234 --action off --port 1
Eg 2: python pdu_v3.py --host 192.168.200.49 --user admin --password pass1234 --action off --port 1,2,3,4
Eg 3: python pdu_v3.py --host 192.168.200.49 --user admin --password pass1234 --action cycle --port all
"""
import os
import json
import time
import argparse
from typing import Sequence
from typing import Optional
try:
import dlipower
except:
print('Please wait we are installing DLI Power')
os.system('pip install dlipower')
class setup:
try:
def __init__(self, hostname, user, password):
self.hostname = hostname
self.user = user
self.password = password
self.power_switch = dlipower.PowerSwitch(hostname=self.hostname, userid=self.user, password=self.password)
except:
print('PDU device is Off')
class switch_on(setup):
def __init__(self, hostname, user, password, port=None):
super().__init__(hostname, user, password)
self.port = port
if self.port != 'all':
try:
port = str(self.port).split(",")
for i in port:
self.power_switch[int(i)-1].state = "ON"
except:
self.power_switch[int(self.port)-1].state = "ON"
else:
for outlet in self.power_switch:
outlet.state = 'ON'
class switch_off(setup):
def __init__(self, hostname, user, password, port=None):
super().__init__(hostname, user, password)
self.port = port
if self.port != 'all':
try:
port = str(self.port).split(",")
for i in port:
self.power_switch[int(i) - 1].state = "OFF"
except:
self.power_switch[int(self.port) - 1].state = "OFF"
else:
for outlet in self.power_switch:
outlet.state = 'ON'
class print_status(setup):
def __init__(self, hostname, user, password):
super().__init__(hostname, user, password)
print(self.power_switch)
def main(argv: Optional[Sequence[str]] = None):
parser = argparse.ArgumentParser()
parser.add_argument('--host', help='Please provide host name eg: 192.168.200.65')
parser.add_argument('--username', help='Please provide username eg: admin')
parser.add_argument('--password', help='Please provide password eg: 1234')
parser.add_argument('--action', help='Switches all Outlets in ON Mode eg: --on or --off\n')
parser.add_argument('--port', help='Please provide port name eg: --port lanforge')
args = parser.parse_args(argv)
dic = vars(args)
# if user enter ports as 1,6,7
# port = [1,6,7]
# print(dic)
if dic['action'] == 'on':
set = setup(dic['host'], dic['username'], dic['password'])
on = switch_on(dic['host'], dic['username'], dic['password'], dic['port'])
elif dic['action'] == 'off':
set = setup(dic['host'], dic['username'], dic['password'])
# for single in port
off = switch_off(dic['host'], dic['username'], dic['password'], dic['port'])
# off = switch_on(dic['action'])
elif dic['action'] == 'cycle':
set = setup(dic['host'], dic['username'], dic['password'])
on = switch_off(dic['host'], dic['username'], dic['password'], dic['port'])
off = switch_on(dic['host'], dic['username'], dic['password'], dic['port'])
else:
print('Command not found')
if __name__ == '__main__':
main()