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