#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.Validation;
using System.Management.Automation.Runspaces;
using SolidFire.Core;
using SolidFire.Element.Api;
#endregion
namespace SolidFire.Volume.Remove
{
///
/// RemoveSnapshot is used to delete a snapshot. A snapshot that is currently the "active" snapshot cannot be deleted. You must
/// rollback and make another snapshot "active" before the current snapshot can be deleted. For more details on rolling back
/// snapshots, see RollbackToSnapshot on page 238.
///
[Cmdlet(VerbsCommon.Remove, "SFSnapshot", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
public class RemoveSFSnapshot : SFCmdlet
{
#region Private Data
///
///
///
private Int64[] snapshotId;
private Pipeline pipeline;
#endregion
#region Parameters
[Parameter(Position = 0, ParameterSetName = "SnapshotID", Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ValueFromRemainingArguments = false, HelpMessage = "Snapshot ID(s) to remove")]
[ValidateNotNullOrEmpty]
[ValidatePattern(SolidFireValidations.Numeric)]
public Int64[] SnapshotID
{
get
{
return snapshotId;
}
set
{
snapshotId = value;
}
}
#endregion
#region Cmdlet Overrides
protected override void BeginProcessing()
{
base.BeginProcessing();
CheckConnection();
pipeline = Runspace.DefaultRunspace.CreateNestedPipeline();
}
protected override void EndProcessing()
{
base.EndProcessing();
var command = new Command("Get-SFSnapshot");
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;
}
///
///
///
protected override void ProcessRecord()
{
base.ProcessRecord();
foreach (var snapId in snapshotId)
{
var request = new DeleteSnapshotRequest();
request.SnapshotID = snapId;
SendRequest("DeleteSnapshot", request, throwTerminatingError: false);
}
}
#endregion
}
}