Improved save_ssh_key celery task
This commit is contained in:
parent
2b541da94b
commit
21f51692c4
2 changed files with 20 additions and 17 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue