2017-07-06 25 views
0

背景

我可以流动的python脚本得到一个VLAN子网信息:Softlayer API:如何获取属于哪个VSI的静态子网?

# Declare an Object Mask to get additional information 
    object_mask = 'mask[primaryRouter,subnets[id,billingItem,cidr,version,addressSpace,subnetType,networkIdentifier,totalIpAddresses,usableIpAddressCount,ipAddresses[ipAddress, isReserved, virtualGuest, hardware]]]' 
    # Declare an Object Filter to get information from specific vlan 
    filter = {'networkVlans': {'id': {'operation': vlan_id}}} 
    return self.sl_account.getNetworkVlans(mask=object_mask, filter=filter)[0] 

而且结果中包含:

[... 'subnets': [{'cidr': 28, 
       'id': 986245, 
       'billingItem': {'allowCancellationFlag': 1,} 
       orderItemId': 223126909, 
       'ipAddresses': [{'ipAddress': '169.38.73.xxx', ... 
       'subnetType': 'STATIC_IP_ROUTED', 
      'totalIpAddresses': '8', 
      'usableIpAddressCount': '5', 
      'version': 4}, 
      ...] 
      } 
      ... 
      ]] 

问题

STATIC_IP_ROUTED子网的结果做不包含virtualGuest项目。

  1. 现在我想知道哪个VSI绑定了这个子网?其他面具可以帮助吗?

  2. 或者,如何获得vsi的辅助ip信息?

回答

1

您可以添加子网关系属性,更深入和显示上的子网是通过属性endpointIpAddress绑定的VSI。

请前面提到的面膜尝试代码:

# Declare an Object Mask to get additional information 
object_mask = 'mask[primaryRouter,subnets[id,billingItem,cidr,version,addressSpace,subnetType,networkIdentifier,totalIpAddresses,usableIpAddressCount,ipAddresses[id, ipAddress, virtualGuest[id], hardware[id]]], subnets[endPointIpAddress[id,ipAddress,subnet[id, datacenter[longName,name]],hardware[id,fullyQualifiedDomainName],virtualGuest[id,fullyQualifiedDomainName]]]]' 

# Declare an Object Filter to get information from specific vlan 
filter = {'networkVlans': {'id': {'operation': vlan_id}}} 

return self.sl_account.getNetworkVlans(mask=object_mask, filter=filter)[0] 

或者你可以使用SoftLayer_Account :: getSubnets方法。

# Declare an Object Mask to get additional subnet information 
object_mask = 'mask[id, networkIdentifier, subnetType, totalIpAddresses, datacenter[longName, name], networkVlan[id, vlanNumber], endPointIpAddress[id,ipAddress,subnet[id, datacenter[longName,name]],hardware[id,fullyQualifiedDomainName],virtualGuest[id,fullyQualifiedDomainName]]]' 

# Declare an Object Filter to get information from specific Subnet. 
filter = {"subnets":{"id":{"operation":subnet_id}}} 

subnetsResult = client ['Account'].getSubnets(filter = filter, mask = object_mask) 

print(subnetsResult) 

在这两种解决方案中,您将看到VirtualGuest物品信息。

为了检索VSI的辅助IP地址,请参考此文章How to get secondary ip addresses

相关问题