improve ip process func

This commit is contained in:
arT
2025-08-01 20:35:36 +08:00
parent f5f63c2157
commit dd04b6bac8

28
main.py
View File

@ -62,6 +62,18 @@ def get_ips(server_id:int):
elif value["ipAttributes"]["isIpv6"] == 1:
INET6.append(f'{value["ip"]}/112')
return {"INET": INET, "INET6": INET6}
def get_af(subnet_id:int):
type:int = 4
af_url = f'https://{TENANTOS}/api/subnets/{subnet_id}'
af_response = requests.get(af_url, headers=header)
af_data = json.load(af_response.json())
if af_data["result"]["type"] == "v4":
return type
else:
type = 6
return type
# JunOS
def junos_add_config_builder(vrf:str, inet:list, inet6:list, port:str):
@ -88,14 +100,16 @@ if __name__ == "__main__":
)
parser.add_argument("--action", type=str, required=True)
parser.add_argument("--server", type=int, required=True)
parser.add_argument("--ips", type=str, required=True)
parser.add_argument("--subnet", type=int, required=True)
parser.add_argument("--ip", type=str, required=True)
args = parser.parse_args()
# Process
process = check_tag(args.server)
if process:
switch = get_switch_info(args.server)
ips = get_ips(args.server)
ip = args.ip
af = get_af(args.subnet)
if args.action == "add":
config = junos_add_config_builder(VRF, ips["INET"], ips["INET6"], switch["port_name"])
switch_connect = ConnectHandler(
@ -104,9 +118,9 @@ if __name__ == "__main__":
username = switch["switch_user"],
password = switch["switch_pass"],
)
if "inet6" in config:
switch_connect.send_config_set(config["inet"])
switch_connect.send_config_set(config["inet6"])
else:
switch_connect.send_config_set(config["inet"])
if af == 4:
config_command = [ f'set routing-instances {VRF} routing-options static route {ip}/32 next-hop {switch["port_name"]}' ]
elif af == 6:
config_command = [ f'set routing-instances {VRF} routing-options rib {VRF}.inet6.0 static route {ip}/64 next-hop {switch["port_name"]}' ]
switch_connect.send_config_set(config_command)
switch_connect.disconnect()