本文介绍了在某些吊舱中查找VSi或裸金属的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有一种方法可以搜索数据中心中的Pod,然后获取这些Pod中的服务器?我在某处读到它是有可能的,但最后一个问题是关于REST的.目前正在使用Python API
Is there a way to search pods in a datacenter then grab the servers that are in those pods? I read somewhere that it's somewhat possible but the last question was regarding REST. Currently utitlizing the Python API
推荐答案
尝试以下python脚本:
Try this python script:
"""
List servers according pods from a specific datacenter
Important manual pages
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getHardware
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getVirtualGuests
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware
http://sldn.softlayer.com/reference/datatypes/SoftLayer_VirtualGuests
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint
from prettytable import PrettyTable
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
# Define datacenter e.g: dal05, dal09, ams01, sao01, etc
datacenter = 'ams01'
# Declare a new API service objects for SoftLayer_Account
accountClient = client['SoftLayer_Account']
# Define objectMask and objectFilters to get additional information
objectMask = 'mask[primaryNetworkComponent[router[hostname]]]'
objectFilterBms = {"hardware": {"datacenter": {"name": {"operation": datacenter}}}}
objectFilterVsi = {"virtualGuests": {"datacenter": {"name": {"operation": datacenter}}}}
# Define array to add pods
pods = []
try:
# Getting servers and vsis
servers = accountClient.getHardware(mask=objectMask, filter=objectFilterBms)
vsis = accountClient.getVirtualGuests(mask=objectMask, filter=objectFilterVsi)
# Getting pods from servers
for server in servers:
if server['primaryNetworkComponent']['router']['hostname'] not in pods:
pods.append(server['primaryNetworkComponent']['router']['hostname'])
for vsi in vsis:
if vsi['primaryNetworkComponent']['router']['hostname'] not in pods:
pods.append(vsi['primaryNetworkComponent']['router']['hostname'])
# Printing servers according pods
for pod in pods:
table = []
tableDetails = PrettyTable(['POD', 'Server Id', 'Hostname', 'Domain', 'Type'])
print("POD: %s " % pod)
for server in servers:
if pod in server['primaryNetworkComponent']['router']['hostname']:
tableDetails.add_row([pod, server['id'], server['hostname'], server['domain'], 'Hardware'])
#print(" Server Id: %s Hostname: %s Domain: %s" % (server['id'], server['hostname'], server['domain']))
for vsi in vsis:
if pod in vsi['primaryNetworkComponent']['router']['hostname']:
tableDetails.add_row([pod, vsi['id'], vsi['hostname'], vsi['domain'], 'Virtual Guest'])
#print(" Virtual Server Id: %s Hostname: %s Domain: %s" % (vsi['id'], vsi['hostname'], vsi['domain']))
print(tableDetails)
except SoftLayer.SoftLayerAPIError as e:
print("Error. " % (e.faultCode, e.faultString))
它显示了来自特定数据中心每个Pod的裸机和虚拟服务器,请尝试一下,让我知道您是否需要进一步的帮助或任何疑问
It shows bare metal and virtual servers from each pod from a specific datacenter, try it and let me know if you need further assistance or any doubt
这篇关于在某些吊舱中查找VSi或裸金属的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!