mirror of https://github.com/jumpserver/jumpserver
perf: ansible env to jms
parent
d89164db63
commit
33a47139b3
|
@ -129,11 +129,13 @@ class AccountRiskViewSet(OrgBulkModelViewSet):
|
||||||
s.validated_data, ("asset", "username", "action", "risk")
|
s.validated_data, ("asset", "username", "action", "risk")
|
||||||
)
|
)
|
||||||
handler = RiskHandler(asset=asset, username=username, request=self.request)
|
handler = RiskHandler(asset=asset, username=username, request=self.request)
|
||||||
data = handler.handle(act, risk)
|
|
||||||
if not data:
|
try:
|
||||||
return Response(data={"message": "Success"})
|
risk = handler.handle(act, risk)
|
||||||
s = serializers.AccountRiskSerializer(instance=data)
|
s = serializers.AccountRiskSerializer(instance=risk)
|
||||||
return Response(data=s.data)
|
return Response(data=s.data)
|
||||||
|
except Exception as e:
|
||||||
|
return Response(status=400, data=str(e))
|
||||||
|
|
||||||
|
|
||||||
class CheckAccountEngineViewSet(JMSModelViewSet):
|
class CheckAccountEngineViewSet(JMSModelViewSet):
|
||||||
|
|
|
@ -117,6 +117,15 @@ class RiskHandler:
|
||||||
def handle_delete_remote(self):
|
def handle_delete_remote(self):
|
||||||
self._handle_delete(delete="remote")
|
self._handle_delete(delete="remote")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def start_execution(execution):
|
||||||
|
execution.save()
|
||||||
|
execution.start()
|
||||||
|
|
||||||
|
if execution.status != "success":
|
||||||
|
msg = _("Execution failed: {}").format(execution.status)
|
||||||
|
raise ValidationError(msg)
|
||||||
|
|
||||||
def _handle_delete(self, delete="both"):
|
def _handle_delete(self, delete="both"):
|
||||||
asset = self.asset
|
asset = self.asset
|
||||||
execution = AutomationExecution()
|
execution = AutomationExecution()
|
||||||
|
@ -128,9 +137,7 @@ class RiskHandler:
|
||||||
"delete": delete,
|
"delete": delete,
|
||||||
"risk": self.risk
|
"risk": self.risk
|
||||||
}
|
}
|
||||||
execution.save()
|
self.start_execution(execution)
|
||||||
execution.start()
|
|
||||||
return execution.summary
|
|
||||||
|
|
||||||
def handle_delete_both(self):
|
def handle_delete_both(self):
|
||||||
self._handle_delete(delete="both")
|
self._handle_delete(delete="both")
|
||||||
|
@ -138,7 +145,11 @@ class RiskHandler:
|
||||||
def handle_change_password(self):
|
def handle_change_password(self):
|
||||||
asset = self.asset
|
asset = self.asset
|
||||||
execution = AutomationExecution()
|
execution = AutomationExecution()
|
||||||
account = self.asset.accounts.get(username=self.username)
|
account = self.asset.accounts.filter(username=self.username, secret_type=SecretType.PASSWORD).first()
|
||||||
|
|
||||||
|
if not account:
|
||||||
|
raise ValidationError("Account not found")
|
||||||
|
|
||||||
execution.snapshot = {
|
execution.snapshot = {
|
||||||
"assets": [str(asset.id)],
|
"assets": [str(asset.id)],
|
||||||
"accounts": [str(account.id)],
|
"accounts": [str(account.id)],
|
||||||
|
@ -147,9 +158,7 @@ class RiskHandler:
|
||||||
"secret_strategy": "random",
|
"secret_strategy": "random",
|
||||||
"name": "Change account password: {}@{}".format(self.username, asset.name),
|
"name": "Change account password: {}@{}".format(self.username, asset.name),
|
||||||
}
|
}
|
||||||
execution.save()
|
self.start_execution(execution)
|
||||||
execution.start()
|
|
||||||
return execution.summary
|
|
||||||
|
|
||||||
def handle_change_password_add(self):
|
def handle_change_password_add(self):
|
||||||
asset = self.asset
|
asset = self.asset
|
||||||
|
@ -178,10 +187,10 @@ class RiskHandler:
|
||||||
'check_conn_after_change': True,
|
'check_conn_after_change': True,
|
||||||
"name": "Push account password: {}@{}".format(self.username, asset.name),
|
"name": "Push account password: {}@{}".format(self.username, asset.name),
|
||||||
}
|
}
|
||||||
execution.save()
|
self.start_execution(execution)
|
||||||
execution.start()
|
|
||||||
|
|
||||||
GatheredAccount.objects.filter(asset=self.asset, username=self.username).update(
|
(
|
||||||
present=True
|
GatheredAccount.objects
|
||||||
|
.filter(asset=self.asset, username=self.username)
|
||||||
|
.update(present=True)
|
||||||
)
|
)
|
||||||
return execution.summary
|
|
||||||
|
|
|
@ -12,15 +12,6 @@ class CeleryBaseService(BaseService):
|
||||||
@property
|
@property
|
||||||
def cmd(self):
|
def cmd(self):
|
||||||
print('\n- Start Celery as Distributed Task Queue: {}'.format(self.queue.capitalize()))
|
print('\n- Start Celery as Distributed Task Queue: {}'.format(self.queue.capitalize()))
|
||||||
ansible_config_path = os.path.join(settings.APPS_DIR, 'libs', 'ansible', 'ansible.cfg')
|
|
||||||
ansible_modules_path = os.path.join(settings.APPS_DIR, 'libs', 'ansible', 'modules')
|
|
||||||
os.environ.setdefault('LC_ALL', 'en_US.UTF-8')
|
|
||||||
os.environ.setdefault('LANG', 'en_US.UTF-8')
|
|
||||||
os.environ.setdefault('PYTHONOPTIMIZE', '1')
|
|
||||||
os.environ.setdefault('ANSIBLE_FORCE_COLOR', 'True')
|
|
||||||
os.environ.setdefault('ANSIBLE_CONFIG', ansible_config_path)
|
|
||||||
os.environ.setdefault('ANSIBLE_LIBRARY', ansible_modules_path)
|
|
||||||
os.environ.setdefault('PYTHONPATH', settings.APPS_DIR)
|
|
||||||
|
|
||||||
if os.getuid() == 0:
|
if os.getuid() == 0:
|
||||||
os.environ.setdefault('C_FORCE_ROOT', '1')
|
os.environ.setdefault('C_FORCE_ROOT', '1')
|
||||||
|
|
10
jms
10
jms
|
@ -20,6 +20,16 @@ sys.path.insert(0, APP_DIR)
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jumpserver.settings")
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jumpserver.settings")
|
||||||
django.setup()
|
django.setup()
|
||||||
|
|
||||||
|
ansible_config_path = os.path.join(APP_DIR, 'libs', 'ansible', 'ansible.cfg')
|
||||||
|
ansible_modules_path = os.path.join(APP_DIR, 'libs', 'ansible', 'modules')
|
||||||
|
os.environ.setdefault('LC_ALL', 'en_US.UTF-8')
|
||||||
|
os.environ.setdefault('LANG', 'en_US.UTF-8')
|
||||||
|
os.environ.setdefault('PYTHONOPTIMIZE', '1')
|
||||||
|
os.environ.setdefault('ANSIBLE_FORCE_COLOR', 'True')
|
||||||
|
os.environ.setdefault('ANSIBLE_CONFIG', ansible_config_path)
|
||||||
|
os.environ.setdefault('ANSIBLE_LIBRARY', ansible_modules_path)
|
||||||
|
os.environ.setdefault('PYTHONPATH', APP_DIR)
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
|
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue