2016-04-15 67 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) 
相關問題