"""
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 = [
        ('storageClassName', 'storageClassName', str, False, False),
        ('bucketName', 'bucketName', str, False, False),
        ('generateBucketName', 'generateBucketName', str, False, False),
        ('additionalConfig', 'additionalConfig', object, False, True),
        ('objectBucketName', 'objectBucketName', str, False, False)
    ]        

    def __init__(self,
                 storageClassName=_omit,  # type: Optional[str]
                 bucketName=_omit,  # type: Optional[str]
                 generateBucketName=_omit,  # type: Optional[str]
                 additionalConfig=_omit,  # type: Optional[Any]
                 objectBucketName=_omit,  # type: Optional[str]
                 ):
        super(Spec, self).__init__(
            storageClassName=storageClassName,
            bucketName=bucketName,
            generateBucketName=generateBucketName,
            additionalConfig=additionalConfig,
            objectBucketName=objectBucketName,
        )

    @property
    def storageClassName(self):
        # type: () -> str
        return self._property_impl('storageClassName')
    
    @storageClassName.setter
    def storageClassName(self, new_val):
        # type: (Optional[str]) -> None
        self._storageClassName = new_val
    
    @property
    def bucketName(self):
        # type: () -> str
        return self._property_impl('bucketName')
    
    @bucketName.setter
    def bucketName(self, new_val):
        # type: (Optional[str]) -> None
        self._bucketName = new_val
    
    @property
    def generateBucketName(self):
        # type: () -> str
        return self._property_impl('generateBucketName')
    
    @generateBucketName.setter
    def generateBucketName(self, new_val):
        # type: (Optional[str]) -> None
        self._generateBucketName = new_val
    
    @property
    def additionalConfig(self):
        # type: () -> Optional[Any]
        return self._property_impl('additionalConfig')
    
    @additionalConfig.setter
    def additionalConfig(self, new_val):
        # type: (Optional[Any]) -> None
        self._additionalConfig = new_val
    
    @property
    def objectBucketName(self):
        # type: () -> str
        return self._property_impl('objectBucketName')
    
    @objectBucketName.setter
    def objectBucketName(self, new_val):
        # type: (Optional[str]) -> None
        self._objectBucketName = new_val


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

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

    @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
    
    @property
    def apiVersion(self):
        # type: () -> str
        return self._property_impl('apiVersion')
    
    @apiVersion.setter
    def apiVersion(self, new_val):
        # type: (str) -> None
        self._apiVersion = new_val
    
    @property
    def metadata(self):
        # type: () -> Any
        return self._property_impl('metadata')
    
    @metadata.setter
    def metadata(self, new_val):
        # type: (Any) -> None
        self._metadata = new_val
