public void UpdateMonitoringPolicy()
        {
            Random random = new Random();
            var monitoringPolicies = client.MonitoringPolicies.Get();
            var monitoringPolicy = monitoringPolicies[random.Next(monitoringPolicies.Count - 1)];
            foreach (var item in monitoringPolicies)
            {
                if (item.Default < 1)
                {
                    monitoringPolicy = item;
                    break;
                }
            }
            if (monitoringPolicy.Default == 1)
                return;
            var request = new UpdateMonitoringPolicyRequest()
                {
                    Name = "updated" + monitoringPolicy.Name,
                    Thresholds = new POCO.Requests.MonitoringPolicies.Thresholds()
                   {
                       Cpu = new POCO.Requests.MonitoringPolicies.Cpu()
                       {
                           Critical = new POCO.Requests.MonitoringPolicies.Critical()
                           {
                               Alert = false,
                               Value = 95
                           },
                           Warning = new POCO.Requests.MonitoringPolicies.Warning()
                           {
                               Alert = false,
                               Value = 90
                           }
                       },
                       Ram = new POCO.Requests.MonitoringPolicies.Ram()
                       {
                           Critical = new POCO.Requests.MonitoringPolicies.Critical()
                           {
                               Alert = false,
                               Value = 95
                           },
                           Warning = new POCO.Requests.MonitoringPolicies.Warning()
                           {
                               Alert = false,
                               Value = 90
                           }
                       },
                       Disk = new POCO.Requests.MonitoringPolicies.Disk()
                       {
                           Critical = new POCO.Requests.MonitoringPolicies.DiskCritical()
                           {
                               Alert = false,
                               Value = 90
                           },
                           Warning = new POCO.Requests.MonitoringPolicies.DiskWarning()
                           {
                               Alert = false,
                               Value = 80
                           }
                       },
                       InternalPing = new POCO.Requests.MonitoringPolicies.InternalPing()
                       {
                           Critical = new POCO.Requests.MonitoringPolicies.InternalPingCritical()
                           {
                               Alert = false,
                               Value = 100
                           },
                           Warning = new POCO.Requests.MonitoringPolicies.InternalPingWarning()
                           {
                               Alert = false,
                               Value = 50
                           }
                       },
                       Transfer = new POCO.Requests.MonitoringPolicies.Transfer()
                       {
                           Critical = new POCO.Requests.MonitoringPolicies.TransferCritical()
                           {
                               Alert = false,
                               Value = 2000
                           },
                           Warning = new POCO.Requests.MonitoringPolicies.Warning()
                           {
                               Alert = false,
                               Value = 1000
                           }
                       }
                   }

                };
            var result = client.MonitoringPolicies.Update(request, monitoringPolicy.Id);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Id);
            var monitoringPolicyResult = client.MonitoringPolicies.Show(result.Id);
            //check CPU values
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Cpu.Critical.Alert, request.Thresholds.Cpu.Critical.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Cpu.Critical.Value, request.Thresholds.Cpu.Critical.Value);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Cpu.Warning.Alert, request.Thresholds.Cpu.Warning.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Cpu.Warning.Value, request.Thresholds.Cpu.Warning.Value);
            //check RAM values
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Ram.Critical.Alert, request.Thresholds.Ram.Critical.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Ram.Critical.Value, request.Thresholds.Ram.Critical.Value);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Ram.Warning.Alert, request.Thresholds.Ram.Warning.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Ram.Warning.Value, request.Thresholds.Ram.Warning.Value);
            //check InternalPing values
            Assert.AreEqual(monitoringPolicyResult.Thresholds.InternalPing.Critical.Alert, request.Thresholds.InternalPing.Critical.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.InternalPing.Critical.Value, request.Thresholds.InternalPing.Critical.Value);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.InternalPing.Warning.Alert, request.Thresholds.InternalPing.Warning.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.InternalPing.Warning.Value, request.Thresholds.InternalPing.Warning.Value);
            //check Transfer values
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Transfer.Critical.Alert, request.Thresholds.Transfer.Critical.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Transfer.Critical.Value, request.Thresholds.Transfer.Critical.Value);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Transfer.Warning.Alert, request.Thresholds.Transfer.Warning.Alert);
            Assert.AreEqual(monitoringPolicyResult.Thresholds.Transfer.Warning.Value, request.Thresholds.Transfer.Warning.Value);
        }
        /// <summary>
        /// Modifies a monitoring policy.
        /// </summary>
        /// <param name="monitoring_policy_id">Unique monitoring policy's identifier.</param>
        /// 
        public MonitoringPoliciesResponse Update(UpdateMonitoringPolicyRequest monitoringPolicy, string monitoring_policy_id)
        {
            try
            {
                var request = new RestRequest("/monitoring_policies/{monitoring_policy_id}", Method.PUT)
                {
                    RequestFormat = DataFormat.Json,
                    JsonSerializer = new CustomSerializer()
                };
                request.AddUrlSegment("monitoring_policy_id", monitoring_policy_id);
                request.AddBody(monitoringPolicy);

                var result = restclient.Execute<MonitoringPoliciesResponse>(request);
                if (result.StatusCode != HttpStatusCode.Accepted)
                {
                    throw new Exception(result.Content);
                }
                return result.Data;
            }
            catch
            {
                throw;
            }
        }