"""
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 Spec(CrdObject):
    _properties = [
        ('parameters', 'parameters', object, False, False),
        ('provisioner', 'provisioner', str, True, False)
    ]        

    def __init__(self,
                 provisioner,  # type: str
                 parameters=_omit,  # type: Optional[Any]
                 ):
        super(Spec, self).__init__(
            provisioner=provisioner,
            parameters=parameters,
        )

    @property
    def parameters(self):
        # type: () -> Any
        return self._property_impl('parameters')
    
    @parameters.setter
    def parameters(self, new_val):
        # type: (Optional[Any]) -> None
        self._parameters = new_val
    
    @property
    def provisioner(self):
        # type: () -> str
        return self._property_impl('provisioner')
    
    @provisioner.setter
    def provisioner(self, new_val):
        # type: (str) -> None
        self._provisioner = new_val


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

    def __init__(self,
                 spec,  # type: Spec
                 apiVersion=_omit,  # type: Optional[str]
                 kind=_omit,  # type: Optional[str]
                 metadata=_omit,  # type: Optional[Any]
                 status=_omit,  # type: Optional[Any]
                 ):
        super(VolumeReplicationClass, 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: () -> Spec
        return self._property_impl('spec')
    
    @spec.setter
    def spec(self, new_val):
        # type: (Spec) -> None
        self._spec = new_val
    
    @property
    def status(self):
        # type: () -> Any
        return self._property_impl('status')
    
    @status.setter
    def status(self, new_val):
        # type: (Optional[Any]) -> None
        self._status = new_val
