#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.Linq; using System.ComponentModel; using System.Management.Automation; using SolidFire.Core; using SolidFire.Element.Api; using System.Collections; #endregion namespace SolidFire.StorageContainers { [Cmdlet(VerbsCommon.Get, "SFInitiator", DefaultParameterSetName ="None")] public class GetInitiator : SFCmdlet { #region Private Data #endregion #region Parameters [Parameter(Mandatory = false, Position =0, HelpMessage = "The IDs of the initiators to retrieve.", ParameterSetName ="ID")] public Int64[] InitiatorID { get; set; } [Parameter(Mandatory = false, Position =0, HelpMessage = "The name of the initiator (IQN or WWPN) to retrieve.", ParameterSetName ="Name")] public string Name { get; set; } [Parameter(Mandatory = false, Position = 0, HelpMessage = "The friendly name to of the initiator to retrieve.", ParameterSetName = "Alias")] public String Alias { get; set; } [Parameter(Mandatory = false, Position = 0, HelpMessage = "The ID of the volume access group in the initiator to retrieve.", ParameterSetName = "VolumeAccessGroup")] public Int64 VolumeAccessGroupID { get; set; } #endregion #region Cmdlet Overrides protected override void BeginProcessing() { base.BeginProcessing(); CheckConnection(9); } protected override void ProcessRecord() { base.ProcessRecord(); var request = new ListInitiatorsRequest(); if (ParameterSetName == "ID") { request.Initiators = InitiatorID; } var objsFromAPI = SendRequest("ListInitiators", request); switch (ParameterSetName) { case "Name": WriteObject(objsFromAPI.Select(obj => obj.Result.Initiators.Where(i => string.Equals(i.InitiatorName, Name, StringComparison.OrdinalIgnoreCase))), true); break; case "Alias": WriteObject(objsFromAPI.Select(obj => obj.Result.Initiators.Where(i => string.Equals(i.Alias, Alias, StringComparison.OrdinalIgnoreCase))), true); break; case "VolumeAccessGroup": WriteObject(objsFromAPI.Select(obj => obj.Result.Initiators.Where(i => i.VolumeAccessGroups.Contains(VolumeAccessGroupID))), true); break; case "ID": case "None": WriteObject(objsFromAPI.Select(obj => obj.Result.Initiators), true); break; } } #endregion } }