Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 软层api:如何识别两个VLAN是否匹配VLAN路由器对? 背景_Python_Api_Ibm Cloud Infrastructure - Fatal编程技术网

Python 软层api:如何识别两个VLAN是否匹配VLAN路由器对? 背景

Python 软层api:如何识别两个VLAN是否匹配VLAN路由器对? 背景,python,api,ibm-cloud-infrastructure,Python,Api,Ibm Cloud Infrastructure,当我订购具有指定前端和后端VLAN的VSI时,会出现异常 VLAN的place order段落标记为 order_template = {... 'virtualGuests': [{'primaryBackendNetworkComponent': {'networkVlan': {'id': 2058375}}, 'domain': 'xxx', 'hostname': 'xxx', 'primaryNetworkComponent': {'networkVlan': {'id': 1698

当我订购具有指定前端和后端VLAN的VSI时,会出现异常

VLAN的place order段落标记为

order_template = {...
'virtualGuests': [{'primaryBackendNetworkComponent': {'networkVlan': {'id': 2058375}}, 'domain': 'xxx', 'hostname': 'xxx', 'primaryNetworkComponent': {'networkVlan': {'id': 1698647}}
...}
异常作为流:

SoftLayer.exceptions.SoftLayerAPIError: SoftLayerAPIError(SoftLayer_Exception_Public): When specifying frontend and backend VLANs, they must be on the appropriate router pair. The specified backend VLAN is on router `bcr02a.hkg02`, so the specified frontend VLAN should be on router `fcr02a.hkg02`. However, the specified frontend VLAN is on router `fcr01a.hkg02`. Please specify a matching VLAN router pair.
我知道
fcr01a
必须与
bcr01a
匹配

#get vlan info
object_mask = 'mask[id,name,primarySubnetId,vlanNumber,networkSpace,primaryRouter[id,datacenter[id,name]]]'
account.getNetworkVlans(mask=object_mask)
结果:

vlans = [
                {'primaryRouter': {'datacenter': {'id': 352494, 'name': 'hkg02'}, 'id': 212460}, 'primarySubnetId': 987829, 'vlanNumber': 1461, 'id': 1698651},...]
问题 如何获取更多信息以检查前端和bakcend是否匹配VLAN路由器对

或者,在调用account.GetNetworkVLAN时,如何设置掩码以获取fcr01a.hkg02


或者,是否有其他vlan信息项来标识对关系?

为了获得有关vlan对路由的更多信息,产品订单::GetVLAN将帮助您在订购期间检索可用的私有和公共vlan,您可以使用您作为值(352494)提供的locationId来缩小结果,不要忘记,此值应该与您在placeOrder方法中使用的数据中心相匹配。例如,在python脚本上使用以下命令:

locationId = 352494 #location id for Hong Kong 02 datacenter 
packageId = 46 #package for VSI.

result = client['Product_Order'].getVlans(locationId, packageId)
或者,您可以使用Account::GetNetworkVLAN查看以下url以获得更好的脚本

您可以通过将属性“hostname”添加到掩码并使用对象筛选器搜索所需值来改进代码,您可以尝试对代码进行以下改进:

objectMask=mask[id,name,primarySubnetId,vlanNumber,networkSpace,primaryRouter[id,hostname, datacenter[id,name]]]
objectFilter={"networkVlans":{"primaryRouter":{"hostname":{"operation":"fcr01a.hkg02"}}}}

account.getNetworkVlans(mask=object_mask, filter=objectFilter)
有关更多信息,请参见以下内容:

谢谢您的友好回复。您提供的对象掩码帮助我获取vlan的主机名。然后我可以根据主机名检查配对关系,如bcr02a.hkg02和fcr02a.hkg02。但是,你能告诉我,当我将掩码设置为softlayer api时,如何获得更多的对象掩码?通常,我知道根据sldn使用哪种api,但我不知道哪种掩码项可以用来获取更多信息…我建议您阅读这篇文章,为了知道在对象掩码中可以使用哪些项,您需要查看文档,例如,该方法返回类型为的数据,这样您就可以在那里看到它们的所有项,并且可以在对象掩码中使用它们。正如您所看到的,您只需要知道您的请求返回的数据类型,并且您可以在文档中看到它的掩码的所有有效项