{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.DeviceFarm.UpdateInstanceProfile -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Updates information about an existing private device instance profile. -- -- module Network.AWS.DeviceFarm.UpdateInstanceProfile ( -- * Creating a Request updateInstanceProfile , UpdateInstanceProfile -- * Request Lenses , uipRebootAfterUse , uipName , uipPackageCleanup , uipExcludeAppPackagesFromCleanup , uipDescription , uipArn -- * Destructuring the Response , updateInstanceProfileResponse , UpdateInstanceProfileResponse -- * Response Lenses , uiprsInstanceProfile , uiprsResponseStatus ) where import Network.AWS.DeviceFarm.Types import Network.AWS.DeviceFarm.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'updateInstanceProfile' smart constructor. data UpdateInstanceProfile = UpdateInstanceProfile' { _uipRebootAfterUse :: !(Maybe Bool) , _uipName :: !(Maybe Text) , _uipPackageCleanup :: !(Maybe Bool) , _uipExcludeAppPackagesFromCleanup :: !(Maybe [Text]) , _uipDescription :: !(Maybe Text) , _uipArn :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'UpdateInstanceProfile' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'uipRebootAfterUse' - The updated choice for whether you want to reboot the device after use. The default value is @true@ . -- -- * 'uipName' - The updated name for your instance profile. -- -- * 'uipPackageCleanup' - The updated choice for whether you want to specify package cleanup. The default value is @false@ for private devices. -- -- * 'uipExcludeAppPackagesFromCleanup' - An array of strings specifying the list of app packages that should not be cleaned up from the device after a test run is over. The list of packages is only considered if you set @packageCleanup@ to @true@ . -- -- * 'uipDescription' - The updated description for your instance profile. -- -- * 'uipArn' - The Amazon Resource Name (ARN) of the instance profile. updateInstanceProfile :: Text -- ^ 'uipArn' -> UpdateInstanceProfile updateInstanceProfile pArn_ = UpdateInstanceProfile' { _uipRebootAfterUse = Nothing , _uipName = Nothing , _uipPackageCleanup = Nothing , _uipExcludeAppPackagesFromCleanup = Nothing , _uipDescription = Nothing , _uipArn = pArn_ } -- | The updated choice for whether you want to reboot the device after use. The default value is @true@ . uipRebootAfterUse :: Lens' UpdateInstanceProfile (Maybe Bool) uipRebootAfterUse = lens _uipRebootAfterUse (\ s a -> s{_uipRebootAfterUse = a}) -- | The updated name for your instance profile. uipName :: Lens' UpdateInstanceProfile (Maybe Text) uipName = lens _uipName (\ s a -> s{_uipName = a}) -- | The updated choice for whether you want to specify package cleanup. The default value is @false@ for private devices. uipPackageCleanup :: Lens' UpdateInstanceProfile (Maybe Bool) uipPackageCleanup = lens _uipPackageCleanup (\ s a -> s{_uipPackageCleanup = a}) -- | An array of strings specifying the list of app packages that should not be cleaned up from the device after a test run is over. The list of packages is only considered if you set @packageCleanup@ to @true@ . uipExcludeAppPackagesFromCleanup :: Lens' UpdateInstanceProfile [Text] uipExcludeAppPackagesFromCleanup = lens _uipExcludeAppPackagesFromCleanup (\ s a -> s{_uipExcludeAppPackagesFromCleanup = a}) . _Default . _Coerce -- | The updated description for your instance profile. uipDescription :: Lens' UpdateInstanceProfile (Maybe Text) uipDescription = lens _uipDescription (\ s a -> s{_uipDescription = a}) -- | The Amazon Resource Name (ARN) of the instance profile. uipArn :: Lens' UpdateInstanceProfile Text uipArn = lens _uipArn (\ s a -> s{_uipArn = a}) instance AWSRequest UpdateInstanceProfile where type Rs UpdateInstanceProfile = UpdateInstanceProfileResponse request = postJSON deviceFarm response = receiveJSON (\ s h x -> UpdateInstanceProfileResponse' <$> (x .?> "instanceProfile") <*> (pure (fromEnum s))) instance Hashable UpdateInstanceProfile where instance NFData UpdateInstanceProfile where instance ToHeaders UpdateInstanceProfile where toHeaders = const (mconcat ["X-Amz-Target" =# ("DeviceFarm_20150623.UpdateInstanceProfile" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON UpdateInstanceProfile where toJSON UpdateInstanceProfile'{..} = object (catMaybes [("rebootAfterUse" .=) <$> _uipRebootAfterUse, ("name" .=) <$> _uipName, ("packageCleanup" .=) <$> _uipPackageCleanup, ("excludeAppPackagesFromCleanup" .=) <$> _uipExcludeAppPackagesFromCleanup, ("description" .=) <$> _uipDescription, Just ("arn" .= _uipArn)]) instance ToPath UpdateInstanceProfile where toPath = const "/" instance ToQuery UpdateInstanceProfile where toQuery = const mempty -- | /See:/ 'updateInstanceProfileResponse' smart constructor. data UpdateInstanceProfileResponse = UpdateInstanceProfileResponse' { _uiprsInstanceProfile :: !(Maybe InstanceProfile) , _uiprsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'UpdateInstanceProfileResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'uiprsInstanceProfile' - An object containing information about your instance profile. -- -- * 'uiprsResponseStatus' - -- | The response status code. updateInstanceProfileResponse :: Int -- ^ 'uiprsResponseStatus' -> UpdateInstanceProfileResponse updateInstanceProfileResponse pResponseStatus_ = UpdateInstanceProfileResponse' {_uiprsInstanceProfile = Nothing, _uiprsResponseStatus = pResponseStatus_} -- | An object containing information about your instance profile. uiprsInstanceProfile :: Lens' UpdateInstanceProfileResponse (Maybe InstanceProfile) uiprsInstanceProfile = lens _uiprsInstanceProfile (\ s a -> s{_uiprsInstanceProfile = a}) -- | -- | The response status code. uiprsResponseStatus :: Lens' UpdateInstanceProfileResponse Int uiprsResponseStatus = lens _uiprsResponseStatus (\ s a -> s{_uiprsResponseStatus = a}) instance NFData UpdateInstanceProfileResponse where