/******************************************************************************* * 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.Outposts; using Amazon.Outposts.Model; namespace Amazon.PowerShell.Cmdlets.OUTP { /// /// Update the physical and logistical details for a rack at a site. For more information /// about hardware requirements for racks, see Network /// readiness checklist in the Amazon Web Services Outposts User Guide. /// /// /// /// To update a rack at a site with an order of IN_PROGRESS, you must wait /// for the order to complete or cancel the order. /// /// [Cmdlet("Update", "OUTPSiteRackPhysicalProperty", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)] [OutputType("Amazon.Outposts.Model.Site")] [AWSCmdlet("Calls the AWS Outposts UpdateSiteRackPhysicalProperties API operation.", Operation = new[] {"UpdateSiteRackPhysicalProperties"}, SelectReturnType = typeof(Amazon.Outposts.Model.UpdateSiteRackPhysicalPropertiesResponse))] [AWSCmdletOutput("Amazon.Outposts.Model.Site or Amazon.Outposts.Model.UpdateSiteRackPhysicalPropertiesResponse", "This cmdlet returns an Amazon.Outposts.Model.Site object.", "The service call response (type Amazon.Outposts.Model.UpdateSiteRackPhysicalPropertiesResponse) can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack." )] public partial class UpdateOUTPSiteRackPhysicalPropertyCmdlet : AmazonOutpostsClientCmdlet, IExecutor { #region Parameter FiberOpticCableType /// /// /// The type of fiber that you will use to attach the Outpost to your network. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.FiberOpticCableType")] public Amazon.Outposts.FiberOpticCableType FiberOpticCableType { get; set; } #endregion #region Parameter MaximumSupportedWeightLb /// /// /// The maximum rack weight that this site can support. NO_LIMIT is over /// 2000lbs. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("MaximumSupportedWeightLbs")] [AWSConstantClassSource("Amazon.Outposts.MaximumSupportedWeightLbs")] public Amazon.Outposts.MaximumSupportedWeightLbs MaximumSupportedWeightLb { get; set; } #endregion #region Parameter OpticalStandard /// /// /// The type of optical standard that you will use to attach the Outpost to your network. /// This field is dependent on uplink speed, fiber type, and distance to the upstream /// device. For more information about networking requirements for racks, see Network /// in the Amazon Web Services Outposts User Guide. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.OpticalStandard")] public Amazon.Outposts.OpticalStandard OpticalStandard { get; set; } #endregion #region Parameter PowerConnector /// /// /// The power connector that Amazon Web Services should plan to provide for connections /// to the hardware. Note the correlation between PowerPhase and PowerConnector. /// /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.PowerConnector")] public Amazon.Outposts.PowerConnector PowerConnector { get; set; } #endregion #region Parameter PowerDrawKva /// /// /// The power draw, in kVA, available at the hardware placement position for the rack. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.PowerDrawKva")] public Amazon.Outposts.PowerDrawKva PowerDrawKva { get; set; } #endregion #region Parameter PowerFeedDrop /// /// /// Indicates whether the power feed comes above or below the rack. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.PowerFeedDrop")] public Amazon.Outposts.PowerFeedDrop PowerFeedDrop { get; set; } #endregion #region Parameter PowerPhase /// /// /// The power option that you can provide for hardware. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.PowerPhase")] public Amazon.Outposts.PowerPhase PowerPhase { get; set; } #endregion #region Parameter SiteId /// /// /// The ID or the Amazon Resource Name (ARN) of the site. /// /// #if !MODULAR [System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true)] #else [System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true, Mandatory = true)] [System.Management.Automation.AllowEmptyString] [System.Management.Automation.AllowNull] #endif [Amazon.PowerShell.Common.AWSRequiredParameter] public System.String SiteId { get; set; } #endregion #region Parameter UplinkCount /// /// /// Racks come with two Outpost network devices. Depending on the supported uplink speed /// at the site, the Outpost network devices provide a variable number of uplinks. Specify /// the number of uplinks for each Outpost network device that you intend to use to connect /// the rack to your network. Note the correlation between UplinkGbps and /// UplinkCount. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.Outposts.UplinkCount")] public Amazon.Outposts.UplinkCount UplinkCount { get; set; } #endregion #region Parameter UplinkGbp /// /// /// The uplink speed the rack should support for the connection to the Region. /// /// [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("UplinkGbps")] [AWSConstantClassSource("Amazon.Outposts.UplinkGbps")] public Amazon.Outposts.UplinkGbps UplinkGbp { get; set; } #endregion #region Parameter Select /// /// Use the -Select parameter to control the cmdlet output. The default value is 'Site'. /// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.Outposts.Model.UpdateSiteRackPhysicalPropertiesResponse). /// Specifying the name of a property of type Amazon.Outposts.Model.UpdateSiteRackPhysicalPropertiesResponse 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; } = "Site"; #endregion #region Parameter PassThru /// /// Changes the cmdlet behavior to return the value passed to the SiteId parameter. /// The -PassThru parameter is deprecated, use -Select '^SiteId' instead. This parameter will be removed in a future version. /// [System.Obsolete("The -PassThru parameter is deprecated, use -Select '^SiteId' instead. This parameter will be removed in a future version.")] [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public SwitchParameter PassThru { 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 = FormatParameterValuesForConfirmationMsg(nameof(this.SiteId), MyInvocation.BoundParameters); if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "Update-OUTPSiteRackPhysicalProperty (UpdateSiteRackPhysicalProperties)")) { return; } var context = new CmdletContext(); // allow for manipulation of parameters prior to loading into context PreExecutionContextLoad(context); #pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute if (ParameterWasBound(nameof(this.Select))) { context.Select = CreateSelectDelegate(Select) ?? throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select)); if (this.PassThru.IsPresent) { throw new System.ArgumentException("-PassThru cannot be used when -Select is specified.", nameof(this.Select)); } } else if (this.PassThru.IsPresent) { context.Select = (response, cmdlet) => this.SiteId; } #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute context.FiberOpticCableType = this.FiberOpticCableType; context.MaximumSupportedWeightLb = this.MaximumSupportedWeightLb; context.OpticalStandard = this.OpticalStandard; context.PowerConnector = this.PowerConnector; context.PowerDrawKva = this.PowerDrawKva; context.PowerFeedDrop = this.PowerFeedDrop; context.PowerPhase = this.PowerPhase; context.SiteId = this.SiteId; #if MODULAR if (this.SiteId == null && ParameterWasBound(nameof(this.SiteId))) { WriteWarning("You are passing $null as a value for parameter SiteId 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.UplinkCount = this.UplinkCount; context.UplinkGbp = this.UplinkGbp; // 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.Outposts.Model.UpdateSiteRackPhysicalPropertiesRequest(); if (cmdletContext.FiberOpticCableType != null) { request.FiberOpticCableType = cmdletContext.FiberOpticCableType; } if (cmdletContext.MaximumSupportedWeightLb != null) { request.MaximumSupportedWeightLbs = cmdletContext.MaximumSupportedWeightLb; } if (cmdletContext.OpticalStandard != null) { request.OpticalStandard = cmdletContext.OpticalStandard; } if (cmdletContext.PowerConnector != null) { request.PowerConnector = cmdletContext.PowerConnector; } if (cmdletContext.PowerDrawKva != null) { request.PowerDrawKva = cmdletContext.PowerDrawKva; } if (cmdletContext.PowerFeedDrop != null) { request.PowerFeedDrop = cmdletContext.PowerFeedDrop; } if (cmdletContext.PowerPhase != null) { request.PowerPhase = cmdletContext.PowerPhase; } if (cmdletContext.SiteId != null) { request.SiteId = cmdletContext.SiteId; } if (cmdletContext.UplinkCount != null) { request.UplinkCount = cmdletContext.UplinkCount; } if (cmdletContext.UplinkGbp != null) { request.UplinkGbps = cmdletContext.UplinkGbp; } 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.Outposts.Model.UpdateSiteRackPhysicalPropertiesResponse CallAWSServiceOperation(IAmazonOutposts client, Amazon.Outposts.Model.UpdateSiteRackPhysicalPropertiesRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "AWS Outposts", "UpdateSiteRackPhysicalProperties"); try { #if DESKTOP return client.UpdateSiteRackPhysicalProperties(request); #elif CORECLR return client.UpdateSiteRackPhysicalPropertiesAsync(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 Amazon.Outposts.FiberOpticCableType FiberOpticCableType { get; set; } public Amazon.Outposts.MaximumSupportedWeightLbs MaximumSupportedWeightLb { get; set; } public Amazon.Outposts.OpticalStandard OpticalStandard { get; set; } public Amazon.Outposts.PowerConnector PowerConnector { get; set; } public Amazon.Outposts.PowerDrawKva PowerDrawKva { get; set; } public Amazon.Outposts.PowerFeedDrop PowerFeedDrop { get; set; } public Amazon.Outposts.PowerPhase PowerPhase { get; set; } public System.String SiteId { get; set; } public Amazon.Outposts.UplinkCount UplinkCount { get; set; } public Amazon.Outposts.UplinkGbps UplinkGbp { get; set; } public System.Func Select { get; set; } = (response, cmdlet) => response.Site; } } }