2016-04-15 71 views
0

我正在使用脚本来自动配置Nodemanager,注册计算机并在其中启动de管理的服务器。我目前拥有的是(不完全):使用wlst获取计算机的受管服务器


connect(...) 
cd('/') 
for m in cmo.getMachines(): 
    nombre_machine=m.getName() 
    #Solo ejecutamos el NodeManager en el que estamos ejecutando el script. 
    if nombre_machine in HOST: 
     cd('/Machines/'+nombre_machine+'/NodeManager/'+nombre_machine) 
     machine=cmo 
     nm_srv_addrs[machine.getListenPort()] = machine.getListenAddress() 

for nm_port, nm_addr in nm_srv_addrs.iteritems(): 
    printInStyle('Iniciando Nodemanager, favor tener paciencia la primera vez.') 
    startNodeManager(verbose='false', NodeManagerHome=NM_HOME, ListenPort=str(nm_port), ListenAddress=nm_addr) 
    print 'Generando nodemanager.properties ', 
    while not os.path.exists(NM_PROP_FILE): 
     systime.sleep(10) 
     print '\b.', 
     sys.stdout.flush() 
    print 'Archivo creado!' 

cd('/') 
servidores = cmo.getServers() 
for s in servidores: 
    nombre = s.getName() 
    if nombre != 'AdminServer': 
     start(nombre) 

但最后一个序列将失败,因为会尝试启动所有服务器和我期待只在一个我”开始运行脚本。 我相信我在寻找的是一种过滤当前机器中的服务器的方法。 我会感谢任何帮助或建议。我只是从脚本开始。 感谢

回答

0

我想通了感谢this link

我就需要这样的一对夫妇的循环过滤:


import os 
cd('/') 
current_m='' 
machines = cmo.getMachines() 
for m in machines: 
    hostname = os.environ['HOSTNAME'] 
    nm = m.getNodeManager() 
    if nm.getListenAddress() in hostname: 
     current_m=m 

servers = cmo.getServers() 
for s in servers: 
    name = s.getName() 
    if name != 'AdminServer': 
     ref = getMBean('/Servers/'+name+'/Machine/'+current_m.getName()) 
     if ref != None: 
      start(name) 
相关问题