#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.ComponentModel;
using System.Linq;
using System.Management.Automation;
using SolidFire.Core;
using SolidFire.Element.Api;
#endregion
namespace SolidFire.Volume.Get
{
///
/// Used to list all of the active paired volumes paired with a volume.
/// Volumes listed in the return for this method include volumes with active and pending pairings.
///
[Cmdlet(VerbsCommon.Get, "SFVolumePair", DefaultParameterSetName = "id")]
public class GetSFVolumePair : SFCmdlet
{
#region Private Data
#endregion
#region Parameters
[Parameter(Mandatory = false, ParameterSetName = "name", HelpMessage = "Please enter a volume name with which to filter results.")]
public string SourceVolumeName { get; set; }
[Parameter(Mandatory = false, ParameterSetName = "id", HelpMessage = "Please enter a volume ID with which to filter results.")]
public long SourceVolumeID { get; set; }
#endregion
#region Cmdlet Overrides
protected override void BeginProcessing()
{
base.BeginProcessing();
CheckConnection();
}
protected override void ProcessRecord()
{
base.ProcessRecord();
var objsFromAPI = SendRequest("ListActivePairedVolumes", new ListActivePairedVolumesRequest());
foreach (var obj in objsFromAPI)
{
var vols = obj.Result.Volumes;
if (ParameterSetName == "id" && SourceVolumeID > 0)
{
vols = vols.Where(v => v.VolumeID == SourceVolumeID).ToArray();
}
if (ParameterSetName == "name" && !string.IsNullOrEmpty(SourceVolumeName))
{
const WildcardOptions options = WildcardOptions.IgnoreCase |
WildcardOptions.Compiled;
var wildcard = new WildcardPattern(SourceVolumeName, options);
vols = vols.Where(r => (wildcard.IsMatch(r.Name))).ToArray();
}
WriteObject(vols, true);
}
}
#endregion
}
}