module Kubernetes.Model.V1.PersistentVolumeSpec
( PersistentVolumeSpec (..)
, capacity
, gcePersistentDisk
, awsElasticBlockStore
, hostPath
, glusterfs
, nfs
, rbd
, iscsi
, cinder
, cephfs
, fc
, flocker
, flexVolume
, accessModes
, claimRef
, persistentVolumeReclaimPolicy
, mkPersistentVolumeSpec
) where
import Control.Lens.TH (makeLenses)
import Data.Aeson.TH (defaultOptions, deriveJSON, fieldLabelModifier)
import Data.Text (Text)
import GHC.Generics (Generic)
import Kubernetes.Model.V1.Any (Any)
import Kubernetes.Model.V1.AWSElasticBlockStoreVolumeSource (AWSElasticBlockStoreVolumeSource)
import Kubernetes.Model.V1.CephFSVolumeSource (CephFSVolumeSource)
import Kubernetes.Model.V1.CinderVolumeSource (CinderVolumeSource)
import Kubernetes.Model.V1.FCVolumeSource (FCVolumeSource)
import Kubernetes.Model.V1.FlexVolumeSource (FlexVolumeSource)
import Kubernetes.Model.V1.FlockerVolumeSource (FlockerVolumeSource)
import Kubernetes.Model.V1.GCEPersistentDiskVolumeSource (GCEPersistentDiskVolumeSource)
import Kubernetes.Model.V1.GlusterfsVolumeSource (GlusterfsVolumeSource)
import Kubernetes.Model.V1.HostPathVolumeSource (HostPathVolumeSource)
import Kubernetes.Model.V1.ISCSIVolumeSource (ISCSIVolumeSource)
import Kubernetes.Model.V1.NFSVolumeSource (NFSVolumeSource)
import Kubernetes.Model.V1.ObjectReference (ObjectReference)
import Kubernetes.Model.V1.PersistentVolumeAccessMode (PersistentVolumeAccessMode)
import Kubernetes.Model.V1.RBDVolumeSource (RBDVolumeSource)
import Prelude hiding
(drop,
error,
max, min)
import qualified Prelude as P
import Test.QuickCheck (Arbitrary, arbitrary)
import Test.QuickCheck.Instances ()
data PersistentVolumeSpec = PersistentVolumeSpec
{ _capacity :: !(Maybe Any)
, _gcePersistentDisk :: !(Maybe GCEPersistentDiskVolumeSource)
, _awsElasticBlockStore :: !(Maybe AWSElasticBlockStoreVolumeSource)
, _hostPath :: !(Maybe HostPathVolumeSource)
, _glusterfs :: !(Maybe GlusterfsVolumeSource)
, _nfs :: !(Maybe NFSVolumeSource)
, _rbd :: !(Maybe RBDVolumeSource)
, _iscsi :: !(Maybe ISCSIVolumeSource)
, _cinder :: !(Maybe CinderVolumeSource)
, _cephfs :: !(Maybe CephFSVolumeSource)
, _fc :: !(Maybe FCVolumeSource)
, _flocker :: !(Maybe FlockerVolumeSource)
, _flexVolume :: !(Maybe FlexVolumeSource)
, _accessModes :: !(Maybe [PersistentVolumeAccessMode])
, _claimRef :: !(Maybe ObjectReference)
, _persistentVolumeReclaimPolicy :: !(Maybe Text)
} deriving (Show, Eq, Generic)
makeLenses ''PersistentVolumeSpec
$(deriveJSON defaultOptions{fieldLabelModifier = (\n -> if n == "_type_" then "type" else P.drop 1 n)} ''PersistentVolumeSpec)
instance Arbitrary PersistentVolumeSpec where
arbitrary = PersistentVolumeSpec <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
mkPersistentVolumeSpec :: PersistentVolumeSpec
mkPersistentVolumeSpec = PersistentVolumeSpec Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing