{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.DeviceFarm.Types.DeviceSelectionConfiguration -- Copyright : (c) 2013-2021 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.DeviceFarm.Types.DeviceSelectionConfiguration where import qualified Amazonka.Core as Core import Amazonka.DeviceFarm.Types.DeviceFilter import qualified Amazonka.Lens as Lens import qualified Amazonka.Prelude as Prelude -- | Represents the device filters used in a test run and the maximum number -- of devices to be included in the run. It is passed in as the -- @deviceSelectionConfiguration@ request parameter in ScheduleRun. -- -- /See:/ 'newDeviceSelectionConfiguration' smart constructor. data DeviceSelectionConfiguration = DeviceSelectionConfiguration' { -- | Used to dynamically select a set of devices for a test run. A filter is -- made up of an attribute, an operator, and one or more values. -- -- - __Attribute__ -- -- The aspect of a device such as platform or model used as the -- selection criteria in a device filter. -- -- Allowed values include: -- -- - ARN: The Amazon Resource Name (ARN) of the device (for example, -- @arn:aws:devicefarm:us-west-2::device:12345Example@). -- -- - PLATFORM: The device platform. Valid values are ANDROID or IOS. -- -- - OS_VERSION: The operating system version (for example, 10.3.2). -- -- - MODEL: The device model (for example, iPad 5th Gen). -- -- - AVAILABILITY: The current availability of the device. Valid -- values are AVAILABLE, HIGHLY_AVAILABLE, BUSY, or -- TEMPORARY_NOT_AVAILABLE. -- -- - FORM_FACTOR: The device form factor. Valid values are PHONE or -- TABLET. -- -- - MANUFACTURER: The device manufacturer (for example, Apple). -- -- - REMOTE_ACCESS_ENABLED: Whether the device is enabled for remote -- access. Valid values are TRUE or FALSE. -- -- - REMOTE_DEBUG_ENABLED: Whether the device is enabled for remote -- debugging. Valid values are TRUE or FALSE. Because remote -- debugging is -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>, -- this filter is ignored. -- -- - INSTANCE_ARN: The Amazon Resource Name (ARN) of the device -- instance. -- -- - INSTANCE_LABELS: The label of the device instance. -- -- - FLEET_TYPE: The fleet type. Valid values are PUBLIC or PRIVATE. -- -- - __Operator__ -- -- The filter operator. -- -- - The EQUALS operator is available for every attribute except -- INSTANCE_LABELS. -- -- - The CONTAINS operator is available for the INSTANCE_LABELS and -- MODEL attributes. -- -- - The IN and NOT_IN operators are available for the ARN, -- OS_VERSION, MODEL, MANUFACTURER, and INSTANCE_ARN attributes. -- -- - The LESS_THAN, GREATER_THAN, LESS_THAN_OR_EQUALS, and -- GREATER_THAN_OR_EQUALS operators are also available for the -- OS_VERSION attribute. -- -- - __Values__ -- -- An array of one or more filter values. -- -- __Operator Values__ -- -- - The IN and NOT_IN operators can take a values array that has -- more than one element. -- -- - The other operators require an array with a single element. -- -- __Attribute Values__ -- -- - The PLATFORM attribute can be set to ANDROID or IOS. -- -- - The AVAILABILITY attribute can be set to AVAILABLE, -- HIGHLY_AVAILABLE, BUSY, or TEMPORARY_NOT_AVAILABLE. -- -- - The FORM_FACTOR attribute can be set to PHONE or TABLET. -- -- - The FLEET_TYPE attribute can be set to PUBLIC or PRIVATE. DeviceSelectionConfiguration -> [DeviceFilter] filters :: [DeviceFilter], -- | The maximum number of devices to be included in a test run. DeviceSelectionConfiguration -> Int maxDevices :: Prelude.Int } deriving (DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool (DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool) -> (DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool) -> Eq DeviceSelectionConfiguration forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool $c/= :: DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool == :: DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool $c== :: DeviceSelectionConfiguration -> DeviceSelectionConfiguration -> Bool Prelude.Eq, ReadPrec [DeviceSelectionConfiguration] ReadPrec DeviceSelectionConfiguration Int -> ReadS DeviceSelectionConfiguration ReadS [DeviceSelectionConfiguration] (Int -> ReadS DeviceSelectionConfiguration) -> ReadS [DeviceSelectionConfiguration] -> ReadPrec DeviceSelectionConfiguration -> ReadPrec [DeviceSelectionConfiguration] -> Read DeviceSelectionConfiguration forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [DeviceSelectionConfiguration] $creadListPrec :: ReadPrec [DeviceSelectionConfiguration] readPrec :: ReadPrec DeviceSelectionConfiguration $creadPrec :: ReadPrec DeviceSelectionConfiguration readList :: ReadS [DeviceSelectionConfiguration] $creadList :: ReadS [DeviceSelectionConfiguration] readsPrec :: Int -> ReadS DeviceSelectionConfiguration $creadsPrec :: Int -> ReadS DeviceSelectionConfiguration Prelude.Read, Int -> DeviceSelectionConfiguration -> ShowS [DeviceSelectionConfiguration] -> ShowS DeviceSelectionConfiguration -> String (Int -> DeviceSelectionConfiguration -> ShowS) -> (DeviceSelectionConfiguration -> String) -> ([DeviceSelectionConfiguration] -> ShowS) -> Show DeviceSelectionConfiguration forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [DeviceSelectionConfiguration] -> ShowS $cshowList :: [DeviceSelectionConfiguration] -> ShowS show :: DeviceSelectionConfiguration -> String $cshow :: DeviceSelectionConfiguration -> String showsPrec :: Int -> DeviceSelectionConfiguration -> ShowS $cshowsPrec :: Int -> DeviceSelectionConfiguration -> ShowS Prelude.Show, (forall x. DeviceSelectionConfiguration -> Rep DeviceSelectionConfiguration x) -> (forall x. Rep DeviceSelectionConfiguration x -> DeviceSelectionConfiguration) -> Generic DeviceSelectionConfiguration forall x. Rep DeviceSelectionConfiguration x -> DeviceSelectionConfiguration forall x. DeviceSelectionConfiguration -> Rep DeviceSelectionConfiguration x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep DeviceSelectionConfiguration x -> DeviceSelectionConfiguration $cfrom :: forall x. DeviceSelectionConfiguration -> Rep DeviceSelectionConfiguration x Prelude.Generic) -- | -- Create a value of 'DeviceSelectionConfiguration' 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: -- -- 'filters', 'deviceSelectionConfiguration_filters' - Used to dynamically select a set of devices for a test run. A filter is -- made up of an attribute, an operator, and one or more values. -- -- - __Attribute__ -- -- The aspect of a device such as platform or model used as the -- selection criteria in a device filter. -- -- Allowed values include: -- -- - ARN: The Amazon Resource Name (ARN) of the device (for example, -- @arn:aws:devicefarm:us-west-2::device:12345Example@). -- -- - PLATFORM: The device platform. Valid values are ANDROID or IOS. -- -- - OS_VERSION: The operating system version (for example, 10.3.2). -- -- - MODEL: The device model (for example, iPad 5th Gen). -- -- - AVAILABILITY: The current availability of the device. Valid -- values are AVAILABLE, HIGHLY_AVAILABLE, BUSY, or -- TEMPORARY_NOT_AVAILABLE. -- -- - FORM_FACTOR: The device form factor. Valid values are PHONE or -- TABLET. -- -- - MANUFACTURER: The device manufacturer (for example, Apple). -- -- - REMOTE_ACCESS_ENABLED: Whether the device is enabled for remote -- access. Valid values are TRUE or FALSE. -- -- - REMOTE_DEBUG_ENABLED: Whether the device is enabled for remote -- debugging. Valid values are TRUE or FALSE. Because remote -- debugging is -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>, -- this filter is ignored. -- -- - INSTANCE_ARN: The Amazon Resource Name (ARN) of the device -- instance. -- -- - INSTANCE_LABELS: The label of the device instance. -- -- - FLEET_TYPE: The fleet type. Valid values are PUBLIC or PRIVATE. -- -- - __Operator__ -- -- The filter operator. -- -- - The EQUALS operator is available for every attribute except -- INSTANCE_LABELS. -- -- - The CONTAINS operator is available for the INSTANCE_LABELS and -- MODEL attributes. -- -- - The IN and NOT_IN operators are available for the ARN, -- OS_VERSION, MODEL, MANUFACTURER, and INSTANCE_ARN attributes. -- -- - The LESS_THAN, GREATER_THAN, LESS_THAN_OR_EQUALS, and -- GREATER_THAN_OR_EQUALS operators are also available for the -- OS_VERSION attribute. -- -- - __Values__ -- -- An array of one or more filter values. -- -- __Operator Values__ -- -- - The IN and NOT_IN operators can take a values array that has -- more than one element. -- -- - The other operators require an array with a single element. -- -- __Attribute Values__ -- -- - The PLATFORM attribute can be set to ANDROID or IOS. -- -- - The AVAILABILITY attribute can be set to AVAILABLE, -- HIGHLY_AVAILABLE, BUSY, or TEMPORARY_NOT_AVAILABLE. -- -- - The FORM_FACTOR attribute can be set to PHONE or TABLET. -- -- - The FLEET_TYPE attribute can be set to PUBLIC or PRIVATE. -- -- 'maxDevices', 'deviceSelectionConfiguration_maxDevices' - The maximum number of devices to be included in a test run. newDeviceSelectionConfiguration :: -- | 'maxDevices' Prelude.Int -> DeviceSelectionConfiguration newDeviceSelectionConfiguration :: Int -> DeviceSelectionConfiguration newDeviceSelectionConfiguration Int pMaxDevices_ = DeviceSelectionConfiguration' :: [DeviceFilter] -> Int -> DeviceSelectionConfiguration DeviceSelectionConfiguration' { $sel:filters:DeviceSelectionConfiguration' :: [DeviceFilter] filters = [DeviceFilter] forall a. Monoid a => a Prelude.mempty, $sel:maxDevices:DeviceSelectionConfiguration' :: Int maxDevices = Int pMaxDevices_ } -- | Used to dynamically select a set of devices for a test run. A filter is -- made up of an attribute, an operator, and one or more values. -- -- - __Attribute__ -- -- The aspect of a device such as platform or model used as the -- selection criteria in a device filter. -- -- Allowed values include: -- -- - ARN: The Amazon Resource Name (ARN) of the device (for example, -- @arn:aws:devicefarm:us-west-2::device:12345Example@). -- -- - PLATFORM: The device platform. Valid values are ANDROID or IOS. -- -- - OS_VERSION: The operating system version (for example, 10.3.2). -- -- - MODEL: The device model (for example, iPad 5th Gen). -- -- - AVAILABILITY: The current availability of the device. Valid -- values are AVAILABLE, HIGHLY_AVAILABLE, BUSY, or -- TEMPORARY_NOT_AVAILABLE. -- -- - FORM_FACTOR: The device form factor. Valid values are PHONE or -- TABLET. -- -- - MANUFACTURER: The device manufacturer (for example, Apple). -- -- - REMOTE_ACCESS_ENABLED: Whether the device is enabled for remote -- access. Valid values are TRUE or FALSE. -- -- - REMOTE_DEBUG_ENABLED: Whether the device is enabled for remote -- debugging. Valid values are TRUE or FALSE. Because remote -- debugging is -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>, -- this filter is ignored. -- -- - INSTANCE_ARN: The Amazon Resource Name (ARN) of the device -- instance. -- -- - INSTANCE_LABELS: The label of the device instance. -- -- - FLEET_TYPE: The fleet type. Valid values are PUBLIC or PRIVATE. -- -- - __Operator__ -- -- The filter operator. -- -- - The EQUALS operator is available for every attribute except -- INSTANCE_LABELS. -- -- - The CONTAINS operator is available for the INSTANCE_LABELS and -- MODEL attributes. -- -- - The IN and NOT_IN operators are available for the ARN, -- OS_VERSION, MODEL, MANUFACTURER, and INSTANCE_ARN attributes. -- -- - The LESS_THAN, GREATER_THAN, LESS_THAN_OR_EQUALS, and -- GREATER_THAN_OR_EQUALS operators are also available for the -- OS_VERSION attribute. -- -- - __Values__ -- -- An array of one or more filter values. -- -- __Operator Values__ -- -- - The IN and NOT_IN operators can take a values array that has -- more than one element. -- -- - The other operators require an array with a single element. -- -- __Attribute Values__ -- -- - The PLATFORM attribute can be set to ANDROID or IOS. -- -- - The AVAILABILITY attribute can be set to AVAILABLE, -- HIGHLY_AVAILABLE, BUSY, or TEMPORARY_NOT_AVAILABLE. -- -- - The FORM_FACTOR attribute can be set to PHONE or TABLET. -- -- - The FLEET_TYPE attribute can be set to PUBLIC or PRIVATE. deviceSelectionConfiguration_filters :: Lens.Lens' DeviceSelectionConfiguration [DeviceFilter] deviceSelectionConfiguration_filters :: ([DeviceFilter] -> f [DeviceFilter]) -> DeviceSelectionConfiguration -> f DeviceSelectionConfiguration deviceSelectionConfiguration_filters = (DeviceSelectionConfiguration -> [DeviceFilter]) -> (DeviceSelectionConfiguration -> [DeviceFilter] -> DeviceSelectionConfiguration) -> Lens DeviceSelectionConfiguration DeviceSelectionConfiguration [DeviceFilter] [DeviceFilter] forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\DeviceSelectionConfiguration' {[DeviceFilter] filters :: [DeviceFilter] $sel:filters:DeviceSelectionConfiguration' :: DeviceSelectionConfiguration -> [DeviceFilter] filters} -> [DeviceFilter] filters) (\s :: DeviceSelectionConfiguration s@DeviceSelectionConfiguration' {} [DeviceFilter] a -> DeviceSelectionConfiguration s {$sel:filters:DeviceSelectionConfiguration' :: [DeviceFilter] filters = [DeviceFilter] a} :: DeviceSelectionConfiguration) (([DeviceFilter] -> f [DeviceFilter]) -> DeviceSelectionConfiguration -> f DeviceSelectionConfiguration) -> (([DeviceFilter] -> f [DeviceFilter]) -> [DeviceFilter] -> f [DeviceFilter]) -> ([DeviceFilter] -> f [DeviceFilter]) -> DeviceSelectionConfiguration -> f DeviceSelectionConfiguration forall b c a. (b -> c) -> (a -> b) -> a -> c Prelude.. ([DeviceFilter] -> f [DeviceFilter]) -> [DeviceFilter] -> f [DeviceFilter] forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Lens.coerced -- | The maximum number of devices to be included in a test run. deviceSelectionConfiguration_maxDevices :: Lens.Lens' DeviceSelectionConfiguration Prelude.Int deviceSelectionConfiguration_maxDevices :: (Int -> f Int) -> DeviceSelectionConfiguration -> f DeviceSelectionConfiguration deviceSelectionConfiguration_maxDevices = (DeviceSelectionConfiguration -> Int) -> (DeviceSelectionConfiguration -> Int -> DeviceSelectionConfiguration) -> Lens DeviceSelectionConfiguration DeviceSelectionConfiguration Int Int forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\DeviceSelectionConfiguration' {Int maxDevices :: Int $sel:maxDevices:DeviceSelectionConfiguration' :: DeviceSelectionConfiguration -> Int maxDevices} -> Int maxDevices) (\s :: DeviceSelectionConfiguration s@DeviceSelectionConfiguration' {} Int a -> DeviceSelectionConfiguration s {$sel:maxDevices:DeviceSelectionConfiguration' :: Int maxDevices = Int a} :: DeviceSelectionConfiguration) instance Prelude.Hashable DeviceSelectionConfiguration instance Prelude.NFData DeviceSelectionConfiguration instance Core.ToJSON DeviceSelectionConfiguration where toJSON :: DeviceSelectionConfiguration -> Value toJSON DeviceSelectionConfiguration' {Int [DeviceFilter] maxDevices :: Int filters :: [DeviceFilter] $sel:maxDevices:DeviceSelectionConfiguration' :: DeviceSelectionConfiguration -> Int $sel:filters:DeviceSelectionConfiguration' :: DeviceSelectionConfiguration -> [DeviceFilter] ..} = [Pair] -> Value Core.object ( [Maybe Pair] -> [Pair] forall a. [Maybe a] -> [a] Prelude.catMaybes [ Pair -> Maybe Pair forall a. a -> Maybe a Prelude.Just (Text "filters" Text -> [DeviceFilter] -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..= [DeviceFilter] filters), Pair -> Maybe Pair forall a. a -> Maybe a Prelude.Just (Text "maxDevices" Text -> Int -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..= Int maxDevices) ] )