SoftLayer API解绑指定VLAN与网关失败问题咨询
解决SoftLayer API解绑VLAN与网关的问题
兄弟,你之前用createObject绑定VLAN和网关的操作是对的,但解绑的时候踩了个小坑——deleteObject方法根本不认你传的networkGatewayId和networkVlanId,它要的是绑定关系本身的ID(也就是你创建绑定后返回的那个Network_Gateway_Vlan对象的主键ID)。
正确的解绑步骤:
1. 先获取绑定关系的ID
如果当初你创建绑定后没保存返回的ID,那就先通过API查询出对应网关和VLAN的绑定对象:
import SoftLayer # 初始化客户端 env = SoftLayer.create_client_from_env() # 替换成你的网关ID和VLAN ID TARGET_GATEWAY_ID = 65884 TARGET_VLAN_ID = 944459 # 查询该网关下所有绑定的VLAN关联关系 gateway_vlan_associations = env['Network_Gateway'].getNetworkGatewayVlans(id=TARGET_GATEWAY_ID) # 筛选出目标VLAN对应的关联对象 target_assoc = next(gv for gv in gateway_vlan_associations if gv['networkVlanId'] == TARGET_VLAN_ID) association_id = target_assoc['id']
2. 调用deleteObject完成解绑
拿到关联ID后,直接传入deleteObject方法即可:
# 执行解绑操作 result = env['Network_Gateway_Vlan'].deleteObject(id=association_id) print("解绑成功!返回结果:", result)
补充说明:
如果你当初创建绑定后,保存了createObject返回的res对象,那里面的id字段就是咱们需要的关联ID,直接用它就行,不用再走查询步骤,比如:
# 假设当初创建后保存了res # res = env['Network_Gateway_Vlan'].createObject(obj) # 直接用res['id']来解绑 env['Network_Gateway_Vlan'].deleteObject(id=res['id'])
内容的提问来源于stack exchange,提问作者Pierre-Yves Lochou
相关产品推荐
相关产品推荐

