def add(request): data = request.data client = get_object_or_404(Client, pk=int(data["client"])) site = get_object_or_404(Site, pk=int(data["site"])) if not Agent.objects.filter(agent_id=data["agent_id"]).exists(): agent = Agent( agent_id=data["agent_id"], hostname=data["hostname"], client=client.client, site=site.site, monitoring_type=data["monitoring_type"], description=data["description"], mesh_node_id=data["mesh_node_id"], last_seen=djangotime.now(), ) agent.save() agent.salt_id = f"{agent.hostname}-{agent.pk}" agent.save(update_fields=["salt_id"]) if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() # Generate policies for new agent agent.generate_checks_from_policies() agent.generate_tasks_from_policies() return Response({"pk": agent.pk}) else: return Response("err", status=status.HTTP_400_BAD_REQUEST)
def patch(self, request): """ Creates the agent """ if Agent.objects.filter(agent_id=request.data["agent_id"]).exists(): return notify_error( "Agent already exists. Remove old agent first if trying to re-install" ) client = get_object_or_404(Client, pk=int(request.data["client"])) site = get_object_or_404(Site, pk=int(request.data["site"])) agent = Agent( agent_id=request.data["agent_id"], hostname=request.data["hostname"], client=client.client, site=site.site, monitoring_type=request.data["monitoring_type"], description=request.data["description"], mesh_node_id=request.data["mesh_node_id"], last_seen=djangotime.now(), ) agent.save() agent.salt_id = f"{agent.hostname}-{agent.pk}" agent.save(update_fields=["salt_id"]) if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() # Generate policies for new agent agent.generate_checks_from_policies() agent.generate_tasks_from_policies() return Response({"pk": agent.pk, "saltid": f"{agent.hostname}-{agent.pk}"})
def add(request): data = request.data agent_id = data["agentid"] hostname = data["hostname"] client = data["client"] site = data["site"] monitoring_type = data["monitoring_type"] description = data["description"] mesh_node_id = data["mesh_node_id"] if not Agent.objects.filter(agent_id=agent_id).exists(): Agent( agent_id=agent_id, hostname=hostname, client=client, site=site, monitoring_type=monitoring_type, description=description, mesh_node_id=mesh_node_id, ).save() agent = get_object_or_404(Agent, agent_id=agent_id) MemoryHistory(agent=agent).save() CpuHistory(agent=agent).save() if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() return Response({"pk": agent.pk}) else: return Response("err", status=status.HTTP_400_BAD_REQUEST)
def post(self, request): from logs.models import AuditLog """ Creates the agent """ if Agent.objects.filter(agent_id=request.data["agent_id"]).exists(): return notify_error( "Agent already exists. Remove old agent first if trying to re-install" ) agent = Agent( agent_id=request.data["agent_id"], hostname=request.data["hostname"], site_id=int(request.data["site"]), monitoring_type=request.data["monitoring_type"], description=request.data["description"], mesh_node_id=request.data["mesh_node_id"], last_seen=djangotime.now(), ) agent.save() agent.salt_id = f"{agent.hostname}-{agent.pk}" agent.save(update_fields=["salt_id"]) user = User.objects.create_user( username=request.data["agent_id"], agent=agent, password=User.objects.make_random_password(60), ) token = Token.objects.create(user=user) if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() reload_nats() # Generate policies for new agent agent.generate_checks_from_policies() agent.generate_tasks_from_policies() # create agent install audit record AuditLog.objects.create( username=request.user, agent=agent.hostname, object_type="agent", action="agent_install", message=f"{request.user} installed new agent {agent.hostname}", after_value=Agent.serialize(agent), ) return Response( { "pk": agent.pk, "saltid": f"{agent.hostname}-{agent.pk}", "token": token.key, } )