#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 SolidFire.Core; using SolidFire.Element.Api; #endregion namespace SolidFire.Volume.Get { [Cmdlet(VerbsCommon.Get, "SFVolumeAccessGroupEfficiency", DefaultParameterSetName = "VolumeAccessGroupId")] public class GetSFVolumeAccessGroupEfficiency : SFCmdlet { #region Private Data private Int64[] _volumeAccessGroupId; private VolumeAccessGroup[] _volumeAccessGroup; #endregion #region Parameters [Parameter(Position = 0, ParameterSetName = "VolumeAccessGroupId", Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ValueFromRemainingArguments = false, HelpMessage = "Please enter a volume access group ID")] [ValidateNotNullOrEmpty] [ValidatePattern(SolidFireValidations.Numeric)] public Int64[] VolumeAccessGroupID { get { return _volumeAccessGroupId; } set { _volumeAccessGroupId = value; } } [Parameter(Position = 0, ParameterSetName = "VolumeAccessGroup", Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ValueFromRemainingArguments = false, HelpMessage = "Please enter a volume access group")] [ValidateNotNullOrEmpty] public VolumeAccessGroup[] VolumeAccessGroup { get { return _volumeAccessGroup; } set { _volumeAccessGroup = value; } } #endregion #region Cmdlet Overrides protected override void BeginProcessing() { base.BeginProcessing(); CheckConnection(); } protected override void ProcessRecord() { base.ProcessRecord(); switch (ParameterSetName) { case "VolumeAccessGroupId": ProcessByVolumeAccessGroupId(); break; case "VolumeAccessGroup": ProcessByVolumeAccessGroup(); break; default: throw new ArgumentException("Invalid parameter set."); } } private void ProcessByVolumeAccessGroup() { foreach (var volumeAccessGroup in _volumeAccessGroup) { var request = new GetVolumeAccessGroupEfficiencyRequest(); request.VolumeAccessGroupID = volumeAccessGroup.VolumeAccessGroupID; var objsFromAPI = SendRequest("GetVolumeAccessGroupEfficiency", request); foreach (var obj in objsFromAPI) { WriteObject(obj.Result); } } } private void ProcessByVolumeAccessGroupId() { foreach (var volumeAccessGroupId in _volumeAccessGroupId) { var request = new GetVolumeAccessGroupEfficiencyRequest(); request.VolumeAccessGroupID = volumeAccessGroupId; var objsFromAPI = SendRequest("GetVolumeAccessGroupEfficiency", request); foreach (var obj in objsFromAPI) { WriteObject(obj.Result); } } } #endregion } }