#region Copyright /* * Copyright © 2014-2016 NetApp, Inc. All Rights Reserved. * * CONFIDENTIALITY NOTICE: THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION OF * NETAPP, INC. USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR * EXPRESS WRITTEN PERMISSION OF NETAPP, INC. */ #endregion #region Using Directives using System; using System.ComponentModel; using System.Management.Automation; using SolidFire.Core.Validation; using System.Management.Automation.Runspaces; using SolidFire.Core; using SolidFire.Element.Api; #endregion namespace SolidFire.Volume.Remove { /// /// RemoveSFVolumeFromVolumeAccessGroup is used to remove volumes from a specified volume access group. /// [Cmdlet(VerbsCommon.Remove, "SFVolumeFromVolumeAccessGroup", SupportsShouldProcess=true, ConfirmImpact = ConfirmImpact.High)] public class RemoveSFVolumeFromVolumeAccessGroup : SFCmdlet { private Pipeline pipeline; #region Parameters /// /// The ID of the volume access group to remove the initiator. /// [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ValueFromRemainingArguments = false, HelpMessage = "Please enter a volume access group ID or list of volume access group IDs")] [ValidatePattern(SolidFireValidations.Numeric)] public Int64 VolumeAccessGroupID { get; set; } /// /// List of volumeIDs to remove from the volume access group. /// [Parameter(Mandatory = true, Position = 1, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, HelpMessage = "List of volume IDs to remove from the volume access group")] [ValidatePattern(SolidFireValidations.Numeric)] public Int64[] VolumeID { get; set; } #endregion #region CmdLet Overrides /// /// Implementation for checking the status of the connection and /// compatibility before allowing the cmdlet to continue. /// protected override void BeginProcessing() { base.BeginProcessing(); CheckConnection(); pipeline = Runspace.DefaultRunspace.CreateNestedPipeline(); } protected override void EndProcessing() { base.EndProcessing(); var command = new Command("Get-SFVolumeAccessGroup"); command.Parameters.Add("VolumeAccessGroupID", VolumeAccessGroupID); if (SFConnection != null) { command.Parameters.Add("SFConnection", SFConnection); } else if (Target != null) { command.Parameters.Add("Target", Target); } pipeline.Commands.Add(command); WriteObject(pipeline.Invoke(), true); pipeline = null; } /// /// Implementation for processing the execution of the cmdlet. /// protected override void ProcessRecord() { base.ProcessRecord(); // Parameters to pass into the RemoveVolumessToVolumeAccessGroup API call; // volumeAccessGroupID and initiators are required parameters. var request = new RemoveVolumesFromVolumeAccessGroupRequest(); request.VolumeAccessGroupID = VolumeAccessGroupID; request.Volumes = VolumeID; SendRequest("RemoveVolumesFromVolumeAccessGroup", request); } #endregion } }