Example #1
0
        /// <summary>
        /// Retrieves a list of datacenter objects.
        /// </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 datacenters 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 datacenter objects
        /// on supported properties. If omitted objects are returned in the
        /// order as they were created in.
        /// </param>
        /// <returns></returns>
        public DataCenterList GetDataCenters(
            PageInput page          = null,
            DataCenterFilter filter = null,
            DataCenterSort sort     = null
            )
        {
            // setup parameters
            GraphQLParameters parameters = new GraphQLParameters();

            parameters.Add("page", page, true);
            parameters.Add("filter", filter, true);
            parameters.Add("sort", sort, true);

            return(RunQuery <DataCenterList>(@"getDataCenters", parameters));
        }
Example #2
0
        /// <summary>
        /// Performs execution of the command
        /// </summary>
        protected override void ProcessRecord()
        {
            List <DataCenterFilter> filters = new List <DataCenterFilter>();

            if (ParameterPresent("Guid"))
            {
                DataCenterFilter f = new DataCenterFilter();
                f.DataCenterGuid           = new GuidFilter();
                f.DataCenterGuid.MustEqual = Guid;
                filters.Add(f);
            }

            if (ParameterPresent("Name"))
            {
                DataCenterFilter f = new DataCenterFilter();
                f.Name           = new StringFilter();
                f.Name.MustEqual = Name;
                filters.Add(f);
            }

            // convert to filter
            DataCenterFilter filter = GenerateFilter(filters);

            // setup sorting
            DataCenterSort sort = new DataCenterSort();

            sort.Name = Sort;

            PageInput      page = PageInput.First;
            DataCenterList list = Connection.GetDataCenters(page, filter, sort);

            foreach (DataCenter item in list.Items)
            {
                WriteObject(item);
            }

            while (list.More)
            {
                // advance the page
                page.Page = page.Page + 1;

                list = Connection.GetDataCenters(page, filter, sort);
                foreach (DataCenter item in list.Items)
                {
                    WriteObject(item);
                }
            }
        }
Example #3
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 DataCenterFilter GenerateFilter(List <DataCenterFilter> filters)
        {
            DataCenterFilter result = null;

            foreach (DataCenterFilter filter in filters)
            {
                if (result == null)
                {
                    result = filter;
                    continue;
                }

                filter.And = result;
                result     = filter;
            }

            return(result);
        }