in src/services/clients/scheduler.py [0:0]
def register_job(self, tenant: Tenant, schedule: str,
environment: dict,
name: Optional[str] = None,
rulesets: list[str] | None = None) -> ScheduledJob:
_id = self.safe_name(name) if name else \
self.safe_name_from_tenant(tenant)
_LOG.info(f'Registering new scheduled job with id \'{_id}\'')
params = dict(
rule_name=_id, schedule=schedule,
description=self._rule_description_from_scratch(tenant, schedule))
self._put_rule_asserting_valid_schedule_expression(**params)
_LOG.debug(f'EventBridge rule was created')
target = BatchRuleTarget(
_id=TARGET_ID,
arn=self._batch_client.get_custodian_job_queue_arn(),
role_arn=self._iam_client.build_role_arn(
self._environment.event_bridge_service_role()),
)
environment[BatchJobEnv.SUBMITTED_AT.value] = '<submitted_at>'
environment[BatchJobEnv.SCHEDULED_JOB_NAME.value] = _id
target.set_input_transformer(
{'submitted_at': '$.time'},
self._batch_client.build_container_overrides(
environment=environment, titled=True
))
target.set_params(
self._batch_client.get_custodian_job_definition_arn(),
f'{_id}-scheduled-job'
)
_ = self._client.put_targets(_id, [target, ])
_LOG.debug('Batch queue target was added to the created rule')
_job = ScheduledJob(
id=_id,
customer_name=tenant.customer_name,
tenant_name=tenant.name,
context=dict(
schedule=schedule,
scan_regions=self._scan_regions_from_env(environment),
scan_rulesets=rulesets,
is_enabled=True
),
)
_job.save()
_LOG.info(f'Scheduled job with name \'{_id}\' was added')
return _job