"""
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 AttachmentsItem(CrdObject):
    _properties = [
        ('clusterName', 'clusterName', str, True, False),
        ('mountDir', 'mountDir', str, True, False),
        ('node', 'node', str, True, False),
        ('podName', 'podName', str, True, False),
        ('podNamespace', 'podNamespace', str, True, False),
        ('readOnly', 'readOnly', bool, True, False)
    ]        

    def __init__(self,
                 clusterName,  # type: str
                 mountDir,  # type: str
                 node,  # type: str
                 podName,  # type: str
                 podNamespace,  # type: str
                 readOnly,  # type: bool
                 ):
        super(AttachmentsItem, self).__init__(
            clusterName=clusterName,
            mountDir=mountDir,
            node=node,
            podName=podName,
            podNamespace=podNamespace,
            readOnly=readOnly,
        )

    @property
    def clusterName(self):
        # type: () -> str
        return self._property_impl('clusterName')
    
    @clusterName.setter
    def clusterName(self, new_val):
        # type: (str) -> None
        self._clusterName = new_val
    
    @property
    def mountDir(self):
        # type: () -> str
        return self._property_impl('mountDir')
    
    @mountDir.setter
    def mountDir(self, new_val):
        # type: (str) -> None
        self._mountDir = new_val
    
    @property
    def node(self):
        # type: () -> str
        return self._property_impl('node')
    
    @node.setter
    def node(self, new_val):
        # type: (str) -> None
        self._node = new_val
    
    @property
    def podName(self):
        # type: () -> str
        return self._property_impl('podName')
    
    @podName.setter
    def podName(self, new_val):
        # type: (str) -> None
        self._podName = new_val
    
    @property
    def podNamespace(self):
        # type: () -> str
        return self._property_impl('podNamespace')
    
    @podNamespace.setter
    def podNamespace(self, new_val):
        # type: (str) -> None
        self._podNamespace = new_val
    
    @property
    def readOnly(self):
        # type: () -> bool
        return self._property_impl('readOnly')
    
    @readOnly.setter
    def readOnly(self, new_val):
        # type: (bool) -> None
        self._readOnly = new_val


class AttachmentsList(CrdObjectList):
    _items_type = AttachmentsItem


class Volume(CrdClass):
    _properties = [
        ('apiVersion', 'apiVersion', str, False, False),
        ('attachments', 'attachments', 'AttachmentsList', False, False),
        ('kind', 'kind', str, False, False),
        ('metadata', 'metadata', object, False, False),
        ('status', 'status', object, False, False)
    ]        

    def __init__(self,
                 apiVersion=_omit,  # type: Optional[str]
                 attachments=_omit,  # type: Optional[Union[List[AttachmentsItem], CrdObjectList]]
                 kind=_omit,  # type: Optional[str]
                 metadata=_omit,  # type: Optional[Any]
                 status=_omit,  # type: Optional[Any]
                 ):
        super(Volume, self).__init__(
            apiVersion=apiVersion,
            attachments=attachments,
            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 attachments(self):
        # type: () -> Union[List[AttachmentsItem], CrdObjectList]
        return self._property_impl('attachments')
    
    @attachments.setter
    def attachments(self, new_val):
        # type: (Optional[Union[List[AttachmentsItem], CrdObjectList]]) -> None
        self._attachments = 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 status(self):
        # type: () -> Any
        return self._property_impl('status')
    
    @status.setter
    def status(self, new_val):
        # type: (Optional[Any]) -> None
        self._status = new_val
