Browse Source

Merge branch 'ip-assignement-log' of https://code.ffdn.org/ARN/coin into arnprod

ljf 7 years ago
parent
commit
fdcfc86e65
2 changed files with 35 additions and 0 deletions
  1. 31 0
      coin/configuration/models.py
  2. 4 0
      coin/settings_base.py

+ 31 - 0
coin/configuration/models.py

@@ -1,6 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
+import logging
+
 from django.db import models
 from polymorphic import PolymorphicModel
 from coin.offers.models import OfferSubscription
@@ -94,8 +96,19 @@ def offer_subscription_event(sender, **kwargs):
                                 ip_pool=offer_ip_pool.ip_pool)
             config.save()
 
+
 @receiver(post_save, sender=IPSubnet)
+def subnet_event_save(sender, **kwargs):
+    kwargs["signal_type"] = "save"
+    subnet_event(sender, **kwargs)
+
+
 @receiver(post_delete, sender=IPSubnet)
+def subnet_event_delete(sender, **kwargs):
+    kwargs["signal_type"] = "delete"
+    subnet_event(sender, **kwargs)
+
+subnet_log = logging.getLogger("coin.subnets")
 def subnet_event(sender, **kwargs):
     """Fires when a subnet is created, modified or deleted.  We tell the
     configuration backend to do whatever it needs to do with it.
@@ -129,5 +142,23 @@ def subnet_event(sender, **kwargs):
         config = subnet.configuration
         if hasattr(config, 'subnet_event'):
             config.subnet_event()
+
+        offer = config.offersubscription.offer.name
+        subref = config.offersubscription.get_subscription_reference()
+        member = config.offersubscription.member
+        ip = subnet.inet
+
+        if kwargs['signal_type'] == "save":
+            msg = "Allocating IP %s to member %s (%s - %s %s) (for offer %s, %s)"
+        elif kwargs['signal_type'] == "delete":
+            msg = "Deallocating IP %s from member %s (%s - %s %s) (was offer %s, %s)"
+        else:
+            # Does not happens
+            msg = ""
+
+        subnet_log.info(msg % (ip, str(member.pk),
+                        member.username, member.first_name, member.last_name,
+                        offer, subref))
+
     except ObjectDoesNotExist:
         pass

+ 4 - 0
coin/settings_base.py

@@ -206,6 +206,10 @@ LOGGING = {
         "coin.billing": {
             'handlers': ['console'],
             'level': 'INFO',
+        },
+        "coin.subnets": {
+            'handlers': ['console'],
+            'level': 'INFO',
         }
     }
 }