/// <summary> /// Retrieve a list of provisioned nPod templates /// </summary> /// <param name="page"> /// The requested page from the server. This is an optional argument /// and if omitted the server will default to returning the first page /// with a maximum of <c>100</c> items. /// </param> /// <param name="filter"> /// A filter object to filter the nPod templates on the server. If /// omitted, the server will return all objects as a paginated response. /// </param> /// <param name="sort"> /// A sort definition object to sort the nPod template objects on /// supported properties. If omitted objects are returned in the order /// as they were created in. /// </param> /// <returns>A paginated list of nPod templates</returns> public NPodTemplateList GetNPodTemplates( PageInput page, NPodTemplateFilter filter, NPodTemplateSort sort) { // setup parameters GraphQLParameters parameters = new GraphQLParameters(); parameters.Add("page", page, true); parameters.Add("filter", filter, true); parameters.Add("sort", sort, true); return(RunQuery <NPodTemplateList>(@"getNPodTemplates", parameters)); }
/// <summary> /// Compiles a single filter from a list of filters by combining them /// with a logical AND /// </summary> /// <param name="filters"> /// List of filters to combine /// </param> /// <returns></returns> private NPodTemplateFilter GenerateFilter(List <NPodTemplateFilter> filters) { NPodTemplateFilter result = null; foreach (NPodTemplateFilter filter in filters) { if (result == null) { result = filter; continue; } filter.And = result; result = filter; } return(result); }
/// <summary> /// Performs execution of the command /// </summary> protected override void ProcessRecord() { try { List <NPodTemplateFilter> filters = new List <NPodTemplateFilter>(); if (ParameterPresent("Guid")) { NPodTemplateFilter f = new NPodTemplateFilter(); f.Guid = new GuidFilter(); f.Guid.MustEqual = Guid; filters.Add(f); } if (ParameterPresent("Application")) { NPodTemplateFilter f = new NPodTemplateFilter(); f.Application = new StringFilter(); f.Application.MustEqual = Application; filters.Add(f); } if (ParameterPresent("OperatingSystem")) { NPodTemplateFilter f = new NPodTemplateFilter(); f.OperatingSystem = new StringFilter(); f.OperatingSystem.MustEqual = OperatingSystem; filters.Add(f); } if (ParameterPresent("Name")) { NPodTemplateFilter f = new NPodTemplateFilter(); f.Name = new StringFilter(); f.Name.MustEqual = Name; filters.Add(f); } if (ParameterPresent("NebulonTemplate")) { NPodTemplateFilter f = new NPodTemplateFilter(); f.NebulonTempalte = NebulonTemplate; filters.Add(f); } NPodTemplateFilter versionFilter = new NPodTemplateFilter(); versionFilter.OnlyLastVersion = !IncludeVersions.IsPresent; filters.Add(versionFilter); // convert to filter NPodTemplateFilter filter = GenerateFilter(filters); PageInput page = PageInput.First; NPodTemplateList list = Connection.GetNPodTemplates(page, filter, null); foreach (NPodTemplate item in list.Items) { WriteObject(item); } while (list.More) { // advance the page page.Page = page.Page + 1; list = Connection.GetNPodTemplates(page, filter, null); foreach (NPodTemplate item in list.Items) { WriteObject(item); } } } catch (AggregateException exceptions) { foreach (Exception ex in exceptions.InnerExceptions) { WriteError(ex); } } catch (Exception ex) { WriteError(ex); } }