def save(self, *args, **kwargs): from alerts.tasks import cache_agents_alert_template from automation.tasks import generate_all_agent_checks_task if not self.pk and CoreSettings.objects.exists(): raise ValidationError( "There can only be one CoreSettings instance") # for install script if not self.pk: try: self.mesh_site = settings.MESH_SITE self.mesh_username = settings.MESH_USERNAME self.mesh_token = settings.MESH_TOKEN_KEY except: pass old_settings = type(self).objects.get(pk=self.pk) if self.pk else None super(BaseAuditModel, self).save(*args, **kwargs) # check if server polcies have changed and initiate task to reapply policies if so if old_settings and old_settings.server_policy != self.server_policy: generate_all_agent_checks_task.delay(mon_type="server", create_tasks=True) # check if workstation polcies have changed and initiate task to reapply policies if so if old_settings and old_settings.workstation_policy != self.workstation_policy: generate_all_agent_checks_task.delay(mon_type="workstation", create_tasks=True) if old_settings and old_settings.alert_template != self.alert_template: cache_agents_alert_template.delay()
def edit_settings(request): settings = CoreSettings.objects.first() serializer = CoreSettingsSerializer(instance=settings, data=request.data) serializer.is_valid(raise_exception=True) new_settings = serializer.save() # check if default policies changed if settings.server_policy != new_settings.server_policy: generate_all_agent_checks_task.delay( mon_type="server", clear=True, create_tasks=True ) if settings.workstation_policy != new_settings.workstation_policy: generate_all_agent_checks_task.delay( mon_type="workstation", clear=True, create_tasks=True ) return Response("ok")
def delete(self, request, pk, sitepk): from automation.tasks import generate_all_agent_checks_task client = get_object_or_404(Client, pk=pk) agents = Agent.objects.filter(site__client=client) if not sitepk: return notify_error( "There needs to be a site specified to move existing agents to" ) site = get_object_or_404(Site, pk=sitepk) agents.update(site=site) generate_all_agent_checks_task.delay("workstation", create_tasks=True) generate_all_agent_checks_task.delay("server", create_tasks=True) client.delete() return Response(f"{client.name} was deleted!")
def delete(self, request, pk, sitepk): from automation.tasks import generate_all_agent_checks_task site = get_object_or_404(Site, pk=pk) if site.client.sites.count() == 1: return notify_error("A client must have at least 1 site.") agents = Agent.objects.filter(site=site) if not sitepk: return notify_error( "There needs to be a site specified to move the agents to") agent_site = get_object_or_404(Site, pk=sitepk) agents.update(site=agent_site) generate_all_agent_checks_task.delay("workstation", create_tasks=True) generate_all_agent_checks_task.delay("server", create_tasks=True) site.delete() return Response(f"{site.name} was deleted!")