#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.Collections.Generic; using System.Linq; using System.Management.Automation; using SolidFire.Core; using SolidFire.Element.Api; #endregion namespace SolidFire.Volume.Get { [Cmdlet(VerbsCommon.Get, "SFQoSPolicy")] public class GetSFQoSPolicy : SFCmdlet { #region Private Data #endregion #region Parameters [Parameter(Position = 0, HelpMessage = "The ID of the policy to be retrieved. If not supplied, all QoSPolicies will be retrieved.")] public int QoSPolicyID { get; set; } [Parameter(Position = 1, HelpMessage = "The name of the QoS policy to retrieve.")] public string Name { get; set; } #endregion #region Cmdlet Overrides protected override void BeginProcessing() { base.BeginProcessing(); CheckConnection(); } protected override void ProcessRecord() { base.ProcessRecord(); if (QoSPolicyID > 0) { var request = new GetQoSPolicyRequest { QosPolicyID = QoSPolicyID }; WriteObject(SendRequest("GetQoSPolicy", request).Select(r => r.Result.QosPolicy)); } else { var results = SendRequest("ListQoSPolicies"); var policies = results.SelectMany(r => r.Result.QosPolicies); if (!string.IsNullOrEmpty(Name)) { const WildcardOptions options = WildcardOptions.IgnoreCase; var wildcard = new WildcardPattern(Name, options); policies = policies.Where(c => wildcard.IsMatch(c.Name)); } WriteObject(policies, true); } } #endregion } }