#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.Helpers; using SolidFire.Core.Objects; using SolidFire.Core.Validation; using SolidFire.Core; using SolidFire.Element.Api; using ElementVolume = SolidFire.Element.Api.Volume; #endregion namespace SolidFire.Volume.Get { /// /// ListActiveVolumes is used to return the list of active volumes currently in the system. /// The list of volumes is returned sorted in VolumeID order and can be returned in multiple parts (pages). /// [Cmdlet(VerbsCommon.Get, "SFBulkVolumeJob", DefaultParameterSetName = "VolumeId")] public class GetSFBulkVolumeJob : SFCmdlet { #region Private Data private Int64[] volumeId; private ElementVolume[] volume; #endregion #region Parameters [Parameter(Position = 0, ParameterSetName = "Volume", Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ValueFromRemainingArguments = false, HelpMessage = "Please specify volume object(s)")] [ValidateNotNullOrEmpty] public ElementVolume[] Volume { get { return volume; } set { volume = value; } } [Parameter(Position = 0, ParameterSetName = "VolumeId", Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ValueFromRemainingArguments = false, HelpMessage = "Please enter a volume ID or list of volume IDs")] [ValidateNotNullOrEmpty] [ValidatePattern(SolidFireValidations.Numeric)] public Int64[] VolumeID { get { return volumeId; } set { volumeId = value; } } #endregion #region Cmdlet Overrides protected override void BeginProcessing() { base.BeginProcessing(); CheckConnection(); } /// /// /// protected override void ProcessRecord() { base.ProcessRecord(); var objsFromAPI = SendRequest("ListBulkVolumeJobs"); foreach (var obj in objsFromAPI) { switch (ParameterSetName) { case "VolumeId": ProcessByVolumeId(obj); break; case "Volume": ProcessByVolume(obj); break; default: throw new ArgumentException("Invalid parameter set."); } } } private void ProcessByVolume(SFWrapper objFromApi) { foreach (var sfVolumeInfo in volume) { foreach (var bulkVolumeJobsDetail in objFromApi.Result.BulkVolumeJobs) { if (bulkVolumeJobsDetail.SrcVolumeID != sfVolumeInfo.VolumeID) continue; WriteObject(bulkVolumeJobsDetail); break; } } } private void ProcessByVolumeId(SFWrapper objFromApi) { // If there were no parameter arguments sent in for the Name parameter then we just want to list all Bulk volume jobs. if (volumeId == null) { WriteObject(objFromApi.Result.BulkVolumeJobs, true); return; } foreach (var volId in volumeId) { foreach (var vol in objFromApi.Result.BulkVolumeJobs) { if (vol.SrcVolumeID != volId) continue; WriteObject(vol); break; } } } #endregion } }