diff --git a/apps/assets/tasks/system_user_connectivity.py b/apps/assets/tasks/system_user_connectivity.py index 91264c1c7..5b0cf5845 100644 --- a/apps/assets/tasks/system_user_connectivity.py +++ b/apps/assets/tasks/system_user_connectivity.py @@ -83,7 +83,7 @@ def test_system_user_connectivity_util(system_user, assets, task_name): _task, created = update_or_create_ansible_task( task_name=_task_name, hosts=_hosts, tasks=_tasks, pattern='all', options=const.TASK_OPTIONS, - run_as=_username, + run_as=_username, system_user=system_user ) raw, summary = _task.run() success = summary.get('success', False) diff --git a/apps/ops/migrations/0020_adhoc_run_system_user.py b/apps/ops/migrations/0020_adhoc_run_system_user.py new file mode 100644 index 000000000..2b9815cd6 --- /dev/null +++ b/apps/ops/migrations/0020_adhoc_run_system_user.py @@ -0,0 +1,20 @@ +# Generated by Django 3.1.6 on 2021-07-14 08:44 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0076_delete_assetuser'), + ('ops', '0019_adhocexecution_celery_task_id'), + ] + + operations = [ + migrations.AddField( + model_name='adhoc', + name='run_system_user', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='assets.systemuser'), + ), + ] diff --git a/apps/ops/models/adhoc.py b/apps/ops/models/adhoc.py index 083d40d4d..4c4c549f9 100644 --- a/apps/ops/models/adhoc.py +++ b/apps/ops/models/adhoc.py @@ -146,6 +146,7 @@ class AdHoc(OrgModelMixin): hosts = models.ManyToManyField('assets.Asset', verbose_name=_("Host")) run_as_admin = models.BooleanField(default=False, verbose_name=_('Run as admin')) run_as = models.CharField(max_length=64, default='', blank=True, null=True, verbose_name=_('Username')) + run_system_user = models.ForeignKey('assets.SystemUser', null=True, on_delete=models.CASCADE) become = EncryptJsonDictCharField(max_length=1024, default='', blank=True, null=True, verbose_name=_("Become")) created_by = models.CharField(max_length=64, default='', blank=True, null=True, verbose_name=_('Create by')) date_created = models.DateTimeField(auto_now_add=True, db_index=True) @@ -167,7 +168,7 @@ class AdHoc(OrgModelMixin): inventory = JMSInventory( self.hosts.all(), run_as_admin=self.run_as_admin, - run_as=self.run_as, become_info=become_info + run_as=self.run_as, become_info=become_info, system_user=self.run_system_user ) return inventory diff --git a/apps/ops/utils.py b/apps/ops/utils.py index 9993ea2cb..a01543b95 100644 --- a/apps/ops/utils.py +++ b/apps/ops/utils.py @@ -28,7 +28,7 @@ def update_or_create_ansible_task( task_name, hosts, tasks, interval=None, crontab=None, is_periodic=False, callback=None, pattern='all', options=None, - run_as_admin=False, run_as=None, become_info=None, + run_as_admin=False, run_as=None, system_user=None, become_info=None, ): if not hosts or not tasks or not task_name: return None, None @@ -49,7 +49,7 @@ def update_or_create_ansible_task( adhoc = task.get_latest_adhoc() new_adhoc = AdHoc(task=task, pattern=pattern, run_as_admin=run_as_admin, - run_as=run_as) + run_as=run_as, run_system_user=system_user) new_adhoc.tasks = tasks new_adhoc.options = options new_adhoc.become = become_info