From 5e870f04b157be293e423f90989e9737b13510c2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 20 Dec 2020 18:36:46 +0100 Subject: [PATCH] ++celery/tasks --- uncloud/admin.py | 4 ++-- uncloud/migrations/0002_uncloudtasks.py | 19 +++++++++++++++ uncloud/migrations/0003_auto_20201220_1728.py | 17 +++++++++++++ uncloud/models.py | 8 +++++++ uncloud_net/tasks.py | 24 +++++++++++++------ 5 files changed, 63 insertions(+), 9 deletions(-) create mode 100644 uncloud/migrations/0002_uncloudtasks.py create mode 100644 uncloud/migrations/0003_auto_20201220_1728.py diff --git a/uncloud/admin.py b/uncloud/admin.py index 4ecc53a..a89a574 100644 --- a/uncloud/admin.py +++ b/uncloud/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import UncloudProvider, UncloudNetwork +from .models import * -for m in [ UncloudProvider, UncloudNetwork ]: +for m in [ UncloudProvider, UncloudNetwork, UncloudTask ]: admin.site.register(m) diff --git a/uncloud/migrations/0002_uncloudtasks.py b/uncloud/migrations/0002_uncloudtasks.py new file mode 100644 index 0000000..9c69606 --- /dev/null +++ b/uncloud/migrations/0002_uncloudtasks.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1 on 2020-12-20 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('uncloud', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='UncloudTasks', + fields=[ + ('task_id', models.UUIDField(primary_key=True, serialize=False)), + ], + ), + ] diff --git a/uncloud/migrations/0003_auto_20201220_1728.py b/uncloud/migrations/0003_auto_20201220_1728.py new file mode 100644 index 0000000..2ec0eec --- /dev/null +++ b/uncloud/migrations/0003_auto_20201220_1728.py @@ -0,0 +1,17 @@ +# Generated by Django 3.1 on 2020-12-20 17:28 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('uncloud', '0002_uncloudtasks'), + ] + + operations = [ + migrations.RenameModel( + old_name='UncloudTasks', + new_name='UncloudTask', + ), + ] diff --git a/uncloud/models.py b/uncloud/models.py index 9f977e8..5545303 100644 --- a/uncloud/models.py +++ b/uncloud/models.py @@ -162,3 +162,11 @@ class UncloudProvider(UncloudAddress): def __str__(self): return f"{self.full_name} {self.country}" + + +class UncloudTask(models.Model): + """ + Class to store dispatched tasks to be handled + """ + + task_id = models.UUIDField(primary_key=True) diff --git a/uncloud_net/tasks.py b/uncloud_net/tasks.py index ee72cbc..0dcf6f3 100644 --- a/uncloud_net/tasks.py +++ b/uncloud_net/tasks.py @@ -1,8 +1,14 @@ from celery import shared_task from .models import * +from uncloud.models import UncloudTask + import os import subprocess +import logging +import uuid + +log = logging.getLogger(__name__) @shared_task def whereami(): @@ -20,9 +26,11 @@ def configure_wireguard_server(wireguardvpnpool): config = wireguardvpnpool.wireguard_config server = wireguardvpnpool.vpn_server_hostname - print(f"Configuring VPN server {server} (async)") -# cdist_configure_wireguard_server.apply_async((config, server), queue='cdist') - cdist_configure_wireguard_server.apply_async((config, server)) + log.info(f"Configuring VPN server {server} (async)") + + task_id = uuid.UUID(cdist_configure_wireguard_server.apply_async((config, server)).id) + UncloudTasks.objects.create(task_id=task_id) + @shared_task def cdist_configure_wireguard_server(config, server): @@ -35,15 +43,17 @@ def cdist_configure_wireguard_server(config, server): dirname= "/home/app/.cdist/type/__ungleich_wireguard/files/" fname = os.path.join(dirname,server) - print(f"Configuring VPN server {server} (on cdist host)") + log.info(f"Configuring VPN server {server} (on cdist host)") with open(fname, "w") as fd: fd.write(config) - subprocess.run(f"cd {dirname} && git pull && git add {server} && git commit -m 'Updating config for ${server}' && git push", - shell=True) + log.debug("git committing wireguard changes") + subprocess.run(f"cd /aa{dirname} && git pull && git add {server} && git commit -m 'Updating config for ${server}' && git push", + shell=True, check=True) - subprocess.run(f"cdist config -vv {server}", shell=True) + log.debug(f"Configuring VPN server {server} with cdist") + subprocess.run(f"cdist config {server}", shell=True, check=True) # FIXME: # ensure logs are on the server