Improved save_ssh_key celery task

This commit is contained in:
M.Ravi 2017-08-28 11:40:59 +02:00
parent 2b541da94b
commit 21f51692c4
2 changed files with 20 additions and 17 deletions

View file

@ -96,4 +96,5 @@ pyflakes==1.5.0
billiard==3.5.0.3 billiard==3.5.0.3
amqp==2.2.1 amqp==2.2.1
vine==1.1.4 vine==1.1.4
file:///home/test/projects/Nico/cdist-pcoder/cdist/#egg=cdist-web #git+https://github.com/pcoder/cdist.git#egg=cdist-web
file:///home/mravi/gitprojects/cdist-pcoder/cdist/#egg=cdist-web

View file

@ -1,31 +1,33 @@
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 cdist
import tempfile import tempfile
import pathlib from cdist.integration import configure_hosts_simple
from celery.utils.log import get_task_logger
from django.conf import settings
from dynamicweb.celery import app
logger = get_task_logger(__name__) logger = get_task_logger(__name__)
@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES) @app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES)
def save_ssh_key(hosts, keys): def save_ssh_key(self, hosts, keys):
""" """
Saves ssh key into the VMs of a user using cdist Saves ssh key into the VMs of a user using cdist
:param hosts: A list of hosts to be configured :param hosts: A list of hosts to be configured
:param keys: A list of keys to be added :param keys: A list of keys to be added
""" """
# Generate manifest to be used for configuring the hosts return_value = True
with tempfile.NamedTemporaryFile() as tmp_manifest: with tempfile.NamedTemporaryFile() as tmp_manifest:
tmp_manifest.writelines(['__ssh_authorized_keys root \\', # Generate manifest to be used for configuring the hosts
tmp_manifest.writelines([b'__ssh_authorized_keys root \\',
' --key "{keys}"'.format( ' --key "{keys}"'.format(
keys='\n'.join(keys))]) keys='\n'.join(keys)).encode('utf-8')])
try:
f = pathlib.Path(tmp_manifest.name) configure_hosts_simple(hosts,
configure_hosts_simple(hosts, tmp_manifest.name,
tmp_manifest.name, verbose=cdist.argparse.VERBOSE_TRACE)
verbose=cdist.argparse.VERBOSE_TRACE) except Exception as cdist_exception:
logger.error(cdist_exception)
return_value = False
return return_value