1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Cloudflare\Zone; |
4
|
|
|
|
5
|
|
|
use Cloudflare\Api; |
6
|
|
|
|
7
|
|
|
/** |
8
|
|
|
* CloudFlare API wrapper |
9
|
|
|
* |
10
|
|
|
* CTM Load Balancer |
11
|
|
|
* User-level Cloud Traffic Manager Load Balancer |
12
|
|
|
* |
13
|
|
|
* @author James Bell <[email protected]> |
14
|
|
|
* |
15
|
|
|
* @version 1 |
16
|
|
|
*/ |
17
|
|
|
class LoadBalancers extends Api |
18
|
|
|
{ |
19
|
|
|
/** |
20
|
|
|
* List load balancers |
21
|
|
|
* List configured load balancers |
22
|
|
|
* |
23
|
|
|
* @param string $zone_identifier |
24
|
|
|
*/ |
25
|
|
|
public function load_balancers($zone_identifier) |
26
|
|
|
{ |
27
|
|
|
return $this->get('/zones/'.$zone_identifier.'/load_balancers'); |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
/** |
31
|
|
|
* Create a load balancer |
32
|
|
|
* Create a new load balancer |
33
|
|
|
* |
34
|
|
|
* @param string $zone_identifier |
35
|
|
|
* @param string $name The DNS hostname to associate with your Load Balancer. If this hostname already |
36
|
|
|
* exists as a DNS record in Cloudflare's DNS, the Load Balancer will take |
37
|
|
|
* precedence and the DNS record will not be used. |
38
|
|
|
* @param string $fallback_pool The pool ID to use when all other pools are detected as unhealthy. |
39
|
|
|
* @param array $default_pools A list of pool IDs ordered by their failover priority. Pools defined here are |
40
|
|
|
* used by default, or when region_pools are not configured for a given region. |
41
|
|
|
* @param string|null $description Object description. |
42
|
|
|
* @param int|null $ttl Time to live (TTL) of the DNS entry for the IP address returned by this load |
43
|
|
|
* balancer. This only applies to gray-clouded (unproxied) load balancers. |
44
|
|
|
* @param object|null $region_pools A mapping of region/country codes to a list of pool IDs (ordered by their |
45
|
|
|
* failover priority) for the given region. Any regions not explicitly defined |
46
|
|
|
* will fall back to using default_pools. |
47
|
|
|
* @param int|null $pop_pools (Enterprise only): A mapping of Cloudflare PoP identifiers to a list of pool IDs |
48
|
|
|
* (ordered by their failover priority) for the PoP (datacenter). Any PoPs not |
49
|
|
|
* explicitly defined will fall back to using default_pools. |
50
|
|
|
* balancer. This only applies to gray-clouded (unproxied) load balancers. |
51
|
|
|
* @param bool|null $proxied Whether the hostname should be gray clouded (false) or orange clouded (true). |
52
|
|
|
*/ |
53
|
|
View Code Duplication |
public function create($zone_identifier, $name, $fallback_pool, $default_pools, $description = null, $ttl = null, $region_pools = null, $pop_pools = null, $proxied = null) |
|
|
|
|
54
|
|
|
{ |
55
|
|
|
$data = [ |
56
|
|
|
'name' => $name, |
57
|
|
|
'fallback_pool' => $fallback_pool, |
58
|
|
|
'default_pools' => $default_pools, |
59
|
|
|
'description' => $description, |
60
|
|
|
'ttl' => $ttl, |
61
|
|
|
'region_pools' => $region_pools, |
62
|
|
|
'pop_pools' => $pop_pools, |
63
|
|
|
'proxied' => $proxied, |
64
|
|
|
]; |
65
|
|
|
|
66
|
|
|
return $this->post('/zones/'.$zone_identifier.'/load_balancers', $data); |
67
|
|
|
} |
68
|
|
|
|
69
|
|
|
/** |
70
|
|
|
* Load balancer details |
71
|
|
|
* Fetch a single configured load balancer |
72
|
|
|
* |
73
|
|
|
* @param string $zone_identifier |
74
|
|
|
* @param string $identifier |
75
|
|
|
*/ |
76
|
|
|
public function details($zone_identifier, $identifier) |
77
|
|
|
{ |
78
|
|
|
return $this->get('/zones/'.$zone_identifier.'/load_balancers/'.$identifier); |
79
|
|
|
} |
80
|
|
|
|
81
|
|
|
/** |
82
|
|
|
* Modify a load balancer |
83
|
|
|
* Modify a configured load balancer |
84
|
|
|
* |
85
|
|
|
* @param string $zone_identifier |
86
|
|
|
* @param string $identifier |
87
|
|
|
* @param string $name The DNS hostname to associate with your Load Balancer. If this hostname already |
88
|
|
|
* exists as a DNS record in Cloudflare's DNS, the Load Balancer will take |
89
|
|
|
* precedence and the DNS record will not be used. |
90
|
|
|
* @param string $fallback_pool The pool ID to use when all other pools are detected as unhealthy. |
91
|
|
|
* @param array $default_pools A list of pool IDs ordered by their failover priority. Pools defined here are |
92
|
|
|
* used by default, or when region_pools are not configured for a given region. |
93
|
|
|
* @param string|null $description Object description. |
94
|
|
|
* @param int|null $ttl Time to live (TTL) of the DNS entry for the IP address returned by this load |
95
|
|
|
* balancer. This only applies to gray-clouded (unproxied) load balancers. |
96
|
|
|
* @param object|null $region_pools A mapping of region/country codes to a list of pool IDs (ordered by their |
97
|
|
|
* failover priority) for the given region. Any regions not explicitly defined |
98
|
|
|
* will fall back to using default_pools. |
99
|
|
|
* @param int|null $pop_pools (Enterprise only): A mapping of Cloudflare PoP identifiers to a list of pool IDs |
100
|
|
|
* (ordered by their failover priority) for the PoP (datacenter). Any PoPs not |
101
|
|
|
* explicitly defined will fall back to using default_pools. |
102
|
|
|
* balancer. This only applies to gray-clouded (unproxied) load balancers. |
103
|
|
|
* @param bool|null $proxied Whether the hostname should be gray clouded (false) or orange clouded (true). |
104
|
|
|
*/ |
105
|
|
View Code Duplication |
public function update($zone_identifier, $identifier, $name, $fallback_pool, $default_pools, $description = null, $ttl = null, $region_pools = null, $pop_pools = null, $proxied = null) |
|
|
|
|
106
|
|
|
{ |
107
|
|
|
$data = [ |
108
|
|
|
'name' => $name, |
109
|
|
|
'fallback_pool' => $fallback_pool, |
110
|
|
|
'default_pools' => $default_pools, |
111
|
|
|
'description' => $description, |
112
|
|
|
'ttl' => $ttl, |
113
|
|
|
'region_pools' => $region_pools, |
114
|
|
|
'pop_pools' => $pop_pools, |
115
|
|
|
'proxied' => $proxied, |
116
|
|
|
]; |
117
|
|
|
|
118
|
|
|
return $this->patch('/zones/'.$zone_identifier.'/load_balancers/'.$identifier, $data); |
119
|
|
|
} |
120
|
|
|
|
121
|
|
|
/** |
122
|
|
|
* Delete a load balancer |
123
|
|
|
* Delete a configured load balancer |
124
|
|
|
* |
125
|
|
|
* @param string $zone_identifier |
126
|
|
|
* @param string $identifier |
127
|
|
|
*/ |
128
|
|
|
public function delete_load_balancer($zone_identifier, $identifier) |
129
|
|
|
{ |
130
|
|
|
return $this->delete('/zones/'.$zone_identifier.'/load_balancers/'.$identifier); |
131
|
|
|
} |
132
|
|
|
} |
133
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.