Source code for pubtools.pulplib._impl.model.distributor
import datetime
from .common import PulpObject, Deletable, DetachedException
from .attr import pulp_attrib
from ..schema import load_schema
from .. import compat_attr as attr
[docs]@attr.s(kw_only=True, frozen=True)
class Distributor(PulpObject, Deletable):
    """Represents a Pulp distributor."""
    _SCHEMA = load_schema("repository", "distributor")
    id = pulp_attrib(type=str, pulp_field="id")
    """ID of this distributor (str).
    This is an arbitrary string, though often matches exactly the `type_id`.
    """
    type_id = pulp_attrib(type=str, pulp_field="distributor_type_id")
    """Type ID of this distributor (str).
    The type ID of a distributor determines which content may be handled and
    which steps may be performed by the distributor. For example, distributors
    of type `yum_distributor` may be used to create yum repositories.
    """
    repo_id = pulp_attrib(type=str, default=None, pulp_field="repo_id")
    """The :class:`pubtools.pulplib.Repository` ID this distributor is attached to."""
    relative_url = pulp_attrib(type=str, default=None, pulp_field="config.relative_url")
    """Default distribution URL for the repository which the distributor is attached to,
    relative to the Pulp content root."""
    last_publish = pulp_attrib(
        default=None, type=datetime.datetime, pulp_field="last_publish"
    )
    """The :class:`~datetime.datetime` at which this distributor was last published,
    if known."""
    is_rsync = attr.ib(
        default=attr.Factory(
            lambda self: self.type_id
            in (
                "rpm_rsync_distributor",
                "iso_rsync_distributor",
                "docker_rsync_distributor",
            ),
            takes_self=True,
        )
    )
    """True for distributors in the 'rsync distributor' family
    (e.g. ``rpm_rsync_distributor``).
    """
[docs]    def delete(self):
        """Delete this distributor from Pulp.
        Returns:
            Future[list[:class:`~pubtools.pulplib.Task`]]
                A future which is resolved when the distributor deletion has completed.
                The future contains a list of zero or more tasks triggered and awaited
                during the delete operation.
                This object also becomes detached from the client; no further updates
                are possible.
        Raises:
            DetachedException
                If this instance is not attached to a Pulp client or repository.
        .. versionadded:: 2.3.0
        """
        if not self.repo_id:
            raise DetachedException()
        return self._delete("repositories/%s/distributors" % self.repo_id, self.id)