无法构造python类
我有以下函数,它们在Python脚本的边界内工作无法构造python类,python,Python,我有以下函数,它们在Python脚本的边界内工作 loop\u vCenter函数将返回带有cluster:host的词汇表 subs_per_socket函数将返回esx的套接字数 def loop_vcenters(vcenters): #------------------------- connect to vcenter ---------------------------------------- si = SmartConnect(host = vcenters,
loop\u vCenter
函数将返回带有cluster:host的词汇表
subs_per_socket
函数将返回esx的套接字数
def loop_vcenters(vcenters):
#------------------------- connect to vcenter ----------------------------------------
si = SmartConnect(host = vcenters,user = 'username',pwd = 'password' ,sslContext=context)
# disconnect from vcenter one done
atexit.register(Disconnect, si)
#get the object content from vcenter
content = si.RetrieveContent()
#list clusters
cluster_host_dic_list=[]
cluster_name = ""
for cluster_obj in get_obj(content, vim.ComputeResource):
cluster=cluster_obj.name
hosts=[]
for host in cluster_obj.host:
hosts.append(host.name)
#create dictinary ,key=cluster value=esx
cluster_dic={cluster:hosts}
cluster_host_dic_list.append(cluster_dic)
return cluster_host_dic_list
def subs_per_socket(host):
shost = content.searchIndex.FindByDnsName(dnsName=host, vmSearch=False)
socket_count = shost.summary.hardware.numCpuPkgs
sub_per_socket = socket_count/2
return sub_per_socket
我想把这两个函数都放到一个类中,但我不知道如何实现
class loop_vcenters:
def hosts_dic(self,name):
si = SmartConnect(host = vcenters,user = 'username',pwd = 'password' ,sslContext=context)
atexit.register(Disconnect, si)
content = si.RetrieveContent()
cluster_host_dic_list=[]
cluster_name = ""
for cluster_obj in get_obj(content, vim.ComputeResource):
cluster=cluster_obj.name
hosts=[]
for host in cluster_obj.host:
hosts.append(host.name)
cluster_dic={cluster:hosts}
cluster_host_dic_list.append(cluster_dic)
return cluster_host_dic_list
循环\u vCenter
函数那样获取主机字典subs\u per\u socket(host)
函数添加到类中d = loop_vcenters.host_dic('vcenters')
这将把集群主机dic列表返回给变量d
要添加Sub_per_socket(host),只需在类下定义它,就像在其他函数中一样。在
循环\u vCenter
函数中,您使用了参数vCenter
,但主机dic
使用名称。因此,对于Python来说,vCenter
变量必须来自外部(在本例中为全局)范围
d = loop_vcenters('vcenters')
d = loop_vcenters.host_dic('vcenters')