1 <?php
2 /**
3 * Copyright 2012-2014 Rackspace US, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 namespace OpenCloud\LoadBalancer\Resource;
19
20 /**
21 * The connection throttling feature imposes limits on the number of connections
22 * per IP address to help mitigate malicious or abusive traffic to your
23 * applications. The attributes in the table that follows can be configured
24 * based on the traffic patterns for your sites.
25 */
26 class ConnectionThrottle extends NonIdUriResource
27 {
28 /**
29 * Allow at least this number of connections per IP address before applying
30 * throttling restrictions. Setting a value of 0 allows unlimited
31 * simultaneous connections; otherwise, set a value between 1 and 1000.
32 *
33 * @var int
34 */
35 public $minConnections;
36
37 /**
38 * Maximum number of connections to allow for a single IP address. Setting a
39 * value of 0 will allow unlimited simultaneous connections; otherwise set a
40 * value between 1 and 100000.
41 *
42 * @var int
43 */
44 public $maxConnections;
45
46 /**
47 * Maximum number of connections allowed from a single IP address in the
48 * defined rateInterval. Setting a value of 0 allows an unlimited connection
49 * rate; otherwise, set a value between 1 and 100000.
50 *
51 * @var int
52 */
53 public $maxConnectionRate;
54
55 /**
56 * Frequency (in seconds) at which the maxConnectionRate is assessed.
57 * For example, a maxConnectionRate of 30 with a rateInterval of 60 would
58 * allow a maximum of 30 connections per minute for a single IP address.
59 * This value must be between 1 and 3600.
60 *
61 * @var int
62 */
63 public $rateInterval;
64
65 protected static $json_name = "connectionThrottle";
66 protected static $url_resource = "connectionthrottle";
67
68 protected $createKeys = array(
69 'minConnections',
70 'maxConnections',
71 'maxConnectionRate',
72 'rateInterval'
73 );
74
75 public function create($params = array())
76 {
77 return $this->update($params);
78 }
79 }
80