module Kubernetes.Model.V1.Volume
( Volume (..)
, name
, hostPath
, emptyDir
, gcePersistentDisk
, awsElasticBlockStore
, gitRepo
, secret
, nfs
, iscsi
, glusterfs
, persistentVolumeClaim
, rbd
, flexVolume
, cinder
, cephfs
, flocker
, downwardAPI
, fc
, mkVolume
) 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.AWSElasticBlockStoreVolumeSource (AWSElasticBlockStoreVolumeSource)
import Kubernetes.Model.V1.CephFSVolumeSource (CephFSVolumeSource)
import Kubernetes.Model.V1.CinderVolumeSource (CinderVolumeSource)
import Kubernetes.Model.V1.DownwardAPIVolumeSource (DownwardAPIVolumeSource)
import Kubernetes.Model.V1.EmptyDirVolumeSource (EmptyDirVolumeSource)
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.GitRepoVolumeSource (GitRepoVolumeSource)
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.PersistentVolumeClaimVolumeSource (PersistentVolumeClaimVolumeSource)
import Kubernetes.Model.V1.RBDVolumeSource (RBDVolumeSource)
import Kubernetes.Model.V1.SecretVolumeSource (SecretVolumeSource)
import Prelude hiding
(drop,
error,
max,
min)
import qualified Prelude as P
import Test.QuickCheck (Arbitrary, arbitrary)
import Test.QuickCheck.Instances ()
data Volume = Volume
{ _name :: !(Text)
, _hostPath :: !(Maybe HostPathVolumeSource)
, _emptyDir :: !(Maybe EmptyDirVolumeSource)
, _gcePersistentDisk :: !(Maybe GCEPersistentDiskVolumeSource)
, _awsElasticBlockStore :: !(Maybe AWSElasticBlockStoreVolumeSource)
, _gitRepo :: !(Maybe GitRepoVolumeSource)
, _secret :: !(Maybe SecretVolumeSource)
, _nfs :: !(Maybe NFSVolumeSource)
, _iscsi :: !(Maybe ISCSIVolumeSource)
, _glusterfs :: !(Maybe GlusterfsVolumeSource)
, _persistentVolumeClaim :: !(Maybe PersistentVolumeClaimVolumeSource)
, _rbd :: !(Maybe RBDVolumeSource)
, _flexVolume :: !(Maybe FlexVolumeSource)
, _cinder :: !(Maybe CinderVolumeSource)
, _cephfs :: !(Maybe CephFSVolumeSource)
, _flocker :: !(Maybe FlockerVolumeSource)
, _downwardAPI :: !(Maybe DownwardAPIVolumeSource)
, _fc :: !(Maybe FCVolumeSource)
} deriving (Show, Eq, Generic)
makeLenses ''Volume
$(deriveJSON defaultOptions{fieldLabelModifier = (\n -> if n == "_type_" then "type" else P.drop 1 n)} ''Volume)
instance Arbitrary Volume where
arbitrary = Volume <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
mkVolume :: Text -> Volume
mkVolume xnamex = Volume xnamex Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing