"""
This file is automatically generated.
Do not modify.
"""

try:
    from typing import Any, Optional, Union, List
except ImportError:
    pass

from .._helper import _omit, CrdObject, CrdObjectList, CrdClass

class Pull(CrdObject):
    _properties = [
        ('endpoint', 'endpoint', str, True, False)
    ]        

    def __init__(self,
                 endpoint,  # type: str
                 ):
        super(Pull, self).__init__(
            endpoint=endpoint,
        )

    @property
    def endpoint(self):
        # type: () -> str
        return self._property_impl('endpoint')
    
    @endpoint.setter
    def endpoint(self, new_val):
        # type: (str) -> None
        self._endpoint = new_val


class Spec(CrdObject):
    _properties = [
        ('pull', 'pull', 'Pull', True, False)
    ]        

    def __init__(self,
                 pull,  # type: Pull
                 ):
        super(Spec, self).__init__(
            pull=pull,
        )

    @property
    def pull(self):
        # type: () -> Pull
        return self._property_impl('pull')
    
    @pull.setter
    def pull(self, new_val):
        # type: (Pull) -> None
        self._pull = new_val


class Status(CrdObject):
    _properties = [
        ('phase', 'phase', str, False, False)
    ]        

    def __init__(self,
                 phase=_omit,  # type: Optional[str]
                 ):
        super(Status, self).__init__(
            phase=phase,
        )

    @property
    def phase(self):
        # type: () -> str
        return self._property_impl('phase')
    
    @phase.setter
    def phase(self, new_val):
        # type: (Optional[str]) -> None
        self._phase = new_val


class CephObjectRealm(CrdClass):
    _properties = [
        ('apiVersion', 'apiVersion', str, False, False),
        ('kind', 'kind', str, False, False),
        ('metadata', 'metadata', object, False, False),
        ('spec', 'spec', 'Spec', True, True),
        ('status', 'status', 'Status', False, False)
    ]        

    def __init__(self,
                 spec,  # type: Optional[Spec]
                 apiVersion=_omit,  # type: Optional[str]
                 kind=_omit,  # type: Optional[str]
                 metadata=_omit,  # type: Optional[Any]
                 status=_omit,  # type: Optional[Status]
                 ):
        super(CephObjectRealm, self).__init__(
            spec=spec,
            apiVersion=apiVersion,
            kind=kind,
            metadata=metadata,
            status=status,
        )

    @property
    def apiVersion(self):
        # type: () -> str
        return self._property_impl('apiVersion')
    
    @apiVersion.setter
    def apiVersion(self, new_val):
        # type: (Optional[str]) -> None
        self._apiVersion = new_val
    
    @property
    def kind(self):
        # type: () -> str
        return self._property_impl('kind')
    
    @kind.setter
    def kind(self, new_val):
        # type: (Optional[str]) -> None
        self._kind = new_val
    
    @property
    def metadata(self):
        # type: () -> Any
        return self._property_impl('metadata')
    
    @metadata.setter
    def metadata(self, new_val):
        # type: (Optional[Any]) -> None
        self._metadata = new_val
    
    @property
    def spec(self):
        # type: () -> Optional[Spec]
        return self._property_impl('spec')
    
    @spec.setter
    def spec(self, new_val):
        # type: (Optional[Spec]) -> None
        self._spec = new_val
    
    @property
    def status(self):
        # type: () -> Status
        return self._property_impl('status')
    
    @status.setter
    def status(self, new_val):
        # type: (Optional[Status]) -> None
        self._status = new_val
