/******************************************************************************* * Copyright 2012-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"). You may not use * this file except in compliance with the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. * ***************************************************************************** * * AWS Tools for Windows (TM) PowerShell (TM) * */ using System; using System.Collections.Generic; using System.Linq; using System.Management.Automation; using System.Text; using Amazon.PowerShell.Common; using Amazon.Runtime; using Amazon.RDS; using Amazon.RDS.Model; namespace Amazon.PowerShell.Cmdlets.RDS { /// /// Creates a custom DB engine version (CEV). /// [Cmdlet("New", "RDSCustomDBEngineVersion", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)] [OutputType("Amazon.RDS.Model.CreateCustomDBEngineVersionResponse")] [AWSCmdlet("Calls the Amazon Relational Database Service CreateCustomDBEngineVersion API operation.", Operation = new[] {"CreateCustomDBEngineVersion"}, SelectReturnType = typeof(Amazon.RDS.Model.CreateCustomDBEngineVersionResponse))] [AWSCmdletOutput("Amazon.RDS.Model.CreateCustomDBEngineVersionResponse", "This cmdlet returns an Amazon.RDS.Model.CreateCustomDBEngineVersionResponse object containing multiple properties. The object can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack." )] public partial class NewRDSCustomDBEngineVersionCmdlet : AmazonRDSClientCmdlet, IExecutor { #region Parameter DatabaseInstallationFilesS3BucketName /// /// /// The name of an Amazon S3 bucket that contains database installation files for your /// CEV. For example, a valid bucket name is my-custom-installation-files. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String DatabaseInstallationFilesS3BucketName { get; set; } #endregion #region Parameter DatabaseInstallationFilesS3Prefix /// /// /// The Amazon S3 directory that contains the database installation files for your CEV. /// For example, a valid bucket name is 123456789012/cev1. If this setting /// isn't specified, no prefix is assumed. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String DatabaseInstallationFilesS3Prefix { get; set; } #endregion #region Parameter Description /// /// /// An optional description of your CEV. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Description { get; set; } #endregion #region Parameter Engine /// /// /// The database engine to use for your custom engine version (CEV). The only supported /// value is custom-oracle-ee. /// /// #if !MODULAR [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] #else [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)] [System.Management.Automation.AllowEmptyString] [System.Management.Automation.AllowNull] #endif [Amazon.PowerShell.Common.AWSRequiredParameter] public System.String Engine { get; set; } #endregion #region Parameter EngineVersion /// /// /// The name of your CEV. The name format is 19.customized_string. For example, /// a valid CEV name is 19.my_cev1. This setting is required for RDS Custom /// for Oracle, but optional for Amazon RDS. The combination of Engine and /// EngineVersion is unique per customer per Region. /// /// #if !MODULAR [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] #else [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)] [System.Management.Automation.AllowEmptyString] [System.Management.Automation.AllowNull] #endif [Amazon.PowerShell.Common.AWSRequiredParameter] public System.String EngineVersion { get; set; } #endregion #region Parameter ImageId /// /// /// The ID of the Amazon Machine Image (AMI). For RDS Custom for SQL Server, an AMI ID /// is required to create a CEV. For RDS Custom for Oracle, the default is the most recent /// AMI available, but you can specify an AMI ID that was used in a different Oracle CEV. /// Find the AMIs used by your CEVs by calling the DescribeDBEngineVersions /// operation. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String ImageId { get; set; } #endregion #region Parameter KMSKeyId /// /// /// The Amazon Web Services KMS key identifier for an encrypted CEV. A symmetric encryption /// KMS key is required for RDS Custom, but optional for Amazon RDS.If you have an existing symmetric encryption KMS key in your account, you can use /// it with RDS Custom. No further action is necessary. If you don't already have a symmetric /// encryption KMS key in your account, follow the instructions in /// Creating a symmetric encryption KMS key in the Amazon Web Services Key Management /// Service Developer Guide.You can choose the same symmetric encryption key when you create a CEV and a DB instance, /// or choose different keys. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KMSKeyId { get; set; } #endregion #region Parameter Manifest /// /// /// The CEV manifest, which is a JSON document that describes the installation .zip files /// stored in Amazon S3. Specify the name/value pairs in a file or a quoted string. RDS /// Custom applies the patches in the order in which they are listed.The following JSON fields are valid:
MediaImportTemplateVersion
Version of the CEV manifest. The date is in the format YYYY-MM-DD.
databaseInstallationFileNames
Ordered list of installation files for the CEV.
opatchFileNames
Ordered list of OPatch installers used for the Oracle DB engine.
psuRuPatchFileNames
The PSU and RU patches for this CEV.
OtherPatchFileNames
The patches that are not in the list of PSU and RU patches. Amazon RDS applies these /// patches after applying the PSU and RU patches.
For more information, see /// Creating the CEV manifest in the Amazon RDS User Guide. ///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Manifest { get; set; } #endregion #region Parameter Tag /// /// /// The service has not provided documentation for this parameter; please refer to the service's API reference documentation for the latest available information. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Tags")] public Amazon.RDS.Model.Tag[] Tag { get; set; } #endregion #region Parameter Select /// /// Use the -Select parameter to control the cmdlet output. The default value is '*'. /// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.RDS.Model.CreateCustomDBEngineVersionResponse). /// Specifying the name of a property of type Amazon.RDS.Model.CreateCustomDBEngineVersionResponse will result in that property being returned. /// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value. /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public string Select { get; set; } = "*"; #endregion #region Parameter Force /// /// This parameter overrides confirmation prompts to force /// the cmdlet to continue its operation. This parameter should always /// be used with caution. /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public SwitchParameter Force { get; set; } #endregion protected override void ProcessRecord() { this._AWSSignerType = "v4"; base.ProcessRecord(); var resourceIdentifiersText = string.Empty; if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "New-RDSCustomDBEngineVersion (CreateCustomDBEngineVersion)")) { return; } var context = new CmdletContext(); // allow for manipulation of parameters prior to loading into context PreExecutionContextLoad(context); if (ParameterWasBound(nameof(this.Select))) { context.Select = CreateSelectDelegate(Select) ?? throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select)); } context.DatabaseInstallationFilesS3BucketName = this.DatabaseInstallationFilesS3BucketName; context.DatabaseInstallationFilesS3Prefix = this.DatabaseInstallationFilesS3Prefix; context.Description = this.Description; context.Engine = this.Engine; #if MODULAR if (this.Engine == null && ParameterWasBound(nameof(this.Engine))) { WriteWarning("You are passing $null as a value for parameter Engine which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues."); } #endif context.EngineVersion = this.EngineVersion; #if MODULAR if (this.EngineVersion == null && ParameterWasBound(nameof(this.EngineVersion))) { WriteWarning("You are passing $null as a value for parameter EngineVersion which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues."); } #endif context.ImageId = this.ImageId; context.KMSKeyId = this.KMSKeyId; context.Manifest = this.Manifest; if (this.Tag != null) { context.Tag = new List(this.Tag); } // allow further manipulation of loaded context prior to processing PostExecutionContextLoad(context); var output = Execute(context) as CmdletOutput; ProcessOutput(output); } #region IExecutor Members public object Execute(ExecutorContext context) { var cmdletContext = context as CmdletContext; // create request var request = new Amazon.RDS.Model.CreateCustomDBEngineVersionRequest(); if (cmdletContext.DatabaseInstallationFilesS3BucketName != null) { request.DatabaseInstallationFilesS3BucketName = cmdletContext.DatabaseInstallationFilesS3BucketName; } if (cmdletContext.DatabaseInstallationFilesS3Prefix != null) { request.DatabaseInstallationFilesS3Prefix = cmdletContext.DatabaseInstallationFilesS3Prefix; } if (cmdletContext.Description != null) { request.Description = cmdletContext.Description; } if (cmdletContext.Engine != null) { request.Engine = cmdletContext.Engine; } if (cmdletContext.EngineVersion != null) { request.EngineVersion = cmdletContext.EngineVersion; } if (cmdletContext.ImageId != null) { request.ImageId = cmdletContext.ImageId; } if (cmdletContext.KMSKeyId != null) { request.KMSKeyId = cmdletContext.KMSKeyId; } if (cmdletContext.Manifest != null) { request.Manifest = cmdletContext.Manifest; } if (cmdletContext.Tag != null) { request.Tags = cmdletContext.Tag; } CmdletOutput output; // issue call var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint); try { var response = CallAWSServiceOperation(client, request); object pipelineOutput = null; pipelineOutput = cmdletContext.Select(response, this); output = new CmdletOutput { PipelineOutput = pipelineOutput, ServiceResponse = response }; } catch (Exception e) { output = new CmdletOutput { ErrorResponse = e }; } return output; } public ExecutorContext CreateContext() { return new CmdletContext(); } #endregion #region AWS Service Operation Call private Amazon.RDS.Model.CreateCustomDBEngineVersionResponse CallAWSServiceOperation(IAmazonRDS client, Amazon.RDS.Model.CreateCustomDBEngineVersionRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Relational Database Service", "CreateCustomDBEngineVersion"); try { #if DESKTOP return client.CreateCustomDBEngineVersion(request); #elif CORECLR return client.CreateCustomDBEngineVersionAsync(request).GetAwaiter().GetResult(); #else #error "Unknown build edition" #endif } catch (AmazonServiceException exc) { var webException = exc.InnerException as System.Net.WebException; if (webException != null) { throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException); } throw; } } #endregion internal partial class CmdletContext : ExecutorContext { public System.String DatabaseInstallationFilesS3BucketName { get; set; } public System.String DatabaseInstallationFilesS3Prefix { get; set; } public System.String Description { get; set; } public System.String Engine { get; set; } public System.String EngineVersion { get; set; } public System.String ImageId { get; set; } public System.String KMSKeyId { get; set; } public System.String Manifest { get; set; } public List Tag { get; set; } public System.Func Select { get; set; } = (response, cmdlet) => response; } } }