-- Copyright (c) 2016-present, SoundCloud Ltd. -- All rights reserved. -- -- This source code is distributed under the terms of a MIT license, -- found in the LICENSE file. {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE TemplateHaskell #-} 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 () -- | Volume represents a named volume in a pod that may be accessed by any container in the pod. 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 -- | Use this method to build a Volume mkVolume :: Text -> Volume mkVolume xnamex = Volume xnamex Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing