Added utils/tasks.py

This commit is contained in:
PCoder 2017-08-28 12:25:39 +05:30
parent 464b48000d
commit 568f38dd67
1 changed files with 31 additions and 0 deletions

31
utils/tasks.py Normal file
View File

@ -0,0 +1,31 @@
from dynamicweb.celery import app
from celery.utils.log import get_task_logger
from django.conf import settings
from cdist.integration import configure_hosts_simple
import cdist
import tempfile
import pathlib
logger = get_task_logger(__name__)
@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES)
def save_ssh_key(hosts, keys):
"""
Saves ssh key into the VMs of a user using cdist
:param hosts: A list of hosts to be configured
:param keys: A list of keys to be added
"""
# Generate manifest to be used for configuring the hosts
with tempfile.NamedTemporaryFile() as tmp_manifest:
tmp_manifest.writelines(['__ssh_authorized_keys root \\',
' --key "{keys}"'.format(
keys='\n'.join(keys))])
f = pathlib.Path(tmp_manifest.name)
configure_hosts_simple(hosts,
tmp_manifest.name,
verbose=cdist.argparse.VERBOSE_TRACE)