From e45eb96f12b72902a2f837b362407185c642201d Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Thu, 23 Feb 2023 18:15:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AF=B9=E4=BA=8E=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=BF=9E=E6=8E=A5=E7=9A=84=EF=BC=8C=E7=BB=99?= =?UTF-8?q?=E5=87=BA=E5=8E=9F=E5=9B=A0=E5=B9=B6=E5=81=9C=E6=AD=A2=E6=AD=A4?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84=E5=90=8E=E7=BB=AD=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E5=BD=B1=E5=93=8D=E5=85=B6=E4=BB=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/automations/base/manager.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/apps/assets/automations/base/manager.py b/apps/assets/automations/base/manager.py index 98c1afb9d..084ac0c82 100644 --- a/apps/assets/automations/base/manager.py +++ b/apps/assets/automations/base/manager.py @@ -9,7 +9,7 @@ import yaml from django.conf import settings from django.utils import timezone from django.utils.translation import gettext as _ -from sshtunnel import SSHTunnelForwarder +from sshtunnel import SSHTunnelForwarder, BaseSSHTunnelForwarderError from assets.automations.methods import platform_automation_methods from common.utils import get_logger, lazyproperty @@ -229,7 +229,7 @@ class BasePlaybookManager: def local_gateway_prepare(self, runner): info = self.file_to_json(runner.inventory) - servers = [] + servers, not_valid = [], [] for k, host in info['all']['hosts'].items(): jms_asset, jms_gateway = host['jms_asset'], host.get('gateway') if not jms_gateway: @@ -240,10 +240,20 @@ class BasePlaybookManager: ssh_password=jms_gateway['secret'], remote_bind_address=(jms_asset['address'], jms_asset['port']) ) - server.start() - jms_asset['address'] = '127.0.0.1' - jms_asset['port'] = server.local_bind_port - servers.append(server) + try: + server.start() + except BaseSSHTunnelForwarderError: + err_msg = 'Gateway is not active: %s' % jms_asset.get('name', '') + print('\033[31m %s \033[0m\n' % err_msg) + not_valid.append(k) + else: + jms_asset['address'] = '127.0.0.1' + jms_asset['port'] = server.local_bind_port + servers.append(server) + + # 网域不可连接的,就不继续执行此资源的后续任务了 + for a in set(not_valid): + info['all']['hosts'].pop(a) self.json_to_file(runner.inventory, info) self.gateway_servers[runner.id] = servers