Beispiel #1
0
    def register(
        self,
        fn: callbacks.ResourceChangingFn,
        *,
        resource: references.Selector,
        id: Optional[str] = None,
        reason: Optional[handlers.Reason] = None,
        event: Optional[str] = None,  # deprecated, use `reason`
        field: Optional[dicts.FieldSpec] = None,
        errors: Optional[handlers.ErrorsMode] = None,
        timeout: Optional[float] = None,
        retries: Optional[int] = None,
        backoff: Optional[float] = None,
        cooldown: Optional[float] = None,  # deprecated, use `backoff`
        initial: Optional[bool] = None,
        deleted: Optional[bool] = None,
        requires_finalizer: bool = False,
        labels: Optional[filters.MetaFilter] = None,
        annotations: Optional[filters.MetaFilter] = None,
        when: Optional[callbacks.WhenFilterFn] = None,
    ) -> callbacks.ResourceChangingFn:
        warnings.warn(
            "registry.register() is deprecated; "
            "use @kopf.on... decorators with registry= kwarg.",
            DeprecationWarning)

        if reason is None and event is not None:
            reason = handlers.Reason(event)

        real_field = dicts.parse_field(
            field) or None  # to not store tuple() as a no-field case.
        real_id = generate_id(fn=fn, id=id, suffix=".".join(real_field or []))
        handler = handlers.ResourceChangingHandler(
            id=real_id,
            fn=fn,
            reason=reason,
            errors=errors,
            timeout=timeout,
            retries=retries,
            backoff=backoff,
            cooldown=cooldown,
            initial=initial,
            deleted=deleted,
            requires_finalizer=requires_finalizer,
            selector=resource,
            labels=labels,
            annotations=annotations,
            when=when,
            field=real_field,
            value=None,
            old=None,
            new=None,
            field_needs_change=None,
        )

        self.append(handler)
        return fn
Beispiel #2
0
 def from_storage(cls, __d: progress.ProgressRecord) -> "HandlerState":
     return cls(
         active=False,
         started=_datetime_fromisoformat(__d.get('started')) or datetime.datetime.utcnow(),
         stopped=_datetime_fromisoformat(__d.get('stopped')),
         delayed=_datetime_fromisoformat(__d.get('delayed')),
         purpose=handlers_.Reason(__d.get('purpose')) if __d.get('purpose') else None,
         retries=__d.get('retries') or 0,
         success=__d.get('success') or False,
         failure=__d.get('failure') or False,
         message=__d.get('message'),
         subrefs=__d.get('subrefs') or (),
         _origin=__d,
     )