{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Omics.UpdateRunGroup
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a run group.
module Amazonka.Omics.UpdateRunGroup
  ( -- * Creating a Request
    UpdateRunGroup (..),
    newUpdateRunGroup,

    -- * Request Lenses
    updateRunGroup_maxCpus,
    updateRunGroup_maxDuration,
    updateRunGroup_maxRuns,
    updateRunGroup_name,
    updateRunGroup_id,

    -- * Destructuring the Response
    UpdateRunGroupResponse (..),
    newUpdateRunGroupResponse,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Omics.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateRunGroup' smart constructor.
data UpdateRunGroup = UpdateRunGroup'
  { -- | The maximum number of CPUs to use.
    UpdateRunGroup -> Maybe Natural
maxCpus :: Prelude.Maybe Prelude.Natural,
    -- | The maximum amount of time to run.
    UpdateRunGroup -> Maybe Natural
maxDuration :: Prelude.Maybe Prelude.Natural,
    -- | The maximum number of concurrent runs for the group.
    UpdateRunGroup -> Maybe Natural
maxRuns :: Prelude.Maybe Prelude.Natural,
    -- | A name for the group.
    UpdateRunGroup -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The group\'s ID.
    UpdateRunGroup -> Text
id :: Prelude.Text
  }
  deriving (UpdateRunGroup -> UpdateRunGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRunGroup -> UpdateRunGroup -> Bool
$c/= :: UpdateRunGroup -> UpdateRunGroup -> Bool
== :: UpdateRunGroup -> UpdateRunGroup -> Bool
$c== :: UpdateRunGroup -> UpdateRunGroup -> Bool
Prelude.Eq, ReadPrec [UpdateRunGroup]
ReadPrec UpdateRunGroup
Int -> ReadS UpdateRunGroup
ReadS [UpdateRunGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRunGroup]
$creadListPrec :: ReadPrec [UpdateRunGroup]
readPrec :: ReadPrec UpdateRunGroup
$creadPrec :: ReadPrec UpdateRunGroup
readList :: ReadS [UpdateRunGroup]
$creadList :: ReadS [UpdateRunGroup]
readsPrec :: Int -> ReadS UpdateRunGroup
$creadsPrec :: Int -> ReadS UpdateRunGroup
Prelude.Read, Int -> UpdateRunGroup -> ShowS
[UpdateRunGroup] -> ShowS
UpdateRunGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRunGroup] -> ShowS
$cshowList :: [UpdateRunGroup] -> ShowS
show :: UpdateRunGroup -> String
$cshow :: UpdateRunGroup -> String
showsPrec :: Int -> UpdateRunGroup -> ShowS
$cshowsPrec :: Int -> UpdateRunGroup -> ShowS
Prelude.Show, forall x. Rep UpdateRunGroup x -> UpdateRunGroup
forall x. UpdateRunGroup -> Rep UpdateRunGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateRunGroup x -> UpdateRunGroup
$cfrom :: forall x. UpdateRunGroup -> Rep UpdateRunGroup x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRunGroup' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'maxCpus', 'updateRunGroup_maxCpus' - The maximum number of CPUs to use.
--
-- 'maxDuration', 'updateRunGroup_maxDuration' - The maximum amount of time to run.
--
-- 'maxRuns', 'updateRunGroup_maxRuns' - The maximum number of concurrent runs for the group.
--
-- 'name', 'updateRunGroup_name' - A name for the group.
--
-- 'id', 'updateRunGroup_id' - The group\'s ID.
newUpdateRunGroup ::
  -- | 'id'
  Prelude.Text ->
  UpdateRunGroup
newUpdateRunGroup :: Text -> UpdateRunGroup
newUpdateRunGroup Text
pId_ =
  UpdateRunGroup'
    { $sel:maxCpus:UpdateRunGroup' :: Maybe Natural
maxCpus = forall a. Maybe a
Prelude.Nothing,
      $sel:maxDuration:UpdateRunGroup' :: Maybe Natural
maxDuration = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRuns:UpdateRunGroup' :: Maybe Natural
maxRuns = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateRunGroup' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:id:UpdateRunGroup' :: Text
id = Text
pId_
    }

-- | The maximum number of CPUs to use.
updateRunGroup_maxCpus :: Lens.Lens' UpdateRunGroup (Prelude.Maybe Prelude.Natural)
updateRunGroup_maxCpus :: Lens' UpdateRunGroup (Maybe Natural)
updateRunGroup_maxCpus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRunGroup' {Maybe Natural
maxCpus :: Maybe Natural
$sel:maxCpus:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
maxCpus} -> Maybe Natural
maxCpus) (\s :: UpdateRunGroup
s@UpdateRunGroup' {} Maybe Natural
a -> UpdateRunGroup
s {$sel:maxCpus:UpdateRunGroup' :: Maybe Natural
maxCpus = Maybe Natural
a} :: UpdateRunGroup)

-- | The maximum amount of time to run.
updateRunGroup_maxDuration :: Lens.Lens' UpdateRunGroup (Prelude.Maybe Prelude.Natural)
updateRunGroup_maxDuration :: Lens' UpdateRunGroup (Maybe Natural)
updateRunGroup_maxDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRunGroup' {Maybe Natural
maxDuration :: Maybe Natural
$sel:maxDuration:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
maxDuration} -> Maybe Natural
maxDuration) (\s :: UpdateRunGroup
s@UpdateRunGroup' {} Maybe Natural
a -> UpdateRunGroup
s {$sel:maxDuration:UpdateRunGroup' :: Maybe Natural
maxDuration = Maybe Natural
a} :: UpdateRunGroup)

-- | The maximum number of concurrent runs for the group.
updateRunGroup_maxRuns :: Lens.Lens' UpdateRunGroup (Prelude.Maybe Prelude.Natural)
updateRunGroup_maxRuns :: Lens' UpdateRunGroup (Maybe Natural)
updateRunGroup_maxRuns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRunGroup' {Maybe Natural
maxRuns :: Maybe Natural
$sel:maxRuns:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
maxRuns} -> Maybe Natural
maxRuns) (\s :: UpdateRunGroup
s@UpdateRunGroup' {} Maybe Natural
a -> UpdateRunGroup
s {$sel:maxRuns:UpdateRunGroup' :: Maybe Natural
maxRuns = Maybe Natural
a} :: UpdateRunGroup)

-- | A name for the group.
updateRunGroup_name :: Lens.Lens' UpdateRunGroup (Prelude.Maybe Prelude.Text)
updateRunGroup_name :: Lens' UpdateRunGroup (Maybe Text)
updateRunGroup_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRunGroup' {Maybe Text
name :: Maybe Text
$sel:name:UpdateRunGroup' :: UpdateRunGroup -> Maybe Text
name} -> Maybe Text
name) (\s :: UpdateRunGroup
s@UpdateRunGroup' {} Maybe Text
a -> UpdateRunGroup
s {$sel:name:UpdateRunGroup' :: Maybe Text
name = Maybe Text
a} :: UpdateRunGroup)

-- | The group\'s ID.
updateRunGroup_id :: Lens.Lens' UpdateRunGroup Prelude.Text
updateRunGroup_id :: Lens' UpdateRunGroup Text
updateRunGroup_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRunGroup' {Text
id :: Text
$sel:id:UpdateRunGroup' :: UpdateRunGroup -> Text
id} -> Text
id) (\s :: UpdateRunGroup
s@UpdateRunGroup' {} Text
a -> UpdateRunGroup
s {$sel:id:UpdateRunGroup' :: Text
id = Text
a} :: UpdateRunGroup)

instance Core.AWSRequest UpdateRunGroup where
  type
    AWSResponse UpdateRunGroup =
      UpdateRunGroupResponse
  request :: (Service -> Service) -> UpdateRunGroup -> Request UpdateRunGroup
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateRunGroup
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdateRunGroup)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull UpdateRunGroupResponse
UpdateRunGroupResponse'

instance Prelude.Hashable UpdateRunGroup where
  hashWithSalt :: Int -> UpdateRunGroup -> Int
hashWithSalt Int
_salt UpdateRunGroup' {Maybe Natural
Maybe Text
Text
id :: Text
name :: Maybe Text
maxRuns :: Maybe Natural
maxDuration :: Maybe Natural
maxCpus :: Maybe Natural
$sel:id:UpdateRunGroup' :: UpdateRunGroup -> Text
$sel:name:UpdateRunGroup' :: UpdateRunGroup -> Maybe Text
$sel:maxRuns:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxDuration:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxCpus:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxCpus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxDuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxRuns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id

instance Prelude.NFData UpdateRunGroup where
  rnf :: UpdateRunGroup -> ()
rnf UpdateRunGroup' {Maybe Natural
Maybe Text
Text
id :: Text
name :: Maybe Text
maxRuns :: Maybe Natural
maxDuration :: Maybe Natural
maxCpus :: Maybe Natural
$sel:id:UpdateRunGroup' :: UpdateRunGroup -> Text
$sel:name:UpdateRunGroup' :: UpdateRunGroup -> Maybe Text
$sel:maxRuns:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxDuration:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxCpus:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxCpus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxRuns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id

instance Data.ToHeaders UpdateRunGroup where
  toHeaders :: UpdateRunGroup -> [Header]
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateRunGroup where
  toJSON :: UpdateRunGroup -> Value
toJSON UpdateRunGroup' {Maybe Natural
Maybe Text
Text
id :: Text
name :: Maybe Text
maxRuns :: Maybe Natural
maxDuration :: Maybe Natural
maxCpus :: Maybe Natural
$sel:id:UpdateRunGroup' :: UpdateRunGroup -> Text
$sel:name:UpdateRunGroup' :: UpdateRunGroup -> Maybe Text
$sel:maxRuns:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxDuration:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxCpus:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"maxCpus" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxCpus,
            (Key
"maxDuration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxDuration,
            (Key
"maxRuns" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxRuns,
            (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
name
          ]
      )

instance Data.ToPath UpdateRunGroup where
  toPath :: UpdateRunGroup -> ByteString
toPath UpdateRunGroup' {Maybe Natural
Maybe Text
Text
id :: Text
name :: Maybe Text
maxRuns :: Maybe Natural
maxDuration :: Maybe Natural
maxCpus :: Maybe Natural
$sel:id:UpdateRunGroup' :: UpdateRunGroup -> Text
$sel:name:UpdateRunGroup' :: UpdateRunGroup -> Maybe Text
$sel:maxRuns:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxDuration:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
$sel:maxCpus:UpdateRunGroup' :: UpdateRunGroup -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/runGroup/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
id]

instance Data.ToQuery UpdateRunGroup where
  toQuery :: UpdateRunGroup -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateRunGroupResponse' smart constructor.
data UpdateRunGroupResponse = UpdateRunGroupResponse'
  {
  }
  deriving (UpdateRunGroupResponse -> UpdateRunGroupResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRunGroupResponse -> UpdateRunGroupResponse -> Bool
$c/= :: UpdateRunGroupResponse -> UpdateRunGroupResponse -> Bool
== :: UpdateRunGroupResponse -> UpdateRunGroupResponse -> Bool
$c== :: UpdateRunGroupResponse -> UpdateRunGroupResponse -> Bool
Prelude.Eq, ReadPrec [UpdateRunGroupResponse]
ReadPrec UpdateRunGroupResponse
Int -> ReadS UpdateRunGroupResponse
ReadS [UpdateRunGroupResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRunGroupResponse]
$creadListPrec :: ReadPrec [UpdateRunGroupResponse]
readPrec :: ReadPrec UpdateRunGroupResponse
$creadPrec :: ReadPrec UpdateRunGroupResponse
readList :: ReadS [UpdateRunGroupResponse]
$creadList :: ReadS [UpdateRunGroupResponse]
readsPrec :: Int -> ReadS UpdateRunGroupResponse
$creadsPrec :: Int -> ReadS UpdateRunGroupResponse
Prelude.Read, Int -> UpdateRunGroupResponse -> ShowS
[UpdateRunGroupResponse] -> ShowS
UpdateRunGroupResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRunGroupResponse] -> ShowS
$cshowList :: [UpdateRunGroupResponse] -> ShowS
show :: UpdateRunGroupResponse -> String
$cshow :: UpdateRunGroupResponse -> String
showsPrec :: Int -> UpdateRunGroupResponse -> ShowS
$cshowsPrec :: Int -> UpdateRunGroupResponse -> ShowS
Prelude.Show, forall x. Rep UpdateRunGroupResponse x -> UpdateRunGroupResponse
forall x. UpdateRunGroupResponse -> Rep UpdateRunGroupResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateRunGroupResponse x -> UpdateRunGroupResponse
$cfrom :: forall x. UpdateRunGroupResponse -> Rep UpdateRunGroupResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRunGroupResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
newUpdateRunGroupResponse ::
  UpdateRunGroupResponse
newUpdateRunGroupResponse :: UpdateRunGroupResponse
newUpdateRunGroupResponse = UpdateRunGroupResponse
UpdateRunGroupResponse'

instance Prelude.NFData UpdateRunGroupResponse where
  rnf :: UpdateRunGroupResponse -> ()
rnf UpdateRunGroupResponse
_ = ()