Merge pull request #122 from jumpserver/bug_fix_80

fix (jasset):  修复连接超时,以及freebsd无法更新硬件信息
pull/135/head
ibuler 2016-03-18 17:00:09 +08:00
commit abdf9c72ca
1 changed files with 36 additions and 19 deletions

View File

@ -9,6 +9,8 @@ from jperm.ansible_api import MyRunner
from jperm.perm_api import gen_resource from jperm.perm_api import gen_resource
from jumpserver.templatetags.mytags import get_disk_info from jumpserver.templatetags.mytags import get_disk_info
import traceback
def group_add_asset(group, asset_id=None, asset_ip=None): def group_add_asset(group, asset_id=None, asset_ip=None):
""" """
@ -332,9 +334,11 @@ def get_ansible_asset_info(asset_ip, setup_info):
# ip = setup_info.get("ansible_default_ipv4").get("address") # ip = setup_info.get("ansible_default_ipv4").get("address")
mac = setup_info.get("ansible_default_ipv4").get("macaddress") mac = setup_info.get("ansible_default_ipv4").get("macaddress")
brand = setup_info.get("ansible_product_name") brand = setup_info.get("ansible_product_name")
cpu_type = setup_info.get("ansible_processor")[1] try:
cpu_cores = setup_info.get("ansible_processor_vcpus") cpu_type = setup_info.get("ansible_processor")[1]
cpu = cpu_type + ' * ' + unicode(cpu_cores) except IndexError:
cpu_type = ' '.join(setup_info.get("ansible_processor")[0].split(' ')[:6])
memory = setup_info.get("ansible_memtotal_mb") memory = setup_info.get("ansible_memtotal_mb")
try: try:
memory_format = int(round((int(memory) / 1000), 0)) memory_format = int(round((int(memory) / 1000), 0))
@ -342,7 +346,13 @@ def get_ansible_asset_info(asset_ip, setup_info):
memory_format = memory memory_format = memory
disk = disk_need disk = disk_need
system_type = setup_info.get("ansible_distribution") system_type = setup_info.get("ansible_distribution")
system_version = setup_info.get("ansible_distribution_version") if system_type.lower() == "freebsd":
system_version = setup_info.get("ansible_distribution_release")
cpu_cores = setup_info.get("ansible_processor_count")
else:
system_version = setup_info.get("ansible_distribution_version")
cpu_cores = setup_info.get("ansible_processor_vcpus")
cpu = cpu_type + ' * ' + unicode(cpu_cores)
system_arch = setup_info.get("ansible_architecture") system_arch = setup_info.get("ansible_architecture")
# asset_type = setup_info.get("ansible_system") # asset_type = setup_info.get("ansible_system")
sn = setup_info.get("ansible_product_serial") sn = setup_info.get("ansible_product_serial")
@ -358,24 +368,31 @@ def asset_ansible_update(obj_list, name=''):
for asset in obj_list: for asset in obj_list:
try: try:
setup_info = ansible_asset_info['contacted'][asset.hostname]['ansible_facts'] setup_info = ansible_asset_info['contacted'][asset.hostname]['ansible_facts']
except KeyError: logger.debug("setup_info: %s" % setup_info)
except KeyError, e:
logger.error("获取setup_info失败: %s" % e)
continue continue
else: else:
asset_info = get_ansible_asset_info(asset.ip, setup_info) try:
other_ip, mac, cpu, memory, disk, sn, system_type, system_version, brand, system_arch = asset_info asset_info = get_ansible_asset_info(asset.ip, setup_info)
asset_dic = {"other_ip": other_ip, print asset_info
"mac": mac, other_ip, mac, cpu, memory, disk, sn, system_type, system_version, brand, system_arch = asset_info
"cpu": cpu, asset_dic = {"other_ip": other_ip,
"memory": memory, "mac": mac,
"disk": disk, "cpu": cpu,
"sn": sn, "memory": memory,
"system_type": system_type, "disk": disk,
"system_version": system_version, "sn": sn,
"system_arch": system_arch, "system_type": system_type,
"brand": brand "system_version": system_version,
} "system_arch": system_arch,
"brand": brand
}
ansible_record(asset, asset_dic, name) ansible_record(asset, asset_dic, name)
except Exception as e:
logger.error("save setup info failed! %s" % e)
traceback.print_exc()
def asset_ansible_update_all(): def asset_ansible_update_all():