#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.Collections.Generic; 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 { /// /// RemoveSFInitiatorFromVolumeAccessGroup is used to remove initiators from a specified volume access group. /// [Cmdlet(VerbsCommon.Remove, "SFInitiatorFromVolumeAccessGroup", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] public class RemoveSFInitiatorFromVolumeAccessGroup : SFCmdlet { private Pipeline pipeline; #region Parameters /// /// The ID of the volume access group to remove the volume. /// [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 initiators (IQNs and WWPNs) to remove to the volume access group. /// [Parameter(Mandatory = true, Position = 1, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, HelpMessage = "List of initiator names (IQNs and WWPNs) to remove from the volume access group")] // Validation Pattern is too restrictive [ValidatePattern(SolidFireValidations.iSCSIInitiator)] public string[] Initiators { 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 RemoveInitiatorsToVolumeAccessGroup API call; // volumeAccessGroupID and initiators are required parameters. Dictionary parameters = new Dictionary { {"volumeAccessGroupID", this.VolumeAccessGroupID}, {"initiators", this.Initiators} }; var request = new RemoveInitiatorsFromVolumeAccessGroupRequest(); request.VolumeAccessGroupID = VolumeAccessGroupID; request.Initiators = Initiators; SendRequest("RemoveInitiatorsFromVolumeAccessGroup", request); } #endregion } }