def system_spec(request): """Create trigger and request template from parameters.""" params: Tuple[Any, ...] = request.param trigger_args = params[0] req_template_args = params[1] return IntervalTrigger(**trigger_args), RequestTemplate(**req_template_args)
def simple_job(self): return Job( trigger_type="file", trigger=FileTrigger(pattern="do_not_care", path="./", callbacks={"on_created": True}), request_template=RequestTemplate( system="something_v3", system_version="3.0.0", instance_name="my_bg", namespace="file_testing", command="something_cool", ), name="my_simple_job", id=str(ObjectId()), )
def trigger_template(): request_dict = { "system": "system", "system_version": "1.0.0", "instance_name": "default", "namespace": "ns", "command": "speak", "command_type": "ACTION", "parameters": { "message": "Hello {event/src_path}!" }, "comment": "hi!", "metadata": { "request": "stuff" }, "output_type": "STRING", } return RequestTemplate(**request_dict)
def test_create_jobs_does_not_create_invalid_jobs(self): valid_job = BrewtilsJob( name="valid_job", trigger_type="interval", trigger=IntervalTrigger(hours=1), request_template=RequestTemplate( system="testsystem", system_version="1.2.3", instance_name="default", command="testcommand", ), ) invalid_job = BrewtilsJob(name="invalid_job") results = create_jobs([valid_job, invalid_job]) assert len(results["created"]) == 1 assert len(results["rejected"]) == 1 assert len(Job.objects.all()) == 1
def test_no_namespace_job(self, system_spec): job_name = "test_no_namespace_job" job_wait = 30 template = RequestTemplate( system=system_spec["system"], system_version=system_spec["system_version"], instance_name=system_spec["instance_name"], command=system_spec["command"], parameters=system_spec["parameters"], comment=job_name + " Job", ) trigger = IntervalTrigger(seconds=job_wait) trigger.reschedule_on_finish = True job = Job( name=job_name, trigger_type="interval", trigger=trigger, request_template=template, status="RUNNING", coalesce=True, max_instances=1, ) job_response = self.easy_client.create_job(job) assert job_response is not None # Wait before checking plus a little extra time.sleep(job_wait + 15) found_jobs = self.easy_client.find_jobs(name=job_name) assert len(found_jobs) == 1 assert found_jobs[0] is not None assert found_jobs[0].success_count > 0 assert self.easy_client.remove_job(found_jobs[0].id)
def bg_request_template(request_template_dict): """Request template as a bg model.""" return RequestTemplate(**request_template_dict)
def request_template(self): return RequestTemplate(command="command", system="system")
def __repr__(self): return BrewtilsRequestTemplate.__repr__(self)
from bson import ObjectId from datetime import datetime, timedelta from typing import Tuple import beer_garden.config as config import beer_garden.db.api as db import beer_garden.db.mongo.motor as moto import beer_garden.local_plugins.manager as lpm import beer_garden.queue.api as queue import beer_garden.requests as requests from beer_garden.errors import NotFoundException from beer_garden.events import publish_event, publish_event_async logger = logging.getLogger(__name__) start_request = RequestTemplate(command="_start", command_type="EPHEMERAL") stop_request = RequestTemplate(command="_stop", command_type="EPHEMERAL") initialize_logging_request = RequestTemplate(command="_initialize_logging", command_type="EPHEMERAL") read_logs_request = RequestTemplate(command="_read_log", command_type="ADMIN") @publish_event(Events.INSTANCE_INITIALIZED) def initialize( instance_id: str = None, instance: Instance = None, system: System = None, runner_id: str = None, **_, ) -> Instance: """Initializes an instance.
def test_start_date_job(self, system_spec): job_name = "test_start_date_job" delay_start = 60 * 2 job_wait = 5 start_date = int(round((time.time() + delay_start) * 1000)) template = RequestTemplate( system=system_spec['system'], system_version=system_spec['system_version'], instance_name=system_spec['instance_name'], command=system_spec['command'], parameters=system_spec['parameters'], comment=job_name + ' Job', output_type="STRING") trigger = CronTrigger(year="*", month="*", day="*", week="*", day_of_week="*", hour="*", minute="*", second=f"*/{job_wait}", start_date=start_date, end_date=None, jitter=None, timezone="UTC") trigger.reschedule_on_finish = True job = Job(name=job_name, trigger_type='cron', trigger=trigger, request_template=template, status="RUNNING", coalesce=True, max_instances=1) job_response = self.easy_client.create_job(job) assert job_response is not None # Verify it hasn't ran yet time.sleep(job_wait + 5) found_jobs = self.easy_client.find_jobs(name=job_name) if time.time() < start_date: assert found_jobs[0].success_count == 0 else: assert False # Verify that is can run time.sleep(delay_start + job_wait) found_jobs = self.easy_client.find_jobs(name=job_name) assert len(found_jobs) == 1 assert found_jobs[0] is not None assert found_jobs[0].success_count > 0 # Verify that the job doesn't get deleted time.sleep(job_wait) found_jobs = self.easy_client.find_jobs(name=job_name) assert len(found_jobs) == 1 assert found_jobs[0] is not None assert found_jobs[0].success_count > 1 assert self.easy_client.remove_job(found_jobs[0].id)
def request_template(self): return RequestTemplate(command='command', system='system')