2017-07-06 6 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の2次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を参照してください。

関連する問題