amazonka-fsx-2.0: gen/Amazonka/FSx/CreateStorageVirtualMachine.hs
{-# 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.FSx.CreateStorageVirtualMachine
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a storage virtual machine (SVM) for an Amazon FSx for ONTAP file
-- system.
module Amazonka.FSx.CreateStorageVirtualMachine
( -- * Creating a Request
CreateStorageVirtualMachine (..),
newCreateStorageVirtualMachine,
-- * Request Lenses
createStorageVirtualMachine_activeDirectoryConfiguration,
createStorageVirtualMachine_clientRequestToken,
createStorageVirtualMachine_rootVolumeSecurityStyle,
createStorageVirtualMachine_svmAdminPassword,
createStorageVirtualMachine_tags,
createStorageVirtualMachine_fileSystemId,
createStorageVirtualMachine_name,
-- * Destructuring the Response
CreateStorageVirtualMachineResponse (..),
newCreateStorageVirtualMachineResponse,
-- * Response Lenses
createStorageVirtualMachineResponse_storageVirtualMachine,
createStorageVirtualMachineResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FSx.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | /See:/ 'newCreateStorageVirtualMachine' smart constructor.
data CreateStorageVirtualMachine = CreateStorageVirtualMachine'
{ -- | Describes the self-managed Microsoft Active Directory to which you want
-- to join the SVM. Joining an Active Directory provides user
-- authentication and access control for SMB clients, including Microsoft
-- Windows and macOS client accessing the file system.
activeDirectoryConfiguration :: Prelude.Maybe CreateSvmActiveDirectoryConfiguration,
clientRequestToken :: Prelude.Maybe Prelude.Text,
-- | The security style of the root volume of the SVM. Specify one of the
-- following values:
--
-- - @UNIX@ if the file system is managed by a UNIX administrator, the
-- majority of users are NFS clients, and an application accessing the
-- data uses a UNIX user as the service account.
--
-- - @NTFS@ if the file system is managed by a Windows administrator, the
-- majority of users are SMB clients, and an application accessing the
-- data uses a Windows user as the service account.
--
-- - @MIXED@ if the file system is managed by both UNIX and Windows
-- administrators and users consist of both NFS and SMB clients.
rootVolumeSecurityStyle :: Prelude.Maybe StorageVirtualMachineRootVolumeSecurityStyle,
-- | The password to use when managing the SVM using the NetApp ONTAP CLI or
-- REST API. If you do not specify a password, you can still use the file
-- system\'s @fsxadmin@ user to manage the SVM.
svmAdminPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
fileSystemId :: Prelude.Text,
-- | The name of the SVM.
name :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CreateStorageVirtualMachine' 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:
--
-- 'activeDirectoryConfiguration', 'createStorageVirtualMachine_activeDirectoryConfiguration' - Describes the self-managed Microsoft Active Directory to which you want
-- to join the SVM. Joining an Active Directory provides user
-- authentication and access control for SMB clients, including Microsoft
-- Windows and macOS client accessing the file system.
--
-- 'clientRequestToken', 'createStorageVirtualMachine_clientRequestToken' - Undocumented member.
--
-- 'rootVolumeSecurityStyle', 'createStorageVirtualMachine_rootVolumeSecurityStyle' - The security style of the root volume of the SVM. Specify one of the
-- following values:
--
-- - @UNIX@ if the file system is managed by a UNIX administrator, the
-- majority of users are NFS clients, and an application accessing the
-- data uses a UNIX user as the service account.
--
-- - @NTFS@ if the file system is managed by a Windows administrator, the
-- majority of users are SMB clients, and an application accessing the
-- data uses a Windows user as the service account.
--
-- - @MIXED@ if the file system is managed by both UNIX and Windows
-- administrators and users consist of both NFS and SMB clients.
--
-- 'svmAdminPassword', 'createStorageVirtualMachine_svmAdminPassword' - The password to use when managing the SVM using the NetApp ONTAP CLI or
-- REST API. If you do not specify a password, you can still use the file
-- system\'s @fsxadmin@ user to manage the SVM.
--
-- 'tags', 'createStorageVirtualMachine_tags' - Undocumented member.
--
-- 'fileSystemId', 'createStorageVirtualMachine_fileSystemId' - Undocumented member.
--
-- 'name', 'createStorageVirtualMachine_name' - The name of the SVM.
newCreateStorageVirtualMachine ::
-- | 'fileSystemId'
Prelude.Text ->
-- | 'name'
Prelude.Text ->
CreateStorageVirtualMachine
newCreateStorageVirtualMachine pFileSystemId_ pName_ =
CreateStorageVirtualMachine'
{ activeDirectoryConfiguration =
Prelude.Nothing,
clientRequestToken = Prelude.Nothing,
rootVolumeSecurityStyle = Prelude.Nothing,
svmAdminPassword = Prelude.Nothing,
tags = Prelude.Nothing,
fileSystemId = pFileSystemId_,
name = pName_
}
-- | Describes the self-managed Microsoft Active Directory to which you want
-- to join the SVM. Joining an Active Directory provides user
-- authentication and access control for SMB clients, including Microsoft
-- Windows and macOS client accessing the file system.
createStorageVirtualMachine_activeDirectoryConfiguration :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe CreateSvmActiveDirectoryConfiguration)
createStorageVirtualMachine_activeDirectoryConfiguration = Lens.lens (\CreateStorageVirtualMachine' {activeDirectoryConfiguration} -> activeDirectoryConfiguration) (\s@CreateStorageVirtualMachine' {} a -> s {activeDirectoryConfiguration = a} :: CreateStorageVirtualMachine)
-- | Undocumented member.
createStorageVirtualMachine_clientRequestToken :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe Prelude.Text)
createStorageVirtualMachine_clientRequestToken = Lens.lens (\CreateStorageVirtualMachine' {clientRequestToken} -> clientRequestToken) (\s@CreateStorageVirtualMachine' {} a -> s {clientRequestToken = a} :: CreateStorageVirtualMachine)
-- | The security style of the root volume of the SVM. Specify one of the
-- following values:
--
-- - @UNIX@ if the file system is managed by a UNIX administrator, the
-- majority of users are NFS clients, and an application accessing the
-- data uses a UNIX user as the service account.
--
-- - @NTFS@ if the file system is managed by a Windows administrator, the
-- majority of users are SMB clients, and an application accessing the
-- data uses a Windows user as the service account.
--
-- - @MIXED@ if the file system is managed by both UNIX and Windows
-- administrators and users consist of both NFS and SMB clients.
createStorageVirtualMachine_rootVolumeSecurityStyle :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe StorageVirtualMachineRootVolumeSecurityStyle)
createStorageVirtualMachine_rootVolumeSecurityStyle = Lens.lens (\CreateStorageVirtualMachine' {rootVolumeSecurityStyle} -> rootVolumeSecurityStyle) (\s@CreateStorageVirtualMachine' {} a -> s {rootVolumeSecurityStyle = a} :: CreateStorageVirtualMachine)
-- | The password to use when managing the SVM using the NetApp ONTAP CLI or
-- REST API. If you do not specify a password, you can still use the file
-- system\'s @fsxadmin@ user to manage the SVM.
createStorageVirtualMachine_svmAdminPassword :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe Prelude.Text)
createStorageVirtualMachine_svmAdminPassword = Lens.lens (\CreateStorageVirtualMachine' {svmAdminPassword} -> svmAdminPassword) (\s@CreateStorageVirtualMachine' {} a -> s {svmAdminPassword = a} :: CreateStorageVirtualMachine) Prelude.. Lens.mapping Data._Sensitive
-- | Undocumented member.
createStorageVirtualMachine_tags :: Lens.Lens' CreateStorageVirtualMachine (Prelude.Maybe (Prelude.NonEmpty Tag))
createStorageVirtualMachine_tags = Lens.lens (\CreateStorageVirtualMachine' {tags} -> tags) (\s@CreateStorageVirtualMachine' {} a -> s {tags = a} :: CreateStorageVirtualMachine) Prelude.. Lens.mapping Lens.coerced
-- | Undocumented member.
createStorageVirtualMachine_fileSystemId :: Lens.Lens' CreateStorageVirtualMachine Prelude.Text
createStorageVirtualMachine_fileSystemId = Lens.lens (\CreateStorageVirtualMachine' {fileSystemId} -> fileSystemId) (\s@CreateStorageVirtualMachine' {} a -> s {fileSystemId = a} :: CreateStorageVirtualMachine)
-- | The name of the SVM.
createStorageVirtualMachine_name :: Lens.Lens' CreateStorageVirtualMachine Prelude.Text
createStorageVirtualMachine_name = Lens.lens (\CreateStorageVirtualMachine' {name} -> name) (\s@CreateStorageVirtualMachine' {} a -> s {name = a} :: CreateStorageVirtualMachine)
instance Core.AWSRequest CreateStorageVirtualMachine where
type
AWSResponse CreateStorageVirtualMachine =
CreateStorageVirtualMachineResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
CreateStorageVirtualMachineResponse'
Prelude.<$> (x Data..?> "StorageVirtualMachine")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable CreateStorageVirtualMachine where
hashWithSalt _salt CreateStorageVirtualMachine' {..} =
_salt
`Prelude.hashWithSalt` activeDirectoryConfiguration
`Prelude.hashWithSalt` clientRequestToken
`Prelude.hashWithSalt` rootVolumeSecurityStyle
`Prelude.hashWithSalt` svmAdminPassword
`Prelude.hashWithSalt` tags
`Prelude.hashWithSalt` fileSystemId
`Prelude.hashWithSalt` name
instance Prelude.NFData CreateStorageVirtualMachine where
rnf CreateStorageVirtualMachine' {..} =
Prelude.rnf activeDirectoryConfiguration
`Prelude.seq` Prelude.rnf clientRequestToken
`Prelude.seq` Prelude.rnf rootVolumeSecurityStyle
`Prelude.seq` Prelude.rnf svmAdminPassword
`Prelude.seq` Prelude.rnf tags
`Prelude.seq` Prelude.rnf fileSystemId
`Prelude.seq` Prelude.rnf name
instance Data.ToHeaders CreateStorageVirtualMachine where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "X-Amz-Target"
Data.=# ( "AWSSimbaAPIService_v20180301.CreateStorageVirtualMachine" ::
Prelude.ByteString
),
"Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON CreateStorageVirtualMachine where
toJSON CreateStorageVirtualMachine' {..} =
Data.object
( Prelude.catMaybes
[ ("ActiveDirectoryConfiguration" Data..=)
Prelude.<$> activeDirectoryConfiguration,
("ClientRequestToken" Data..=)
Prelude.<$> clientRequestToken,
("RootVolumeSecurityStyle" Data..=)
Prelude.<$> rootVolumeSecurityStyle,
("SvmAdminPassword" Data..=)
Prelude.<$> svmAdminPassword,
("Tags" Data..=) Prelude.<$> tags,
Prelude.Just ("FileSystemId" Data..= fileSystemId),
Prelude.Just ("Name" Data..= name)
]
)
instance Data.ToPath CreateStorageVirtualMachine where
toPath = Prelude.const "/"
instance Data.ToQuery CreateStorageVirtualMachine where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newCreateStorageVirtualMachineResponse' smart constructor.
data CreateStorageVirtualMachineResponse = CreateStorageVirtualMachineResponse'
{ -- | Returned after a successful @CreateStorageVirtualMachine@ operation;
-- describes the SVM just created.
storageVirtualMachine :: Prelude.Maybe StorageVirtualMachine,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CreateStorageVirtualMachineResponse' 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:
--
-- 'storageVirtualMachine', 'createStorageVirtualMachineResponse_storageVirtualMachine' - Returned after a successful @CreateStorageVirtualMachine@ operation;
-- describes the SVM just created.
--
-- 'httpStatus', 'createStorageVirtualMachineResponse_httpStatus' - The response's http status code.
newCreateStorageVirtualMachineResponse ::
-- | 'httpStatus'
Prelude.Int ->
CreateStorageVirtualMachineResponse
newCreateStorageVirtualMachineResponse pHttpStatus_ =
CreateStorageVirtualMachineResponse'
{ storageVirtualMachine =
Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | Returned after a successful @CreateStorageVirtualMachine@ operation;
-- describes the SVM just created.
createStorageVirtualMachineResponse_storageVirtualMachine :: Lens.Lens' CreateStorageVirtualMachineResponse (Prelude.Maybe StorageVirtualMachine)
createStorageVirtualMachineResponse_storageVirtualMachine = Lens.lens (\CreateStorageVirtualMachineResponse' {storageVirtualMachine} -> storageVirtualMachine) (\s@CreateStorageVirtualMachineResponse' {} a -> s {storageVirtualMachine = a} :: CreateStorageVirtualMachineResponse)
-- | The response's http status code.
createStorageVirtualMachineResponse_httpStatus :: Lens.Lens' CreateStorageVirtualMachineResponse Prelude.Int
createStorageVirtualMachineResponse_httpStatus = Lens.lens (\CreateStorageVirtualMachineResponse' {httpStatus} -> httpStatus) (\s@CreateStorageVirtualMachineResponse' {} a -> s {httpStatus = a} :: CreateStorageVirtualMachineResponse)
instance
Prelude.NFData
CreateStorageVirtualMachineResponse
where
rnf CreateStorageVirtualMachineResponse' {..} =
Prelude.rnf storageVirtualMachine
`Prelude.seq` Prelude.rnf httpStatus