@@ -22,7 +22,7 @@ def create_node(jms_url,headers,now,node_id,cloud,account):
2222 new_node_dict = {i ['value' ]:i ['id' ] for i in reget_node_list }
2323 return new_node_dict
2424
25- def update_jms_ecs (jms_url ,headers ,new_node_dict ,node_id ,cloud ,account ,ecs_info ,custom_ecs_info ):
25+ def update_jms_ecs (jms_ver , jms_url ,headers ,new_node_dict ,node_id ,cloud ,account ,ecs_info ,custom_ecs_info ):
2626 #比较云主机与JMS中对应node的主机列表,删除jms中多余的主机
2727 ecs_url = f"{ jms_url } /api/v1/assets/assets/"
2828 reget_ecs_list = requests .request ("GET" , f'{ ecs_url } ?node={ node_id } ' , headers = headers ).json ()
@@ -56,19 +56,32 @@ def update_jms_ecs(jms_url,headers,new_node_dict,node_id,cloud,account,ecs_info,
5656 protocols = custom_info [ostype ][0 ]
5757 platform = ostype .title ()
5858 admin_user = custom_info [ostype ][1 ]
59- payload = {
60- "ip" : ip ,
61- "hostname" : iname ,
59+ if jms_ver == 'V3' :
60+ ecs_url = f"{ jms_url } /api/v1/assets/hosts/"
61+ proto ,port = protocols [0 ].split ('/' )
62+ payload = {
6263 "address" : ip ,
6364 "name" : iname ,
65+ "protocols" : [{"name" : proto ,"port" : port }],
66+ "platform" : '5' if platform == 'Windows' else '1' ,
67+ "is_active" : True ,
68+ "domain" : "" ,
69+ "accounts" :[{"template" : admin_user .strip ()}],
70+ "nodes" : [nodes ],
71+ "comment" : comment
72+ }
73+ else :
74+ payload = {
75+ "ip" : ip ,
76+ "hostname" : iname ,
6477 "protocols" : protocols ,
6578 "platform" : platform ,
6679 "is_active" : True ,
6780 "domain" : "" ,
6881 "admin_user" : admin_user .strip (),
6982 "nodes" : [nodes ],
7083 "comment" : comment
71- }
84+ }
7285 try :
7386 if ip in jms_ecs_dict .keys ():
7487 jms_group = '无' if jms_ecs_dict [ip ]['node' ].split ('/' )[- 1 ] == '未分组' else jms_ecs_dict [ip ]['node' ].split ('/' )[- 1 ]
@@ -131,11 +144,12 @@ def run(cloud,account):
131144
132145 jms = consul_kv .get_value ('ConsulManager/jms/jms_info' )
133146 jms_url = jms .get ('url' )
147+ jms_ver = jms .get ('ver' ,'V2' )
134148 token = myaes .decrypt (jms .get ('token' ))
135149 headers = {'Content-Type' : 'application/json' ,'Authorization' : f"Token { token } " }
136150
137151 new_node_dict = create_node (jms_url ,headers ,now ,node_id ,cloud ,account )
138- ecs_ip_dict = update_jms_ecs (jms_url ,headers ,new_node_dict ,node_id ,cloud ,account ,ecs_info ,custom_ecs_info )
152+ ecs_ip_dict = update_jms_ecs (jms_ver , jms_url ,headers ,new_node_dict ,node_id ,cloud ,account ,ecs_info ,custom_ecs_info )
139153 del_jms_repip (jms_url ,headers ,node_id ,ecs_ip_dict )
140154 del_node (jms_url ,headers ,now ,node_id ,cloud ,account )
141155 logger .info (f'【JOB】===>{ cloud } ,{ account } ,JMS同步完成' )
0 commit comments