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)
Exemple #2
0
 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()),
     )
Exemple #3
0
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
Exemple #5
0
    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)
Exemple #6
0
def bg_request_template(request_template_dict):
    """Request template as a bg model."""
    return RequestTemplate(**request_template_dict)
Exemple #7
0
 def request_template(self):
     return RequestTemplate(command="command", system="system")
Exemple #8
0
 def __repr__(self):
     return BrewtilsRequestTemplate.__repr__(self)
Exemple #9
0
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)
Exemple #11
0
 def request_template(self):
     return RequestTemplate(command='command', system='system')