Skip to content

Commit 25430b4

Browse files
authored
Merge pull request #74 from CyberfusionIO/feature/1.198.2
Update to 1.198.2
2 parents 24e3b8c + 4b58d60 commit 25430b4

21 files changed

+1528
-34
lines changed

CHANGELOG.md

+30
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
66
this package and not the cluster API. See the changelog of the [cluster API](https://cluster-api.cyberfusion.nl/redoc#section/Changelog)
77
for detailed information.
88

9+
## [1.102.0]
10+
11+
### Added
12+
13+
- CertificateManagers: Add restore endpoint.
14+
- Clusters: Add common properties endpoint.
15+
- Clusters: Add create endpoint.
16+
- Clusters: Add update endpoint.
17+
- Clusters: Add destroy endpoint.
18+
- Crons: Add `timeout_seconds`.
19+
- Databases: Add update endpoint.
20+
- HAProxy Listens: Add completely new endpoints.
21+
- HAProxy Listens To Nodes: Add completely new endpoints.
22+
- Nodes: Add create endpoint.
23+
- Nodes: Add update endpoint.
24+
- Nodes: Add destroy endpoint.
25+
- Nodes: Add `maldet` node group.
26+
- SecurityTxtPolicies: Add completely new endpoints.
27+
28+
### Changed
29+
30+
- Clusters: Change `customer_id` validation.
31+
- Update to [API version 1.198.2](https://cluster-api.cyberfusion.nl/redoc#section/Changelog/1.198.2-2023-09-20).
32+
33+
### Removed
34+
35+
- Clusters: Remove `name` fields.
36+
- Nodes: Remove `hostname` field.
37+
- Nodes: Remove `Main` node group.
38+
939
## [1.101.2]
1040

1141
### Fixed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Client for the [Cyberfusion Cluster API](https://cluster-api.cyberfusion.nl/).
44

5-
This client was built for and tested on the **1.187.1** version of the API.
5+
This client was built for and tested on the **1.198.2** version of the API.
66

77
## Support
88

src/Client.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Client implements ClientContract
1717
{
1818
private const CONNECT_TIMEOUT = 60;
1919
private const TIMEOUT = 180;
20-
private const VERSION = '1.101.2';
20+
private const VERSION = '1.102.0';
2121
private const USER_AGENT = 'cyberfusion-cluster-api-client/' . self::VERSION;
2222
private GuzzleClient $httpClient;
2323

src/Endpoints/CertificateManagers.php

+23-8
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,8 @@ public function create(CertificateManager $certificateManager): Response
9090
return $response;
9191
}
9292

93-
$certificateManager = (new CertificateManager())->fromArray($response->getData());
94-
9593
return $response->setData([
96-
'certificateManager' => $certificateManager,
94+
'certificateManager' => (new CertificateManager())->fromArray($response->getData()),
9795
]);
9896
}
9997

@@ -136,10 +134,29 @@ public function update(CertificateManager $certificateManager): Response
136134
return $response;
137135
}
138136

139-
$certificateManager = (new CertificateManager())->fromArray($response->getData());
137+
return $response->setData([
138+
'certificateManager' => (new CertificateManager())->fromArray($response->getData()),
139+
]);
140+
}
141+
142+
/**
143+
* @throws RequestException
144+
*/
145+
public function restore(int $id): Response
146+
{
147+
$request = (new Request())
148+
->setMethod(Request::METHOD_POST)
149+
->setUrl(sprintf('certificate-managers/%d/restore', $id));
150+
151+
$response = $this
152+
->client
153+
->request($request);
154+
if (!$response->isSuccess()) {
155+
return $response;
156+
}
140157

141158
return $response->setData([
142-
'certificateManager' => $certificateManager,
159+
'certificateManager' => (new CertificateManager())->fromArray($response->getData()),
143160
]);
144161
}
145162

@@ -173,10 +190,8 @@ public function request(int $id): Response
173190
return $response;
174191
}
175192

176-
$taskCollection = (new TaskCollection())->fromArray($response->getData());
177-
178193
return $response->setData([
179-
'taskCollection' => $taskCollection,
194+
'taskCollection' => (new TaskCollection())->fromArray($response->getData()),
180195
]);
181196
}
182197
}

src/Endpoints/Clusters.php

+195
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Cyberfusion\ClusterApi\Enums\TimeUnit;
66
use Cyberfusion\ClusterApi\Exceptions\RequestException;
77
use Cyberfusion\ClusterApi\Models\Cluster;
8+
use Cyberfusion\ClusterApi\Models\ClusterCommonProperties;
89
use Cyberfusion\ClusterApi\Models\UnixUsersHomeDirectoryUsage;
910
use Cyberfusion\ClusterApi\Request;
1011
use Cyberfusion\ClusterApi\Response;
@@ -62,6 +63,182 @@ public function get(int $id): Response
6263
]);
6364
}
6465

66+
/**
67+
* @throws RequestException
68+
*/
69+
public function create(Cluster $cluster): Response
70+
{
71+
$this->validateRequired($cluster, 'create', [
72+
'groups',
73+
'unix_user_home_directory',
74+
'php_versions',
75+
'mariadb_version',
76+
'nodejs_version',
77+
'postgresql_version',
78+
'mariadb_cluster_name',
79+
'custom_php_modules_names',
80+
'php_settings',
81+
'php_ioncube_enabled',
82+
'kernelcare_license_key',
83+
'redis_password',
84+
'redis_memory_limit',
85+
'php_sessions_spread_enabled',
86+
'nodejs_versions',
87+
'description',
88+
'wordpress_toolkit_enabled',
89+
'automatic_borg_repositories_prune_enabled',
90+
'malware_toolkit_enabled',
91+
'sync_toolkit_enabled',
92+
'bubblewrap_toolkit_enabled',
93+
'malware_toolkit_scans_enabled',
94+
'database_toolkit_enabled',
95+
'mariadb_backup_interval',
96+
'postgresql_backup_interval',
97+
'customer_id',
98+
]);
99+
100+
$request = (new Request())
101+
->setMethod(Request::METHOD_POST)
102+
->setUrl('clusters')
103+
->setBody(
104+
$this->filterFields($cluster->toArray(), [
105+
'groups',
106+
'unix_user_home_directory',
107+
'php_versions',
108+
'mariadb_version',
109+
'nodejs_version',
110+
'postgresql_version',
111+
'mariadb_cluster_name',
112+
'custom_php_modules_names',
113+
'php_settings',
114+
'php_ioncube_enabled',
115+
'kernelcare_license_key',
116+
'redis_password',
117+
'redis_memory_limit',
118+
'php_sessions_spread_enabled',
119+
'nodejs_versions',
120+
'description',
121+
'wordpress_toolkit_enabled',
122+
'automatic_borg_repositories_prune_enabled',
123+
'malware_toolkit_enabled',
124+
'sync_toolkit_enabled',
125+
'bubblewrap_toolkit_enabled',
126+
'malware_toolkit_scans_enabled',
127+
'database_toolkit_enabled',
128+
'mariadb_backup_interval',
129+
'postgresql_backup_interval',
130+
'customer_id',
131+
])
132+
);
133+
134+
$response = $this
135+
->client
136+
->request($request);
137+
if (!$response->isSuccess()) {
138+
return $response;
139+
}
140+
141+
return $response->setData([
142+
'cluster' => (new Cluster())->fromArray($response->getData()),
143+
]);
144+
}
145+
146+
/**
147+
* @throws RequestException
148+
*/
149+
public function update(Cluster $cluster): Response
150+
{
151+
$this->validateRequired($cluster, 'update', [
152+
'groups',
153+
'unix_user_home_directory',
154+
'php_versions',
155+
'mariadb_version',
156+
'nodejs_version',
157+
'postgresql_version',
158+
'mariadb_cluster_name',
159+
'custom_php_modules_names',
160+
'php_settings',
161+
'php_ioncube_enabled',
162+
'kernelcare_license_key',
163+
'redis_password',
164+
'redis_memory_limit',
165+
'php_sessions_spread_enabled',
166+
'nodejs_versions',
167+
'description',
168+
'wordpress_toolkit_enabled',
169+
'automatic_borg_repositories_prune_enabled',
170+
'malware_toolkit_enabled',
171+
'sync_toolkit_enabled',
172+
'bubblewrap_toolkit_enabled',
173+
'malware_toolkit_scans_enabled',
174+
'database_toolkit_enabled',
175+
'mariadb_backup_interval',
176+
'postgresql_backup_interval',
177+
'customer_id',
178+
'id',
179+
]);
180+
181+
$request = (new Request())
182+
->setMethod(Request::METHOD_PUT)
183+
->setUrl(sprintf('clusters/%d', $cluster->getId()))
184+
->setBody(
185+
$this->filterFields($cluster->toArray(), [
186+
'groups',
187+
'unix_user_home_directory',
188+
'php_versions',
189+
'mariadb_version',
190+
'nodejs_version',
191+
'postgresql_version',
192+
'mariadb_cluster_name',
193+
'custom_php_modules_names',
194+
'php_settings',
195+
'php_ioncube_enabled',
196+
'kernelcare_license_key',
197+
'redis_password',
198+
'redis_memory_limit',
199+
'php_sessions_spread_enabled',
200+
'nodejs_versions',
201+
'description',
202+
'wordpress_toolkit_enabled',
203+
'automatic_borg_repositories_prune_enabled',
204+
'malware_toolkit_enabled',
205+
'sync_toolkit_enabled',
206+
'bubblewrap_toolkit_enabled',
207+
'malware_toolkit_scans_enabled',
208+
'database_toolkit_enabled',
209+
'mariadb_backup_interval',
210+
'postgresql_backup_interval',
211+
'customer_id',
212+
'id',
213+
])
214+
);
215+
216+
$response = $this
217+
->client
218+
->request($request);
219+
if (!$response->isSuccess()) {
220+
return $response;
221+
}
222+
223+
return $response->setData([
224+
'cluster' => (new Cluster())->fromArray($response->getData()),
225+
]);
226+
}
227+
228+
/**
229+
* @throws RequestException
230+
*/
231+
public function delete(int $id): Response
232+
{
233+
$request = (new Request())
234+
->setMethod(Request::METHOD_DELETE)
235+
->setUrl(sprintf('clusters/%d', $id));
236+
237+
return $this
238+
->client
239+
->request($request);
240+
}
241+
65242
/**
66243
* @throws RequestException
67244
*/
@@ -129,4 +306,22 @@ public function borgSshKey(int $id): Response
129306
'publicKey' => $response->getData('public_key'),
130307
]);
131308
}
309+
310+
public function commonProperties(): Response
311+
{
312+
$request = (new Request())
313+
->setMethod(Request::METHOD_GET)
314+
->setUrl('clusters/common-properties');
315+
316+
$response = $this
317+
->client
318+
->request($request);
319+
if (!$response->isSuccess()) {
320+
return $response;
321+
}
322+
323+
return $response->setData([
324+
'commonProperties' => (new ClusterCommonProperties())->fromArray($response->getData()),
325+
]);
326+
}
132327
}

src/Endpoints/Crons.php

+2
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public function create(Cron $cron): Response
8484
'node_id',
8585
'error_count',
8686
'random_delay_max_seconds',
87+
'timeout_seconds',
8788
'locking_enabled',
8889
'is_active',
8990
])
@@ -131,6 +132,7 @@ public function update(Cron $cron): Response
131132
'node_id',
132133
'error_count',
133134
'random_delay_max_seconds',
135+
'timeout_seconds',
134136
'locking_enabled',
135137
'is_active',
136138
'id',

src/Endpoints/Databases.php

+40
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,46 @@ public function create(Database $database): Response
103103
]);
104104
}
105105

106+
/**
107+
* @throws RequestException
108+
*/
109+
public function update(Database $database): Response
110+
{
111+
$this->validateRequired($database, 'update', [
112+
'name',
113+
'server_software_name',
114+
'optimizing_enabled',
115+
'backups_enabled',
116+
'id',
117+
'cluster_id',
118+
]);
119+
120+
$request = (new Request())
121+
->setMethod(Request::METHOD_PUT)
122+
->setUrl(sprintf('databases/%d', $database->getId()))
123+
->setBody(
124+
$this->filterFields($database->toArray(), [
125+
'name',
126+
'server_software_name',
127+
'optimizing_enabled',
128+
'backups_enabled',
129+
'id',
130+
'cluster_id',
131+
])
132+
);
133+
134+
$response = $this
135+
->client
136+
->request($request);
137+
if (!$response->isSuccess()) {
138+
return $response;
139+
}
140+
141+
return $response->setData([
142+
'database' => (new Database())->fromArray($response->getData()),
143+
]);
144+
}
145+
106146
/**
107147
* @throws RequestException
108148
*/

0 commit comments

Comments
 (0)