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