python3-core-api-client 0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. cyberfusion/CoreApiClient/__init__.py +0 -0
  2. cyberfusion/CoreApiClient/_encoders.py +7 -0
  3. cyberfusion/CoreApiClient/connector.py +382 -0
  4. cyberfusion/CoreApiClient/exceptions.py +13 -0
  5. cyberfusion/CoreApiClient/http.py +21 -0
  6. cyberfusion/CoreApiClient/interfaces.py +9 -0
  7. cyberfusion/CoreApiClient/models.py +5350 -0
  8. cyberfusion/CoreApiClient/resources/__init__.py +99 -0
  9. cyberfusion/CoreApiClient/resources/basic_authentication_realms.py +85 -0
  10. cyberfusion/CoreApiClient/resources/borg_archives.py +144 -0
  11. cyberfusion/CoreApiClient/resources/borg_repositories.py +134 -0
  12. cyberfusion/CoreApiClient/resources/certificate_managers.py +99 -0
  13. cyberfusion/CoreApiClient/resources/certificates.py +63 -0
  14. cyberfusion/CoreApiClient/resources/clusters.py +233 -0
  15. cyberfusion/CoreApiClient/resources/cmses.py +289 -0
  16. cyberfusion/CoreApiClient/resources/crons.py +76 -0
  17. cyberfusion/CoreApiClient/resources/custom_config_snippets.py +88 -0
  18. cyberfusion/CoreApiClient/resources/custom_configs.py +82 -0
  19. cyberfusion/CoreApiClient/resources/customers.py +97 -0
  20. cyberfusion/CoreApiClient/resources/daemons.py +76 -0
  21. cyberfusion/CoreApiClient/resources/database_user_grants.py +66 -0
  22. cyberfusion/CoreApiClient/resources/database_users.py +82 -0
  23. cyberfusion/CoreApiClient/resources/databases.py +140 -0
  24. cyberfusion/CoreApiClient/resources/domain_routers.py +43 -0
  25. cyberfusion/CoreApiClient/resources/firewall_groups.py +82 -0
  26. cyberfusion/CoreApiClient/resources/firewall_rules.py +67 -0
  27. cyberfusion/CoreApiClient/resources/fpm_pools.py +110 -0
  28. cyberfusion/CoreApiClient/resources/ftp_users.py +89 -0
  29. cyberfusion/CoreApiClient/resources/haproxy_listens.py +67 -0
  30. cyberfusion/CoreApiClient/resources/haproxy_listens_to_nodes.py +70 -0
  31. cyberfusion/CoreApiClient/resources/health.py +14 -0
  32. cyberfusion/CoreApiClient/resources/hosts_entries.py +63 -0
  33. cyberfusion/CoreApiClient/resources/htpasswd_files.py +67 -0
  34. cyberfusion/CoreApiClient/resources/htpasswd_users.py +82 -0
  35. cyberfusion/CoreApiClient/resources/login.py +28 -0
  36. cyberfusion/CoreApiClient/resources/logs.py +50 -0
  37. cyberfusion/CoreApiClient/resources/mail_accounts.py +105 -0
  38. cyberfusion/CoreApiClient/resources/mail_aliases.py +79 -0
  39. cyberfusion/CoreApiClient/resources/mail_domains.py +79 -0
  40. cyberfusion/CoreApiClient/resources/mail_hostnames.py +82 -0
  41. cyberfusion/CoreApiClient/resources/malwares.py +53 -0
  42. cyberfusion/CoreApiClient/resources/mariadb_encryption_keys.py +56 -0
  43. cyberfusion/CoreApiClient/resources/node_add_ons.py +74 -0
  44. cyberfusion/CoreApiClient/resources/nodes.py +112 -0
  45. cyberfusion/CoreApiClient/resources/passenger_apps.py +99 -0
  46. cyberfusion/CoreApiClient/resources/redis_instances.py +85 -0
  47. cyberfusion/CoreApiClient/resources/root_ssh_keys.py +77 -0
  48. cyberfusion/CoreApiClient/resources/security_txt_policies.py +85 -0
  49. cyberfusion/CoreApiClient/resources/sites.py +29 -0
  50. cyberfusion/CoreApiClient/resources/ssh_keys.py +77 -0
  51. cyberfusion/CoreApiClient/resources/task_collections.py +38 -0
  52. cyberfusion/CoreApiClient/resources/tombstones.py +29 -0
  53. cyberfusion/CoreApiClient/resources/unix_users.py +122 -0
  54. cyberfusion/CoreApiClient/resources/url_redirects.py +79 -0
  55. cyberfusion/CoreApiClient/resources/virtual_hosts.py +120 -0
  56. python3_core_api_client-0.1.dist-info/METADATA +236 -0
  57. python3_core_api_client-0.1.dist-info/RECORD +59 -0
  58. python3_core_api_client-0.1.dist-info/WHEEL +5 -0
  59. python3_core_api_client-0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,50 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class Logs(Resource):
8
+ def list_access_logs(
9
+ self,
10
+ *,
11
+ virtual_host_id: int,
12
+ timestamp: Optional[str] = None,
13
+ sort: Optional[models.LogAccessResource] = None,
14
+ limit: Optional[int] = None,
15
+ ) -> list[models.LogAccessResource]:
16
+ return [
17
+ models.LogAccessResource.construct(**model)
18
+ for model in self.api_connector.send_or_fail(
19
+ "GET",
20
+ f"/api/v1/logs/access/{virtual_host_id}",
21
+ data=None,
22
+ query_parameters={
23
+ "timestamp": timestamp,
24
+ "sort": sort,
25
+ "limit": limit,
26
+ },
27
+ ).json
28
+ ]
29
+
30
+ def list_error_logs(
31
+ self,
32
+ *,
33
+ virtual_host_id: int,
34
+ timestamp: Optional[str] = None,
35
+ sort: Optional[models.LogErrorResource] = None,
36
+ limit: Optional[int] = None,
37
+ ) -> list[models.LogErrorResource]:
38
+ return [
39
+ models.LogErrorResource.construct(**model)
40
+ for model in self.api_connector.send_or_fail(
41
+ "GET",
42
+ f"/api/v1/logs/error/{virtual_host_id}",
43
+ data=None,
44
+ query_parameters={
45
+ "timestamp": timestamp,
46
+ "sort": sort,
47
+ "limit": limit,
48
+ },
49
+ ).json
50
+ ]
@@ -0,0 +1,105 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class MailAccounts(Resource):
8
+ def create_mail_account(
9
+ self,
10
+ request: models.MailAccountCreateRequest,
11
+ ) -> models.MailAccountResource:
12
+ return models.MailAccountResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/mail-accounts",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_mail_accounts(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.MailAccountResource]:
29
+ return [
30
+ models.MailAccountResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/mail-accounts",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_mail_account(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.MailAccountResource:
49
+ return models.MailAccountResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/mail-accounts/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_mail_account(
56
+ self,
57
+ request: models.MailAccountUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.MailAccountResource:
61
+ return models.MailAccountResource.construct(
62
+ **self.api_connector.send_or_fail(
63
+ "PATCH",
64
+ f"/api/v1/mail-accounts/{id_}",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
67
+ ).json
68
+ )
69
+
70
+ def delete_mail_account(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ delete_on_cluster: Optional[bool] = None,
75
+ ) -> models.DetailMessage:
76
+ return models.DetailMessage.construct(
77
+ **self.api_connector.send_or_fail(
78
+ "DELETE",
79
+ f"/api/v1/mail-accounts/{id_}",
80
+ data=None,
81
+ query_parameters={
82
+ "delete_on_cluster": delete_on_cluster,
83
+ },
84
+ ).json
85
+ )
86
+
87
+ def list_mail_account_usages(
88
+ self,
89
+ *,
90
+ mail_account_id: int,
91
+ timestamp: str,
92
+ time_unit: Optional[models.MailAccountUsageResource] = None,
93
+ ) -> list[models.MailAccountUsageResource]:
94
+ return [
95
+ models.MailAccountUsageResource.construct(**model)
96
+ for model in self.api_connector.send_or_fail(
97
+ "GET",
98
+ f"/api/v1/mail-accounts/usages/{mail_account_id}",
99
+ data=None,
100
+ query_parameters={
101
+ "timestamp": timestamp,
102
+ "time_unit": time_unit,
103
+ },
104
+ ).json
105
+ ]
@@ -0,0 +1,79 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class MailAliases(Resource):
8
+ def create_mail_alias(
9
+ self,
10
+ request: models.MailAliasCreateRequest,
11
+ ) -> models.MailAliasResource:
12
+ return models.MailAliasResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/mail-aliases",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_mail_aliases(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.MailAliasResource]:
29
+ return [
30
+ models.MailAliasResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/mail-aliases",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_mail_alias(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.MailAliasResource:
49
+ return models.MailAliasResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/mail-aliases/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_mail_alias(
56
+ self,
57
+ request: models.MailAliasUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.MailAliasResource:
61
+ return models.MailAliasResource.construct(
62
+ **self.api_connector.send_or_fail(
63
+ "PATCH",
64
+ f"/api/v1/mail-aliases/{id_}",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
67
+ ).json
68
+ )
69
+
70
+ def delete_mail_alias(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ ) -> models.DetailMessage:
75
+ return models.DetailMessage.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "DELETE", f"/api/v1/mail-aliases/{id_}", data=None, query_parameters={}
78
+ ).json
79
+ )
@@ -0,0 +1,79 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class MailDomains(Resource):
8
+ def create_mail_domain(
9
+ self,
10
+ request: models.MailDomainCreateRequest,
11
+ ) -> models.MailDomainResource:
12
+ return models.MailDomainResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/mail-domains",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_mail_domains(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.MailDomainResource]:
29
+ return [
30
+ models.MailDomainResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/mail-domains",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_mail_domain(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.MailDomainResource:
49
+ return models.MailDomainResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/mail-domains/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_mail_domain(
56
+ self,
57
+ request: models.MailDomainUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.MailDomainResource:
61
+ return models.MailDomainResource.construct(
62
+ **self.api_connector.send_or_fail(
63
+ "PATCH",
64
+ f"/api/v1/mail-domains/{id_}",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
67
+ ).json
68
+ )
69
+
70
+ def delete_mail_domain(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ ) -> models.DetailMessage:
75
+ return models.DetailMessage.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "DELETE", f"/api/v1/mail-domains/{id_}", data=None, query_parameters={}
78
+ ).json
79
+ )
@@ -0,0 +1,82 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class MailHostnames(Resource):
8
+ def create_mail_hostname(
9
+ self,
10
+ request: models.MailHostnameCreateRequest,
11
+ ) -> models.MailHostnameResource:
12
+ return models.MailHostnameResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/mail-hostnames",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_mail_hostnames(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.MailHostnameResource]:
29
+ return [
30
+ models.MailHostnameResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/mail-hostnames",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_mail_hostname(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.MailHostnameResource:
49
+ return models.MailHostnameResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/mail-hostnames/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_mail_hostname(
56
+ self,
57
+ request: models.MailHostnameUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.MailHostnameResource:
61
+ return models.MailHostnameResource.construct(
62
+ **self.api_connector.send_or_fail(
63
+ "PATCH",
64
+ f"/api/v1/mail-hostnames/{id_}",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
67
+ ).json
68
+ )
69
+
70
+ def delete_mail_hostname(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ ) -> models.DetailMessage:
75
+ return models.DetailMessage.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "DELETE",
78
+ f"/api/v1/mail-hostnames/{id_}",
79
+ data=None,
80
+ query_parameters={},
81
+ ).json
82
+ )
@@ -0,0 +1,53 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class Malwares(Resource):
8
+ def list_malwares(
9
+ self,
10
+ *,
11
+ skip: Optional[int] = None,
12
+ limit: Optional[int] = None,
13
+ filter_: Optional[List[str]] = None,
14
+ sort: Optional[List[str]] = None,
15
+ ) -> list[models.MalwareResource]:
16
+ return [
17
+ models.MalwareResource.construct(**model)
18
+ for model in self.api_connector.send_or_fail(
19
+ "GET",
20
+ "/api/v1/malwares",
21
+ data=None,
22
+ query_parameters={
23
+ "skip": skip,
24
+ "limit": limit,
25
+ "filter": filter_,
26
+ "sort": sort,
27
+ },
28
+ ).json
29
+ ]
30
+
31
+ def list_malwares_for_unix_users(
32
+ self,
33
+ *,
34
+ unix_user_id: int,
35
+ skip: Optional[int] = None,
36
+ limit: Optional[int] = None,
37
+ filter_: Optional[List[str]] = None,
38
+ sort: Optional[List[str]] = None,
39
+ ) -> list[models.MalwareResource]:
40
+ return [
41
+ models.MalwareResource.construct(**model)
42
+ for model in self.api_connector.send_or_fail(
43
+ "GET",
44
+ f"/api/v1/malwares/{unix_user_id}",
45
+ data=None,
46
+ query_parameters={
47
+ "skip": skip,
48
+ "limit": limit,
49
+ "filter": filter_,
50
+ "sort": sort,
51
+ },
52
+ ).json
53
+ ]
@@ -0,0 +1,56 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class MariaDBEncryptionKeys(Resource):
8
+ def create_mariadb_encryption_key(
9
+ self,
10
+ request: models.MariaDBEncryptionKeyCreateRequest,
11
+ ) -> models.MariaDBEncryptionKeyResource:
12
+ return models.MariaDBEncryptionKeyResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/mariadb-encryption-keys",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_mariadb_encryption_keys(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.MariaDBEncryptionKeyResource]:
29
+ return [
30
+ models.MariaDBEncryptionKeyResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/mariadb-encryption-keys",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_mariadb_encryption_key(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.MariaDBEncryptionKeyResource:
49
+ return models.MariaDBEncryptionKeyResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET",
52
+ f"/api/v1/mariadb-encryption-keys/{id_}",
53
+ data=None,
54
+ query_parameters={},
55
+ ).json
56
+ )
@@ -0,0 +1,74 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class NodeAddOns(Resource):
8
+ def create_node_add_on(
9
+ self,
10
+ request: models.NodeAddOnCreateRequest,
11
+ ) -> models.TaskCollectionResource:
12
+ return models.TaskCollectionResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/node-add-ons",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_node_add_ons(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.NodeAddOnResource]:
29
+ return [
30
+ models.NodeAddOnResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/node-add-ons",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def get_node_add_on_products(
45
+ self,
46
+ ) -> list[models.NodeAddOnProduct]:
47
+ return [
48
+ models.NodeAddOnProduct.construct(**model)
49
+ for model in self.api_connector.send_or_fail(
50
+ "GET", "/api/v1/node-add-ons/products", data=None, query_parameters={}
51
+ ).json
52
+ ]
53
+
54
+ def read_node_add_on(
55
+ self,
56
+ *,
57
+ id_: int,
58
+ ) -> models.NodeAddOnResource:
59
+ return models.NodeAddOnResource.construct(
60
+ **self.api_connector.send_or_fail(
61
+ "GET", f"/api/v1/node-add-ons/{id_}", data=None, query_parameters={}
62
+ ).json
63
+ )
64
+
65
+ def delete_node_add_on(
66
+ self,
67
+ *,
68
+ id_: int,
69
+ ) -> models.DetailMessage:
70
+ return models.DetailMessage.construct(
71
+ **self.api_connector.send_or_fail(
72
+ "DELETE", f"/api/v1/node-add-ons/{id_}", data=None, query_parameters={}
73
+ ).json
74
+ )
@@ -0,0 +1,112 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class Nodes(Resource):
8
+ def create_node(
9
+ self,
10
+ request: models.NodeCreateRequest,
11
+ *,
12
+ callback_url: Optional[str] = None,
13
+ ) -> models.TaskCollectionResource:
14
+ return models.TaskCollectionResource.construct(
15
+ **self.api_connector.send_or_fail(
16
+ "POST",
17
+ "/api/v1/nodes",
18
+ data=request.dict(),
19
+ query_parameters={
20
+ "callback_url": callback_url,
21
+ },
22
+ ).json
23
+ )
24
+
25
+ def list_nodes(
26
+ self,
27
+ *,
28
+ skip: Optional[int] = None,
29
+ limit: Optional[int] = None,
30
+ filter_: Optional[List[str]] = None,
31
+ sort: Optional[List[str]] = None,
32
+ ) -> list[models.NodeResource]:
33
+ return [
34
+ models.NodeResource.construct(**model)
35
+ for model in self.api_connector.send_or_fail(
36
+ "GET",
37
+ "/api/v1/nodes",
38
+ data=None,
39
+ query_parameters={
40
+ "skip": skip,
41
+ "limit": limit,
42
+ "filter": filter_,
43
+ "sort": sort,
44
+ },
45
+ ).json
46
+ ]
47
+
48
+ def get_node_products(
49
+ self,
50
+ ) -> list[models.NodeProduct]:
51
+ return [
52
+ models.NodeProduct.construct(**model)
53
+ for model in self.api_connector.send_or_fail(
54
+ "GET", "/api/v1/nodes/products", data=None, query_parameters={}
55
+ ).json
56
+ ]
57
+
58
+ def read_node(
59
+ self,
60
+ *,
61
+ id_: int,
62
+ ) -> models.NodeResource:
63
+ return models.NodeResource.construct(
64
+ **self.api_connector.send_or_fail(
65
+ "GET", f"/api/v1/nodes/{id_}", data=None, query_parameters={}
66
+ ).json
67
+ )
68
+
69
+ def update_node(
70
+ self,
71
+ request: models.NodeUpdateRequest,
72
+ *,
73
+ id_: int,
74
+ ) -> models.NodeResource:
75
+ return models.NodeResource.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "PATCH",
78
+ f"/api/v1/nodes/{id_}",
79
+ data=request.dict(exclude_unset=True),
80
+ query_parameters={},
81
+ ).json
82
+ )
83
+
84
+ def delete_node(
85
+ self,
86
+ *,
87
+ id_: int,
88
+ ) -> models.DetailMessage:
89
+ return models.DetailMessage.construct(
90
+ **self.api_connector.send_or_fail(
91
+ "DELETE", f"/api/v1/nodes/{id_}", data=None, query_parameters={}
92
+ ).json
93
+ )
94
+
95
+ def upgrade_downgrade_node(
96
+ self,
97
+ *,
98
+ id_: int,
99
+ callback_url: Optional[str] = None,
100
+ product: str,
101
+ ) -> models.TaskCollectionResource:
102
+ return models.TaskCollectionResource.construct(
103
+ **self.api_connector.send_or_fail(
104
+ "POST",
105
+ f"/api/v1/nodes/{id_}/xgrade",
106
+ data=None,
107
+ query_parameters={
108
+ "callback_url": callback_url,
109
+ "product": product,
110
+ },
111
+ ).json
112
+ )