fix related agents method in policy model

This commit is contained in:
sadnub
2020-10-28 22:26:04 -04:00
parent 90c0db13e9
commit 3730afd5d6
4 changed files with 163 additions and 90 deletions

View File

@@ -30,24 +30,20 @@ class Policy(BaseAuditModel):
explicit_clients = self.server_clients.all() explicit_clients = self.server_clients.all()
explicit_sites = self.server_sites.all() explicit_sites = self.server_sites.all()
filtered_agents_pks = list() filtered_agents_pks = Policy.objects.none()
for site in explicit_sites: for site in explicit_sites:
if site.client not in explicit_clients: if site.client not in explicit_clients:
filtered_agents_pks.append( filtered_agents_pks |= Agent.objects.filter(
Agent.objects.filter( client=site.client.client,
client=site.client.client, site=site.site,
site=site.site, monitoring_type="server",
monitoring_type="server",
).values_list("pk", flat=True)
)
for client in explicit_clients:
filtered_agents_pks.append(
Agent.objects.filter(
client=client.client, monitoring_type="server"
).values_list("pk", flat=True) ).values_list("pk", flat=True)
)
filtered_agents_pks |= Agent.objects.filter(
client__in=[client.client for client in explicit_clients],
monitoring_type="server",
).values_list("pk", flat=True)
return Agent.objects.filter( return Agent.objects.filter(
models.Q(pk__in=filtered_agents_pks) models.Q(pk__in=filtered_agents_pks)
@@ -59,24 +55,20 @@ class Policy(BaseAuditModel):
explicit_clients = self.workstation_clients.all() explicit_clients = self.workstation_clients.all()
explicit_sites = self.workstation_sites.all() explicit_sites = self.workstation_sites.all()
filtered_agents_pks = list() filtered_agents_pks = Policy.objects.none()
for site in explicit_sites: for site in explicit_sites:
if site.client not in explicit_clients: if site.client not in explicit_clients:
filtered_agents_pks.append( filtered_agents_pks |= Agent.objects.filter(
Agent.objects.filter( client=site.client.client,
client=site.client.client, site=site.site,
site=site.site, monitoring_type="workstation",
monitoring_type="workstation",
).values_list("pk", flat=True)
)
for client in explicit_clients:
filtered_agents_pks.append(
Agent.objects.filter(
client=client.client, monitoring_type="workstation"
).values_list("pk", flat=True) ).values_list("pk", flat=True)
)
filtered_agents_pks |= Agent.objects.filter(
client__in=[client.client for client in explicit_clients],
monitoring_type="workstation",
).values_list("pk", flat=True)
return Agent.objects.filter( return Agent.objects.filter(
models.Q(pk__in=filtered_agents_pks) models.Q(pk__in=filtered_agents_pks)

View File

@@ -7,20 +7,20 @@ from tacticalrmm.celery import app
@app.task @app.task
def generate_agent_checks_from_policies_task( def generate_agent_checks_from_policies_task(
### ###
# copies the policy checks to all affected agents # copies the policy checks to all affected agents
# #
# clear: clears all policy checks first # clear: clears all policy checks first
# create_tasks: also create tasks after checks are generated # create_tasks: also create tasks after checks are generated
### ###
policypk, clear=False, create_tasks=False policypk,
clear=False,
create_tasks=False,
): ):
policy = Policy.objects.get(pk=policypk) policy = Policy.objects.get(pk=policypk)
for agent in policy.related_agents(): for agent in policy.related_agents():
agent.generate_checks_from_policies( agent.generate_checks_from_policies(clear=clear)
clear=clear
)
if create_tasks: if create_tasks:
agent.generate_tasks_from_policies( agent.generate_tasks_from_policies(
clear=clear, clear=clear,
@@ -63,10 +63,9 @@ def update_policy_check_fields_task(checkpk):
threshold=check.threshold, threshold=check.threshold,
name=check.name, name=check.name,
fails_b4_alert=check.fails_b4_alert, fails_b4_alert=check.fails_b4_alert,
disk=check.disk,
ip=check.ip, ip=check.ip,
script=check.script,
script_args=check.script_args, script_args=check.script_args,
timeout=check.timeout,
pass_if_start_pending=check.pass_if_start_pending, pass_if_start_pending=check.pass_if_start_pending,
pass_if_svc_not_exist=check.pass_if_svc_not_exist, pass_if_svc_not_exist=check.pass_if_svc_not_exist,
restart_if_stopped=check.restart_if_stopped, restart_if_stopped=check.restart_if_stopped,
@@ -84,9 +83,7 @@ def update_policy_check_fields_task(checkpk):
@app.task @app.task
def generate_agent_tasks_from_policies_task( def generate_agent_tasks_from_policies_task(policypk, clear=False):
policypk, clear=False
):
policy = Policy.objects.get(pk=policypk) policy = Policy.objects.get(pk=policypk)
for agent in policy.related_agents(): for agent in policy.related_agents():
@@ -94,9 +91,7 @@ def generate_agent_tasks_from_policies_task(
@app.task @app.task
def generate_agent_tasks_by_location_task( def generate_agent_tasks_by_location_task(location, mon_type, clear=False):
location, mon_type, clear=False
):
for agent in Agent.objects.filter(**location).filter(monitoring_type=mon_type): for agent in Agent.objects.filter(**location).filter(monitoring_type=mon_type):
agent.generate_tasks_from_policies(clear=clear) agent.generate_tasks_from_policies(clear=clear)
@@ -125,10 +120,8 @@ def update_policy_task_fields_task(taskpk, enabled):
from autotasks.tasks import enable_or_disable_win_task from autotasks.tasks import enable_or_disable_win_task
tasks = AutomatedTask.objects.filter(parent_task=taskpk) tasks = AutomatedTask.objects.filter(parent_task=taskpk)
tasks.update( tasks.update(enabled=enabled)
enabled=enabled
)
for autotask in tasks: for autotask in tasks:
enable_or_disable_win_task(autotask.pk, enabled) enable_or_disable_win_task(autotask.pk, enabled)

View File

@@ -521,7 +521,9 @@ class TestPolicyViews(TacticalTestCase):
task = baker.make("autotasks.AutomatedTask", policy=policy) task = baker.make("autotasks.AutomatedTask", policy=policy)
# create policy managed tasks # create policy managed tasks
policy_tasks = baker.make("autotasks.AutomatedTask", parent_task=task.id, _quantity=5) policy_tasks = baker.make(
"autotasks.AutomatedTask", parent_task=task.id, _quantity=5
)
url = f"/automation/policyautomatedtaskstatus/{task.id}/task/" url = f"/automation/policyautomatedtaskstatus/{task.id}/task/"
@@ -790,19 +792,19 @@ class TestPolicyTasks(TacticalTestCase):
self.assertEqual(check.ip, checks[1].ip) self.assertEqual(check.ip, checks[1].ip)
elif check.check_type == "cpuload": elif check.check_type == "cpuload":
self.assertEqual(check.parent_check, checks[2].id) self.assertEqual(check.parent_check, checks[2].id)
self.assertEqual(check.threshold, checks[2].threshold) self.assertEqual(check.threshold, checks[2].threshold)
elif check.check_type == "memory": elif check.check_type == "memory":
self.assertEqual(check.parent_check, checks[3].id) self.assertEqual(check.parent_check, checks[3].id)
self.assertEqual(check.threshold, checks[3].threshold) self.assertEqual(check.threshold, checks[3].threshold)
elif check.check_type == "winsvc": elif check.check_type == "winsvc":
self.assertEqual(check.parent_check, checks[4].id) self.assertEqual(check.parent_check, checks[4].id)
self.assertEqual(check.svc_name, checks[4].svc_name) self.assertEqual(check.svc_name, checks[4].svc_name)
self.assertEqual(check.svc_display_name, checks[4].svc_display_name) self.assertEqual(check.svc_display_name, checks[4].svc_display_name)
self.assertEqual(check.svc_policy_mode, checks[4].svc_policy_mode) self.assertEqual(check.svc_policy_mode, checks[4].svc_policy_mode)
elif check.check_type == "script": elif check.check_type == "script":
self.assertEqual(check.parent_check, checks[5].id) self.assertEqual(check.parent_check, checks[5].id)
self.assertEqual(check.script, checks[5].script) self.assertEqual(check.script, checks[5].script)
elif check.check_type == "eventlog": elif check.check_type == "eventlog":
self.assertEqual(check.parent_check, checks[6].id) self.assertEqual(check.parent_check, checks[6].id)
self.assertEqual(check.event_id, checks[6].event_id) self.assertEqual(check.event_id, checks[6].event_id)
self.assertEqual(check.event_type, checks[6].event_type) self.assertEqual(check.event_type, checks[6].event_type)
@@ -823,7 +825,12 @@ class TestPolicyTasks(TacticalTestCase):
# make sure each agent check says overriden_by_policy # make sure each agent check says overriden_by_policy
self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.count(), 14) self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.count(), 14)
self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.filter(overriden_by_policy=True).count(), 7) self.assertEqual(
Agent.objects.get(pk=agent.id)
.agentchecks.filter(overriden_by_policy=True)
.count(),
7,
)
def test_generating_agent_policy_checks_by_location(self): def test_generating_agent_policy_checks_by_location(self):
from .tasks import generate_agent_checks_by_location_task from .tasks import generate_agent_checks_by_location_task
@@ -831,23 +838,46 @@ class TestPolicyTasks(TacticalTestCase):
# setup data # setup data
policy = baker.make("automation.Policy", active=True) policy = baker.make("automation.Policy", active=True)
self.create_checks(policy=policy) self.create_checks(policy=policy)
clients = baker.make("clients.Client", client=seq("Default"), _quantity=2, server_policy=policy, workstation_policy=policy) clients = baker.make(
baker.make("clients.Site", client=cycle(clients), site=seq("Default"), _quantity=4) "clients.Client",
server_agent = baker.make_recipe("agents.server_agent", client="Default1", site="Default1") client=seq("Default"),
workstation_agent = baker.make_recipe("agents.workstation_agent", client="Default1", site="Default3") _quantity=2,
server_policy=policy,
workstation_policy=policy,
)
baker.make(
"clients.Site", client=cycle(clients), site=seq("Default"), _quantity=4
)
server_agent = baker.make_recipe(
"agents.server_agent", client="Default1", site="Default1"
)
workstation_agent = baker.make_recipe(
"agents.workstation_agent", client="Default1", site="Default3"
)
agent1 = baker.make_recipe("agents.agent", client="Default2", site="Default2") agent1 = baker.make_recipe("agents.agent", client="Default2", site="Default2")
agent2 = baker.make_recipe("agents.agent", client="Default2", site="Default4") agent2 = baker.make_recipe("agents.agent", client="Default2", site="Default4")
generate_agent_checks_by_location_task({"client": "Default1", "site": "Default1"}, "server", clear=True, create_tasks=True) generate_agent_checks_by_location_task(
{"client": "Default1", "site": "Default1"},
"server",
clear=True,
create_tasks=True,
)
# server_agent should have policy checks and the other agents should not # server_agent should have policy checks and the other agents should not
self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7)
self.assertEqual(Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 0) self.assertEqual(
Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 0
)
self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 0)
generate_agent_checks_by_location_task({"client": "Default1"}, "workstation", clear=True, create_tasks=True) generate_agent_checks_by_location_task(
{"client": "Default1"}, "workstation", clear=True, create_tasks=True
)
# workstation_agent should now have policy checks and the other agents should not # workstation_agent should now have policy checks and the other agents should not
self.assertEqual(Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 7) self.assertEqual(
Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 7
)
self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7)
self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 0)
self.assertEqual(Agent.objects.get(pk=agent2.id).agentchecks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent2.id).agentchecks.count(), 0)
@@ -860,9 +890,15 @@ class TestPolicyTasks(TacticalTestCase):
policy = baker.make("automation.Policy", active=True) policy = baker.make("automation.Policy", active=True)
self.create_checks(policy=policy) self.create_checks(policy=policy)
clients = baker.make("clients.Client", client=seq("Default"), _quantity=2) clients = baker.make("clients.Client", client=seq("Default"), _quantity=2)
baker.make("clients.Site", client=cycle(clients), site=seq("Default"), _quantity=4) baker.make(
server_agent = baker.make_recipe("agents.server_agent", client="Default1", site="Default1") "clients.Site", client=cycle(clients), site=seq("Default"), _quantity=4
workstation_agent = baker.make_recipe("agents.workstation_agent", client="Default1", site="Default3") )
server_agent = baker.make_recipe(
"agents.server_agent", client="Default1", site="Default1"
)
workstation_agent = baker.make_recipe(
"agents.workstation_agent", client="Default1", site="Default3"
)
agent1 = baker.make_recipe("agents.agent", client="Default2", site="Default2") agent1 = baker.make_recipe("agents.agent", client="Default2", site="Default2")
agent2 = baker.make_recipe("agents.agent", client="Default2", site="Default4") agent2 = baker.make_recipe("agents.agent", client="Default2", site="Default4")
core = CoreSettings.objects.first() core = CoreSettings.objects.first()
@@ -873,7 +909,9 @@ class TestPolicyTasks(TacticalTestCase):
generate_all_agent_checks_task("server", clear=True, create_tasks=True) generate_all_agent_checks_task("server", clear=True, create_tasks=True)
# all servers should have 7 checks # all servers should have 7 checks
self.assertEqual(Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 0) self.assertEqual(
Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 0
)
self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7)
self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 7)
self.assertEqual(Agent.objects.get(pk=agent2.id).agentchecks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent2.id).agentchecks.count(), 0)
@@ -881,7 +919,9 @@ class TestPolicyTasks(TacticalTestCase):
generate_all_agent_checks_task("workstation", clear=True, create_tasks=True) generate_all_agent_checks_task("workstation", clear=True, create_tasks=True)
# all agents should have 7 checks now # all agents should have 7 checks now
self.assertEqual(Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 7) self.assertEqual(
Agent.objects.get(pk=workstation_agent.id).agentchecks.count(), 7
)
self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=server_agent.id).agentchecks.count(), 7)
self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=agent1.id).agentchecks.count(), 7)
self.assertEqual(Agent.objects.get(pk=agent2.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=agent2.id).agentchecks.count(), 7)
@@ -894,7 +934,9 @@ class TestPolicyTasks(TacticalTestCase):
self.create_checks(policy=policy) self.create_checks(policy=policy)
client = baker.make("clients.Client", client="Default", server_policy=policy) client = baker.make("clients.Client", client="Default", server_policy=policy)
baker.make("clients.Site", client=client, site="Default") baker.make("clients.Site", client=client, site="Default")
agent = baker.make_recipe("agents.server_agent", client="Default", site="Default") agent = baker.make_recipe(
"agents.server_agent", client="Default", site="Default"
)
agent.generate_checks_from_policies() agent.generate_checks_from_policies()
# make sure agent has 7 checks # make sure agent has 7 checks
@@ -907,7 +949,11 @@ class TestPolicyTasks(TacticalTestCase):
# make sure policy check doesn't exist on agent # make sure policy check doesn't exist on agent
self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.count(), 6) self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.count(), 6)
self.assertFalse(Agent.objects.get(pk=agent.id).agentchecks.filter(parent_check=policy_check_id).exists()) self.assertFalse(
Agent.objects.get(pk=agent.id)
.agentchecks.filter(parent_check=policy_check_id)
.exists()
)
def update_policy_check_fields(self): def update_policy_check_fields(self):
from .tasks import update_policy_check_fields_task from .tasks import update_policy_check_fields_task
@@ -917,36 +963,51 @@ class TestPolicyTasks(TacticalTestCase):
self.create_checks(policy=policy) self.create_checks(policy=policy)
client = baker.make("clients.Client", client="Default", server_policy=policy) client = baker.make("clients.Client", client="Default", server_policy=policy)
baker.make("clients.Site", client=client, site="Default") baker.make("clients.Site", client=client, site="Default")
agent = baker.make_recipe("agents.server_agent", client="Default", site="Default") agent = baker.make_recipe(
"agents.server_agent", client="Default", site="Default"
)
agent.generate_checks_from_policies() agent.generate_checks_from_policies()
# make sure agent has 7 checks # make sure agent has 7 checks
self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.count(), 7) self.assertEqual(Agent.objects.get(pk=agent.id).agentchecks.count(), 7)
# pick a policy check and update it with new values # pick a policy check and update it with new values
ping_check = Policy.objects.get(pk=policy.id).policychecks.filter(check_type="ping").first() ping_check = (
Policy.objects.get(pk=policy.id)
.policychecks.filter(check_type="ping")
.first()
)
ping_check.ip = "12.12.12.12" ping_check.ip = "12.12.12.12"
ping_check.save() ping_check.save()
update_policy_check_fields_task(ping_check.id) update_policy_check_fields_task(ping_check.id)
# make sure policy check was updated on the agent # make sure policy check was updated on the agent
self.assertEquals(Agent.objects.get(pk=agent.id).agentchecks.filter(parent_check=ping_check.id).ip, "12.12.12.12") self.assertEquals(
Agent.objects.get(pk=agent.id)
.agentchecks.filter(parent_check=ping_check.id)
.ip,
"12.12.12.12",
)
def test_generate_agent_tasks(self): def test_generate_agent_tasks(self):
from .tasks import generate_agent_tasks_from_policies_task from .tasks import generate_agent_tasks_from_policies_task
# create test data # create test data
policy = baker.make("automation.Policy", active=True) policy = baker.make("automation.Policy", active=True)
tasks = baker.make("autotasks.AutomatedTask", policy=policy, name=seq("Task"), _quantity=3) tasks = baker.make(
"autotasks.AutomatedTask", policy=policy, name=seq("Task"), _quantity=3
)
client = baker.make("clients.Client", client="Default") client = baker.make("clients.Client", client="Default")
baker.make("clients.Site", client=client, site="Default") baker.make("clients.Site", client=client, site="Default")
agent = baker.make_recipe("agents.server_agent", client="Default", site="Default", policy=policy) agent = baker.make_recipe(
"agents.server_agent", client="Default", site="Default", policy=policy
)
generate_agent_tasks_from_policies_task(policy.id, clear=True) generate_agent_tasks_from_policies_task(policy.id, clear=True)
agent_tasks = Agent.objects.get(pk=agent.id).autotasks.all() agent_tasks = Agent.objects.get(pk=agent.id).autotasks.all()
# make sure there are 3 agent tasks # make sure there are 3 agent tasks
self.assertEqual(len(agent_tasks), 3) self.assertEqual(len(agent_tasks), 3)
@@ -967,26 +1028,48 @@ class TestPolicyTasks(TacticalTestCase):
# setup data # setup data
policy = baker.make("automation.Policy", active=True) policy = baker.make("automation.Policy", active=True)
tasks = baker.make("autotasks.AutomatedTask", policy=policy, name=seq("Task"), _quantity=3) tasks = baker.make(
clients = baker.make("clients.Client", client=seq("Default"), _quantity=2, server_policy=policy, workstation_policy=policy) "autotasks.AutomatedTask", policy=policy, name=seq("Task"), _quantity=3
baker.make("clients.Site", client=cycle(clients), site=seq("Default"), _quantity=4) )
server_agent = baker.make_recipe("agents.server_agent", client="Default1", site="Default1") clients = baker.make(
workstation_agent = baker.make_recipe("agents.workstation_agent", client="Default1", site="Default3") "clients.Client",
client=seq("Default"),
_quantity=2,
server_policy=policy,
workstation_policy=policy,
)
baker.make(
"clients.Site", client=cycle(clients), site=seq("Default"), _quantity=4
)
server_agent = baker.make_recipe(
"agents.server_agent", client="Default1", site="Default1"
)
workstation_agent = baker.make_recipe(
"agents.workstation_agent", client="Default1", site="Default3"
)
agent1 = baker.make_recipe("agents.agent", client="Default2", site="Default2") agent1 = baker.make_recipe("agents.agent", client="Default2", site="Default2")
agent2 = baker.make_recipe("agents.agent", client="Default2", site="Default4") agent2 = baker.make_recipe("agents.agent", client="Default2", site="Default4")
generate_agent_tasks_by_location_task({"client": "Default1", "site": "Default1"}, "server", clear=True) generate_agent_tasks_by_location_task(
{"client": "Default1", "site": "Default1"}, "server", clear=True
)
# all servers in Default1 and site Default1 should have 3 tasks # all servers in Default1 and site Default1 should have 3 tasks
self.assertEqual(Agent.objects.get(pk=workstation_agent.id).autotasks.count(), 0) self.assertEqual(
Agent.objects.get(pk=workstation_agent.id).autotasks.count(), 0
)
self.assertEqual(Agent.objects.get(pk=server_agent.id).autotasks.count(), 3) self.assertEqual(Agent.objects.get(pk=server_agent.id).autotasks.count(), 3)
self.assertEqual(Agent.objects.get(pk=agent1.id).autotasks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent1.id).autotasks.count(), 0)
self.assertEqual(Agent.objects.get(pk=agent2.id).autotasks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent2.id).autotasks.count(), 0)
generate_agent_tasks_by_location_task({"client": "Default1"}, "workstation", clear=True) generate_agent_tasks_by_location_task(
{"client": "Default1"}, "workstation", clear=True
)
# all workstations in Default1 should have 3 tasks # all workstations in Default1 should have 3 tasks
self.assertEqual(Agent.objects.get(pk=workstation_agent.id).autotasks.count(), 3) self.assertEqual(
Agent.objects.get(pk=workstation_agent.id).autotasks.count(), 3
)
self.assertEqual(Agent.objects.get(pk=server_agent.id).autotasks.count(), 3) self.assertEqual(Agent.objects.get(pk=server_agent.id).autotasks.count(), 3)
self.assertEqual(Agent.objects.get(pk=agent1.id).autotasks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent1.id).autotasks.count(), 0)
self.assertEqual(Agent.objects.get(pk=agent2.id).autotasks.count(), 0) self.assertEqual(Agent.objects.get(pk=agent2.id).autotasks.count(), 0)
@@ -999,14 +1082,15 @@ class TestPolicyTasks(TacticalTestCase):
tasks = baker.make("autotasks.AutomatedTask", policy=policy, _quantity=3) tasks = baker.make("autotasks.AutomatedTask", policy=policy, _quantity=3)
client = baker.make("clients.Client", client="Default", server_policy=policy) client = baker.make("clients.Client", client="Default", server_policy=policy)
baker.make("clients.Site", client=client, site="Default") baker.make("clients.Site", client=client, site="Default")
agent = baker.make_recipe("agents.server_agent", client="Default", site="Default") agent = baker.make_recipe(
"agents.server_agent", client="Default", site="Default"
)
agent.generate_tasks_from_policies() agent.generate_tasks_from_policies()
delete_policy_autotask_task(tasks[0].id) delete_policy_autotask_task(tasks[0].id)
delete_win_task_schedule.assert_called_with(agent.autotasks.first().id) delete_win_task_schedule.assert_called_with(agent.autotasks.first().id)
@patch("autotasks.tasks.run_win_task.delay") @patch("autotasks.tasks.run_win_task.delay")
def test_run_policy_task(self, run_win_task): def test_run_policy_task(self, run_win_task):
from .tasks import run_win_policy_autotask_task from .tasks import run_win_policy_autotask_task
@@ -1026,10 +1110,14 @@ class TestPolicyTasks(TacticalTestCase):
# setup data # setup data
policy = baker.make("automation.Policy", active=True) policy = baker.make("automation.Policy", active=True)
tasks = baker.make("autotasks.AutomatedTask", enabled=True, policy=policy, _quantity=3) tasks = baker.make(
"autotasks.AutomatedTask", enabled=True, policy=policy, _quantity=3
)
client = baker.make("clients.Client", client="Default", server_policy=policy) client = baker.make("clients.Client", client="Default", server_policy=policy)
baker.make("clients.Site", client=client, site="Default") baker.make("clients.Site", client=client, site="Default")
agent = baker.make_recipe("agents.server_agent", client="Default", site="Default") agent = baker.make_recipe(
"agents.server_agent", client="Default", site="Default"
)
agent.generate_tasks_from_policies() agent.generate_tasks_from_policies()
tasks[0].enabled = False tasks[0].enabled = False

View File

@@ -73,7 +73,7 @@
</q-select> </q-select>
</q-card-section> </q-card-section>
<q-card-section class="row items-center"> <q-card-section class="row items-center">
<q-btn label="Add Policies" color="primary" type="submit" /> <q-btn label="Edit Policies" color="primary" type="submit" />
</q-card-section> </q-card-section>
</q-form> </q-form>
</q-card> </q-card>