/// <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));
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
            }
        }