/// <summary>
        /// Creates a new entry in a GSLB Region pool
        /// </summary>
        /// <param name="zone">The zone to add the entry to</param>
        /// <param name="fqdn">The fqdn to add the entry to</param> 
        /// <param name="address">The IPv4 address of this Node IP</param>
        /// <param name="region">The region to create the pool entry for</param>
        /// <param name="label">A descriptive string describing this IP (may be string.empty)</param>
        /// <param name="weight">A number from 1-15 describing how often this record should be served. Higher means more</param>
        /// <param name="mode">Sets the behavior of this particular record. always - always serve this IP address, obey - Serve this address based upon its monitoring status, remove - Serve this address based upon its monitoring status. However, if it goes down, don't automatically bring it back up when monitoring reports it up, no - Never serve this IP address</param>
        /// <returns>The GSLBRegionPoolEntry that is created or null if failed</returns>
        public net.dynect.api2.GSLBRegionPoolEntry CreateGSLBRegionPoolEntry(string zone, string fqdn, GSLBRegionOption region, string address, string label, IPWeight weight, IPServeMode mode)
        {
            if (sessionData == null)
                return null;

            net.dynect.api2.GSLBRegionPoolEntry retVal = null;
            try
            {
                net.dynect.api2.CreateGSLBRegionPoolEntryRequestType request = new DynSoapWrapper.net.dynect.api2.CreateGSLBRegionPoolEntryRequestType();
                request.token = sessionData.token;
                request.fault_incompat = 1;
                request.fault_incompatSpecified = true;
                request.zone = zone;
                request.fqdn = fqdn;
                request.address = address;
                request.label = label;
                request.region_code = GSLBRegionToString(region);
                if (weight != IPWeight.NONE)
                    request.weight = (int)weight;
                else
                    request.weight = 1;
                request.serve_mode = mode.ToString();
                net.dynect.api2.CreateGSLBRegionPoolEntryResponseType response = dynectWsdl.CreateGSLBRegionPoolEntry(request);

                retVal = response.data;
            }
            catch (Exception ex)
            {
                ;// TODO: Do your custom error handling here....
            }

            return retVal;
        }
        public static string GSLBRegionToString(GSLBRegionOption r)
        {
            switch (r)
            {
                case GSLBRegionOption.USWEST:
                        return "US West";
                case GSLBRegionOption.USCENTRAL:
                        return "US Central";
                case GSLBRegionOption.USEAST:
                        return "US East";
                case GSLBRegionOption.EUWEST:
                        return "EU West";
                case GSLBRegionOption.EUCENTRAL:
                        return "EU Central";
                case GSLBRegionOption.EUEAST:
                        return "EU East";
                case GSLBRegionOption.ASIA:
                        return "Asia";
                case GSLBRegionOption.GLOBAL:
                       return "global";
            }

            return "global";
        }
        /// <summary>
        /// Add or create a Region array to send to the GSLB service 
        /// </summary>
        /// <param name="currenetGSLBRegionArray">The LoadBalanceAddress array to add the LoadBalanceAddress to or null to start a new array</param>
        /// <param name="poolGSLBAddresses">The pool of ip addresses for the added region</param>
        /// <param name="region">GSLB region location</param>
        /// <param name="serveCount">How many records will be returned in each DNS response or -1 to not specify</param>
        /// <param name="failoverMode">Dynect default is 'global': ip - Failover to a particular IP, cname - Failover to a particular CNAME, global - Failover to the global IP address pool</param>
        /// <param name="failoverData">If failover_mode is 'ip', this should be an IPv4 address, If failover_mode is 'cname', this should be a CNAME, If failover_mode is 'global' this should be null or empty</param>
        /// <returns>An array of GSLBRegions to pass to update or create</returns>
        public net.dynect.api2.GSLBRegion[] AddGSLBRegion(net.dynect.api2.GSLBRegion[] currenetGSLBRegionArray, net.dynect.api2.GSLBAddress[] poolGSLBAddresses,
            GSLBRegionOption region, int serveCount, FailoverMode failoverMode, string failoverData)
        {
            net.dynect.api2.GSLBRegion[] retVal = null;
            int index = 0;
            if (currenetGSLBRegionArray == null)
            {
                retVal = new DynSoapWrapper.net.dynect.api2.GSLBRegion[1];
            }
            else
            {
                retVal = new DynSoapWrapper.net.dynect.api2.GSLBRegion[currenetGSLBRegionArray.Length + 1];
                for (index = 0; index < currenetGSLBRegionArray.Length; index++)
                {
                    retVal[index] = currenetGSLBRegionArray[index];
                }
            }

            retVal[index] = new DynSoapWrapper.net.dynect.api2.GSLBRegion();
            retVal[index].failover_data = failoverMode == FailoverMode.global ? string.Empty : failoverData;
            retVal[index].failover_mode = failoverMode.ToString();
            retVal[index].region_code = GSLBRegionToString(region);
            if (serveCount > 0)
            {
                retVal[index].serve_count = serveCount;
                retVal[index].serve_countSpecified = true;
            }
            else
            {
                retVal[index].serve_countSpecified = false;
            }

            retVal[index].pool = poolGSLBAddresses;

            return retVal;
        }
        /// <summary>
        /// Gets all entries from a GSLB service pool
        /// </summary>
        /// <param name="zone">The zone to get the entry from</param>
        /// <param name="fqdn">The fqdn to get the entry from</param> 
        /// <param name="region">The region to get the entry from</param> 
        /// <returns>Array of GSLBRegionPoolEntry objects</returns>
        public net.dynect.api2.GSLBRegionPoolEntry[] GetGSLBRegionPoolEntries(string zone, string fqdn, GSLBRegionOption region)
        {
            if (sessionData == null)
                return null;

            net.dynect.api2.GSLBRegionPoolEntry[] retVal = null;
            try
            {
                net.dynect.api2.GetGSLBRegionPoolEntriesRequestType request = new DynSoapWrapper.net.dynect.api2.GetGSLBRegionPoolEntriesRequestType();
                request.token = sessionData.token;
                request.fault_incompat = 1;
                request.fault_incompatSpecified = true;
                request.zone = zone;
                request.fqdn = fqdn;
                request.region_code = GSLBRegionToString(region);
                net.dynect.api2.GetGSLBRegionPoolEntriesResponseType response = dynectWsdl.GetGSLBRegionPoolEntries(request);

                retVal = response.data;
            }
            catch (Exception ex)
            {
                ;// TODO: Do your custom error handling here....
            }

            return retVal;
        }