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