#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
}
}