SoftLayer_ObjectMask 对于 SoftLayer_Network_Gateway_Vlan::getObject

SoftLayer_ObjectMask for SoftLayer_Network_Gateway_Vlan::getObject

我想在 Python 中使用 SoftLayer_Network_Gateway_Vlan::getObject 以便在使用 createObject 之前检查 VLAN 是否已连接到网关。 我用这样一段代码createObject没问题:

    obj = {'bypassFlag':False, 'id':None, 'networkGatewayId':module.params['gateway_id'], 'networkVlanId':module.params['vlan_id']}
    try:
        res = env['Network_Gateway_Vlan'].createObject(obj)
    except SoftLayer.exceptions.SoftLayerAPIError as e:
        module.fail_json(msg=e.faultString)

但我不知道如何编写一段代码来检索已连接到网关的 VLAN 列表:(

如果有人有关于使用 getObject 方法的示例,那就太好了,谢谢!

为什么不只使用方法 getNetworkVlan?方法 returns 关联到 SoftLayer_Network_Gateway_Vlan 的 VLAN。

但是如果你想使用 getObject 方法,这是你需要使用的掩码:

env['SoftLayer_Network_Gateway_Vlan'].getObject(id= myIdGatewayVlan, mask= "mask[networkVlan]")

不过我觉得用这个比较好:

env['SoftLayer_Account'].getNetworkGateways( mask="mask[insideVlans[networkVlan]]")

这将列出您帐户中的所有网关及其关联的 vlan。

或者更好的是,你可以使用过滤器来检查 VLAN 是否已经设置在任何 SoftLayer_Network_Gateway_Vlan

env['SoftLayer_Account'].getNetworkGateways( mask="mask[insideVlans[networkVlan]]", filter={"networkGateways":{"insideVlans":{"networkVlan":{"id":{"operation":1319435}}}}})

注意:将 1319435 替换为您要检查的 VLAN 的 ID 如果上面的请求 returns 为空,则 VLAN 未附加到任何 SoftLayer_Network_Gateway_Vlan