linode-api4 5.44.0__tar.gz → 5.45.0__tar.gz

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 (386) hide show
  1. {linode_api4-5.44.0/linode_api4.egg-info → linode_api4-5.45.0}/PKG-INFO +1 -1
  2. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/linode.py +5 -0
  3. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/monitor.py +214 -15
  4. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/networking.py +124 -12
  5. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/nodebalancer.py +7 -1
  6. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/object_storage.py +1 -1
  7. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/tag.py +7 -1
  8. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/linode.py +14 -5
  9. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/monitor.py +389 -1
  10. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/networking.py +68 -0
  11. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/object_storage.py +1 -1
  12. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/region.py +2 -0
  13. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/tag.py +4 -1
  14. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/version.py +1 -1
  15. {linode_api4-5.44.0 → linode_api4-5.45.0/linode_api4.egg-info}/PKG-INFO +1 -1
  16. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4.egg-info/SOURCES.txt +10 -0
  17. {linode_api4-5.44.0 → linode_api4-5.45.0}/pyproject.toml +2 -0
  18. linode_api4-5.45.0/test/fixtures/monitor_dashboards.json +404 -0
  19. linode_api4-5.45.0/test/fixtures/monitor_dashboards_1.json +83 -0
  20. linode_api4-5.45.0/test/fixtures/monitor_services_dbaas_dashboards.json +90 -0
  21. linode_api4-5.45.0/test/fixtures/monitor_streams.json +31 -0
  22. linode_api4-5.45.0/test/fixtures/monitor_streams_1_history.json +31 -0
  23. linode_api4-5.45.0/test/fixtures/monitor_streams_2.json +43 -0
  24. linode_api4-5.45.0/test/fixtures/monitor_streams_3.json +29 -0
  25. linode_api4-5.45.0/test/fixtures/monitor_streams_destinations.json +24 -0
  26. linode_api4-5.45.0/test/fixtures/monitor_streams_destinations_1_history.json +24 -0
  27. linode_api4-5.45.0/test/fixtures/monitor_streams_destinations_2.json +36 -0
  28. linode_api4-5.45.0/test/fixtures/networking_reserved_ips.json +35 -0
  29. linode_api4-5.45.0/test/fixtures/networking_reserved_ips_types.json +27 -0
  30. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/conftest.py +69 -10
  31. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/linode_client/test_linode_client.py +34 -36
  32. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/account/test_account.py +2 -1
  33. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/domain/test_domain.py +1 -2
  34. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/linode/interfaces/test_interfaces.py +99 -0
  35. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/linode/test_linode.py +42 -1
  36. linode_api4-5.45.0/test/integration/models/monitor/test_monitor_logs.py +521 -0
  37. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/networking/test_networking.py +209 -2
  38. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/nodebalancer/test_nodebalancer.py +28 -0
  39. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/placement/test_placement.py +1 -1
  40. linode_api4-5.45.0/test/integration/models/tag/test_tag.py +51 -0
  41. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/vpc/test_vpc.py +3 -2
  42. linode_api4-5.45.0/test/unit/groups/networking_test.py +240 -0
  43. linode_api4-5.45.0/test/unit/objects/monitor_test.py +761 -0
  44. linode_api4-5.45.0/test/unit/objects/networking_test.py +457 -0
  45. linode_api4-5.45.0/test/unit/objects/tag_test.py +103 -0
  46. linode_api4-5.44.0/test/fixtures/monitor_dashboards.json +0 -41
  47. linode_api4-5.44.0/test/fixtures/monitor_dashboards_1.json +0 -34
  48. linode_api4-5.44.0/test/fixtures/monitor_services_dbaas_dashboards.json +0 -48
  49. linode_api4-5.44.0/test/integration/models/tag/test_tag.py +0 -22
  50. linode_api4-5.44.0/test/unit/groups/networking_test.py +0 -17
  51. linode_api4-5.44.0/test/unit/objects/monitor_test.py +0 -171
  52. linode_api4-5.44.0/test/unit/objects/networking_test.py +0 -173
  53. linode_api4-5.44.0/test/unit/objects/tag_test.py +0 -46
  54. {linode_api4-5.44.0 → linode_api4-5.45.0}/LICENSE +0 -0
  55. {linode_api4-5.44.0 → linode_api4-5.45.0}/MANIFEST.in +0 -0
  56. {linode_api4-5.44.0 → linode_api4-5.45.0}/README.rst +0 -0
  57. {linode_api4-5.44.0 → linode_api4-5.45.0}/examples/install-on-linode/app.py +0 -0
  58. {linode_api4-5.44.0 → linode_api4-5.45.0}/examples/install-on-linode/make_stackscript.py +0 -0
  59. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/__init__.py +0 -0
  60. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/common.py +0 -0
  61. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/errors.py +0 -0
  62. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/__init__.py +0 -0
  63. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/account.py +0 -0
  64. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/beta.py +0 -0
  65. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/database.py +0 -0
  66. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/domain.py +0 -0
  67. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/group.py +0 -0
  68. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/image.py +0 -0
  69. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/image_share_group.py +0 -0
  70. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/lke.py +0 -0
  71. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/lke_tier.py +0 -0
  72. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/lock.py +0 -0
  73. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/longview.py +0 -0
  74. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/maintenance.py +0 -0
  75. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/monitor_api.py +0 -0
  76. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/placement.py +0 -0
  77. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/polling.py +0 -0
  78. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/profile.py +0 -0
  79. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/region.py +0 -0
  80. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/support.py +0 -0
  81. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/volume.py +0 -0
  82. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/groups/vpc.py +0 -0
  83. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/linode_client.py +0 -0
  84. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/login_client.py +0 -0
  85. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/__init__.py +0 -0
  86. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/account.py +0 -0
  87. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/base.py +0 -0
  88. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/beta.py +0 -0
  89. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/database.py +0 -0
  90. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/dbase.py +0 -0
  91. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/domain.py +0 -0
  92. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/filtering.py +0 -0
  93. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/image.py +0 -0
  94. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/image_share_group.py +0 -0
  95. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/linode_interfaces.py +0 -0
  96. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/lke.py +0 -0
  97. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/lock.py +0 -0
  98. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/longview.py +0 -0
  99. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/monitor_api.py +0 -0
  100. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/nodebalancer.py +0 -0
  101. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/placement.py +0 -0
  102. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/profile.py +0 -0
  103. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/serializable.py +0 -0
  104. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/support.py +0 -0
  105. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/volume.py +0 -0
  106. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/objects/vpc.py +0 -0
  107. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/paginated_list.py +0 -0
  108. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/polling.py +0 -0
  109. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4/util.py +0 -0
  110. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4.egg-info/dependency_links.txt +0 -0
  111. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4.egg-info/requires.txt +0 -0
  112. {linode_api4-5.44.0 → linode_api4-5.45.0}/linode_api4.egg-info/top_level.txt +0 -0
  113. {linode_api4-5.44.0 → linode_api4-5.45.0}/setup.cfg +0 -0
  114. {linode_api4-5.44.0 → linode_api4-5.45.0}/setup.py +0 -0
  115. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/__init__.py +0 -0
  116. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account.json +0 -0
  117. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_availability.json +0 -0
  118. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_availability_us-east.json +0 -0
  119. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_betas.json +0 -0
  120. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_betas_cool.json +0 -0
  121. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_child-accounts.json +0 -0
  122. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_child-accounts_123456.json +0 -0
  123. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_child-accounts_123456_token.json +0 -0
  124. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_events_123.json +0 -0
  125. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_invoices.json +0 -0
  126. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_invoices_123.json +0 -0
  127. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_invoices_123456_items.json +0 -0
  128. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_logins.json +0 -0
  129. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_logins_123.json +0 -0
  130. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_maintenance.json +0 -0
  131. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_notifications.json +0 -0
  132. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_oauth-clients_2737bf16b39ab5d7b4a1.json +0 -0
  133. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_payment-method_123.json +0 -0
  134. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_payment-methods.json +0 -0
  135. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_payments.json +0 -0
  136. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_promo-codes.json +0 -0
  137. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_service-transfers.json +0 -0
  138. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_service-transfers_12345.json +0 -0
  139. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_settings.json +0 -0
  140. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_transfer.json +0 -0
  141. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/account_users_test-user.json +0 -0
  142. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/betas.json +0 -0
  143. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/betas_active.json +0 -0
  144. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_engines.json +0 -0
  145. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_instances.json +0 -0
  146. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_config.json +0 -0
  147. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances.json +0 -0
  148. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances_123_credentials.json +0 -0
  149. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances_123_credentials_reset.json +0 -0
  150. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances_123_patch.json +0 -0
  151. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances_123_resume.json +0 -0
  152. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances_123_ssl.json +0 -0
  153. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_mysql_instances_123_suspend.json +0 -0
  154. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_config.json +0 -0
  155. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances.json +0 -0
  156. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances_123_credentials.json +0 -0
  157. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances_123_credentials_reset.json +0 -0
  158. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances_123_patch.json +0 -0
  159. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances_123_resume.json +0 -0
  160. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances_123_ssl.json +0 -0
  161. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_postgresql_instances_123_suspend.json +0 -0
  162. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/databases_types.json +0 -0
  163. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/domains.json +0 -0
  164. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/domains_12345_clone.json +0 -0
  165. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/domains_12345_records.json +0 -0
  166. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/domains_12345_zone-file.json +0 -0
  167. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/domains_import.json +0 -0
  168. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images.json +0 -0
  169. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_private_1234_sharegroups.json +0 -0
  170. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_private_123_regions.json +0 -0
  171. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_private_1337.json +0 -0
  172. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups.json +0 -0
  173. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_1234.json +0 -0
  174. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_1234_images.json +0 -0
  175. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_1234_images_shared_1.json +0 -0
  176. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_1234_members.json +0 -0
  177. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_1234_members_abc123.json +0 -0
  178. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_tokens.json +0 -0
  179. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_tokens_abc123.json +0 -0
  180. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_tokens_abc123_sharegroup.json +0 -0
  181. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_sharegroups_tokens_abc123_sharegroup_images.json +0 -0
  182. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/images_upload.json +0 -0
  183. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances.json +0 -0
  184. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_backups.json +0 -0
  185. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs.json +0 -0
  186. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs_456789.json +0 -0
  187. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs_456789_interfaces.json +0 -0
  188. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_123.json +0 -0
  189. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_123_put.json +0 -0
  190. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_321.json +0 -0
  191. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_456.json +0 -0
  192. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_disks.json +0 -0
  193. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_disks_12345_clone.json +0 -0
  194. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_firewalls.json +0 -0
  195. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_ips.json +0 -0
  196. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_nodebalancers.json +0 -0
  197. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_transfer.json +0 -0
  198. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_transfer_2023_4.json +0 -0
  199. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_123_volumes.json +0 -0
  200. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124.json +0 -0
  201. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_interfaces.json +0 -0
  202. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_interfaces_123.json +0 -0
  203. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_interfaces_123_firewalls.json +0 -0
  204. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_interfaces_456.json +0 -0
  205. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_interfaces_789.json +0 -0
  206. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_interfaces_settings.json +0 -0
  207. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_instances_124_upgrade-interfaces.json +0 -0
  208. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_stackscripts_10079.json +0 -0
  209. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_types.json +0 -0
  210. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/linode_types_g6-nanode-1.json +0 -0
  211. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters.json +0 -0
  212. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18881.json +0 -0
  213. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18881_control__plane__acl.json +0 -0
  214. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18881_dashboard.json +0 -0
  215. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18881_nodes_123456.json +0 -0
  216. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18881_pools_456.json +0 -0
  217. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18882.json +0 -0
  218. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_clusters_18882_pools_789.json +0 -0
  219. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_tiers_standard_versions.json +0 -0
  220. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_types.json +0 -0
  221. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/lke_versions.json +0 -0
  222. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/locks.json +0 -0
  223. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/locks_1.json +0 -0
  224. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/longview_clients.json +0 -0
  225. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/longview_plan.json +0 -0
  226. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/longview_subscriptions.json +0 -0
  227. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/maintenance_policies.json +0 -0
  228. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/mongodb.json +0 -0
  229. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_alert-channels.json +0 -0
  230. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_alert-definitions.json +0 -0
  231. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services.json +0 -0
  232. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas.json +0 -0
  233. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas_alert-definitions.json +0 -0
  234. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas_alert-definitions_12345.json +0 -0
  235. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas_alert-definitions_12345_entities.json +0 -0
  236. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas_metric-definitions.json +0 -0
  237. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas_metrics.json +0 -0
  238. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_dbaas_token.json +0 -0
  239. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/monitor_services_linode_token.json +0 -0
  240. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/network-transfer_prices.json +0 -0
  241. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls.json +0 -0
  242. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123.json +0 -0
  243. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123_devices.json +0 -0
  244. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123_devices_123.json +0 -0
  245. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123_devices_456.json +0 -0
  246. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123_history.json +0 -0
  247. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123_history_rules_2.json +0 -0
  248. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_123_rules.json +0 -0
  249. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_settings.json +0 -0
  250. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_templates.json +0 -0
  251. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_templates_public.json +0 -0
  252. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_firewalls_templates_vpc.json +0 -0
  253. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_ips_127.0.0.1.json +0 -0
  254. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_ipv6_pools.json +0 -0
  255. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_ipv6_ranges.json +0 -0
  256. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_ipv6_ranges_2600%3A3c01%3A%3A.json +0 -0
  257. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/networking_vlans.json +0 -0
  258. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers.json +0 -0
  259. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_123456.json +0 -0
  260. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_123456_configs.json +0 -0
  261. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_123456_configs_65432_nodes.json +0 -0
  262. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_12345_configs_4567_rebuild.json +0 -0
  263. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_12345_firewalls.json +0 -0
  264. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_12345_stats.json +0 -0
  265. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/nodebalancers_types.json +0 -0
  266. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets.json +0 -0
  267. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east-1.json +0 -0
  268. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket.json +0 -0
  269. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-acl.json +0 -0
  270. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-list.json +0 -0
  271. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-url.json +0 -0
  272. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_ssl.json +0 -0
  273. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_buckets_us-east_example-bucket_access.json +0 -0
  274. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_clusters.json +0 -0
  275. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_global-quotas.json +0 -0
  276. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_global-quotas_obj-access-keys-per-account.json +0 -0
  277. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_global-quotas_obj-access-keys-per-account_usage.json +0 -0
  278. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_keys.json +0 -0
  279. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_quotas.json +0 -0
  280. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_quotas_obj-objects-us-ord-1.json +0 -0
  281. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_quotas_obj-objects-us-ord-1_usage.json +0 -0
  282. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_transfer.json +0 -0
  283. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/object-storage_types.json +0 -0
  284. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/placement_groups.json +0 -0
  285. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/placement_groups_123.json +0 -0
  286. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile.json +0 -0
  287. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_device_123.json +0 -0
  288. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_devices.json +0 -0
  289. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_logins.json +0 -0
  290. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_logins_123.json +0 -0
  291. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_preferences.json +0 -0
  292. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_security-questions.json +0 -0
  293. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/profile_sshkeys.json +0 -0
  294. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/regions.json +0 -0
  295. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/regions_availability.json +0 -0
  296. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/regions_us-east_availability.json +0 -0
  297. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/regions_us-east_vpc-availability.json +0 -0
  298. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/regions_vpc-availability.json +0 -0
  299. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/support_tickets_123.json +0 -0
  300. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/tags.json +0 -0
  301. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/tags_nothing.json +0 -0
  302. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/tags_something.json +0 -0
  303. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/testmappedobj1.json +0 -0
  304. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/volumes.json +0 -0
  305. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/volumes_types.json +0 -0
  306. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/vpcs.json +0 -0
  307. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/vpcs_123456.json +0 -0
  308. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/vpcs_123456_ips.json +0 -0
  309. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/vpcs_123456_subnets.json +0 -0
  310. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/vpcs_123456_subnets_789.json +0 -0
  311. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/fixtures/vpcs_ips.json +0 -0
  312. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/__init__.py +0 -0
  313. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/filters/fixtures.py +0 -0
  314. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/filters/model_filters_test.py +0 -0
  315. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/helpers.py +0 -0
  316. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/linode_client/__init__.py +0 -0
  317. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/linode_client/test_errors.py +0 -0
  318. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/linode_client/test_retry.py +0 -0
  319. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/login_client/test_login_client.py +0 -0
  320. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/__init__.py +0 -0
  321. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/database/helpers.py +0 -0
  322. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/database/test_database.py +0 -0
  323. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/database/test_database_engine_config.py +0 -0
  324. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/firewall/test_firewall.py +0 -0
  325. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/firewall/test_firewall_templates.py +0 -0
  326. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/image/test_image.py +0 -0
  327. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/lke/test_lke.py +0 -0
  328. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/lock/__init__.py +0 -0
  329. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/lock/test_lock.py +0 -0
  330. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/longview/test_longview.py +0 -0
  331. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/maintenance/test_maintenance.py +0 -0
  332. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/monitor/test_monitor.py +0 -0
  333. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/monitor_api/test_monitor_api.py +0 -0
  334. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/object_storage/test_obj.py +0 -0
  335. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/object_storage/test_obj_quotas.py +0 -0
  336. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/profile/test_profile.py +0 -0
  337. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/region/test_region.py +0 -0
  338. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/sharegroups/test_sharegroups.py +0 -0
  339. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/volume/test_blockstorage.py +0 -0
  340. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/integration/models/volume/test_volume.py +0 -0
  341. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/__init__.py +0 -0
  342. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/base.py +0 -0
  343. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/errors_test.py +0 -0
  344. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/fixtures.py +0 -0
  345. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/__init__.py +0 -0
  346. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/database_test.py +0 -0
  347. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/image_share_group_test.py +0 -0
  348. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/image_test.py +0 -0
  349. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/linode_test.py +0 -0
  350. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/lke_test.py +0 -0
  351. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/lke_tier_test.py +0 -0
  352. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/lock_test.py +0 -0
  353. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/monitor_api_test.py +0 -0
  354. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/object_storage_test.py +0 -0
  355. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/placement_test.py +0 -0
  356. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/polling_test.py +0 -0
  357. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/region_test.py +0 -0
  358. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/groups/vpc_test.py +0 -0
  359. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/linode_client_test.py +0 -0
  360. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/login_client_test.py +0 -0
  361. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/account_test.py +0 -0
  362. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/base_test.py +0 -0
  363. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/beta_test.py +0 -0
  364. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/database_test.py +0 -0
  365. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/domain_test.py +0 -0
  366. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/firewall_test.py +0 -0
  367. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/image_share_group_test.py +0 -0
  368. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/image_test.py +0 -0
  369. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/linode_interface_test.py +0 -0
  370. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/linode_test.py +0 -0
  371. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/lke_test.py +0 -0
  372. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/lock_test.py +0 -0
  373. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/longview_test.py +0 -0
  374. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/mapped_object_test.py +0 -0
  375. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/nodebalancers_test.py +0 -0
  376. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/object_storage_test.py +0 -0
  377. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/placement_test.py +0 -0
  378. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/profile_test.py +0 -0
  379. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/property_alias_test.py +0 -0
  380. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/region_test.py +0 -0
  381. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/serializable_test.py +0 -0
  382. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/support_test.py +0 -0
  383. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/volume_test.py +0 -0
  384. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/objects/vpc_test.py +0 -0
  385. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/paginated_list_test.py +0 -0
  386. {linode_api4-5.44.0 → linode_api4-5.45.0}/test/unit/util_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: linode_api4
3
- Version: 5.44.0
3
+ Version: 5.45.0
4
4
  Summary: The official Python SDK for Linode API v4
5
5
  Author-email: Linode <devs@linode.com>
6
6
  License: BSD-3-Clause
@@ -166,6 +166,7 @@ class LinodeGroup(Group):
166
166
  kernel: Optional[str] = None,
167
167
  boot_size: Optional[int] = None,
168
168
  authorized_users: Optional[List[str]] = None,
169
+ ipv4: Optional[List[str]] = None,
169
170
  **kwargs,
170
171
  ):
171
172
  """
@@ -355,6 +356,9 @@ class LinodeGroup(Group):
355
356
  :param boot_size: The size of the boot disk in MB. If provided, this will be used to create
356
357
  the boot disk for the Instance.
357
358
  :type boot_size: int
359
+ :param ipv4: A list of reserved IPv4 addresses to assign to this Instance.
360
+ NOTE: Reserved IP feature may not currently be available to all users.
361
+ :type ipv4: list[str]
358
362
 
359
363
  :returns: A new Instance object
360
364
  :rtype: Instance
@@ -401,6 +405,7 @@ class LinodeGroup(Group):
401
405
  "network_helper": network_helper,
402
406
  "kernel": kernel,
403
407
  "boot_size": boot_size,
408
+ "ipv4": ipv4,
404
409
  }
405
410
 
406
411
  params.update(kwargs)
@@ -8,11 +8,21 @@ from linode_api4.objects import (
8
8
  AlertDefinition,
9
9
  AlertDefinitionEntity,
10
10
  AlertScope,
11
+ LogsDestination,
12
+ LogsDestinationType,
13
+ LogsStream,
14
+ LogsStreamStatus,
15
+ LogsStreamType,
11
16
  MonitorDashboard,
12
17
  MonitorMetricsDefinition,
13
18
  MonitorService,
14
19
  MonitorServiceToken,
15
20
  )
21
+ from linode_api4.objects.monitor import (
22
+ AkamaiObjectStorageLogsDestinationDetails,
23
+ CustomHTTPSLogsDestinationDetails,
24
+ LogsStreamDetails,
25
+ )
16
26
 
17
27
  __all__ = [
18
28
  "MonitorGroup",
@@ -37,8 +47,6 @@ class MonitorGroup(Group):
37
47
  dashboard = client.load(MonitorDashboard, 1)
38
48
  dashboards_by_service = client.monitor.dashboards(service_type="dbaas")
39
49
 
40
- .. note:: This endpoint is in beta. This will only function if base_url is set to `https://api.linode.com/v4beta`.
41
-
42
50
  API Documentation:
43
51
  - All Dashboards: https://techdocs.akamai.com/linode-api/reference/get-dashboards-all
44
52
  - Dashboards by Service: https://techdocs.akamai.com/linode-api/reference/get-dashboards
@@ -73,8 +81,6 @@ class MonitorGroup(Group):
73
81
  supported_services = client.monitor.services()
74
82
  service_details = client.monitor.load(MonitorService, "dbaas")
75
83
 
76
- .. note:: This endpoint is in beta. This will only function if base_url is set to `https://api.linode.com/v4beta`.
77
-
78
84
  API Documentation: https://techdocs.akamai.com/linode-api/reference/get-monitor-services
79
85
  API Documentation: https://techdocs.akamai.com/linode-api/reference/get-monitor-services-for-service-type
80
86
 
@@ -100,7 +106,6 @@ class MonitorGroup(Group):
100
106
  Returns metrics for a specific service type.
101
107
 
102
108
  metrics = client.monitor.list_metric_definitions(service_type="dbaas")
103
- .. note:: This endpoint is in beta. This will only function if base_url is set to `https://api.linode.com/v4beta`.
104
109
 
105
110
  API Documentation: https://techdocs.akamai.com/linode-api/reference/get-monitor-information
106
111
 
@@ -126,8 +131,6 @@ class MonitorGroup(Group):
126
131
  Returns a JWE Token for a specific service type.
127
132
  token = client.monitor.create_token(service_type="dbaas", entity_ids=[1234])
128
133
 
129
- .. note:: This endpoint is in beta. This will only function if base_url is set to `https://api.linode.com/v4beta`.
130
-
131
134
  API Documentation: https://techdocs.akamai.com/linode-api/reference/post-get-token
132
135
 
133
136
  :param service_type: The service type to create token for.
@@ -165,7 +168,6 @@ class MonitorGroup(Group):
165
168
 
166
169
  alerts = client.monitor.alert_definitions()
167
170
  alerts_by_service = client.monitor.alert_definitions(service_type="dbaas")
168
- .. note:: This endpoint is in beta and requires using the v4beta base URL.
169
171
 
170
172
  API Documentation:
171
173
  https://techdocs.akamai.com/linode-api/reference/get-alert-definitions
@@ -202,8 +204,6 @@ class MonitorGroup(Group):
202
204
  Examples:
203
205
  channels = client.monitor.alert_channels()
204
206
 
205
- .. note:: This endpoint is in beta and requires using the v4beta base URL.
206
-
207
207
  API Documentation: https://techdocs.akamai.com/linode-api/reference/get-notification-channels
208
208
 
209
209
  :param filters: Optional filter expressions to apply to the collection.
@@ -232,8 +232,6 @@ class MonitorGroup(Group):
232
232
  The alert definition configures when alerts are fired and which channels
233
233
  are notified.
234
234
 
235
- .. note:: This endpoint is in beta and requires using the v4beta base URL.
236
-
237
235
  API Documentation: https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type
238
236
 
239
237
  :param service_type: Service type for which to create the alert definition
@@ -309,9 +307,7 @@ class MonitorGroup(Group):
309
307
 
310
308
  This endpoint supports pagination fields (`page`, `page_size`) in the API.
311
309
 
312
- .. note:: This endpoint is in beta and requires using the v4beta base URL.
313
-
314
- API Documentation: TODO
310
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/get-alert-definition-entities
315
311
 
316
312
  :param service_type: Service type for the alert definition (e.g. `dbaas`).
317
313
  :type service_type: str
@@ -332,3 +328,206 @@ class MonitorGroup(Group):
332
328
  *filters,
333
329
  endpoint=endpoint,
334
330
  )
331
+
332
+ def destinations(self, *filters) -> PaginatedList:
333
+ """
334
+ List available logs destinations.
335
+
336
+ Returns a paginated collection of :class:`LogsDestination` objects which
337
+ describe logs destinations. By default, this method returns all available
338
+ destinations; you can supply optional filter expressions to restrict
339
+ the results, for example::
340
+
341
+ # Get destinations created by username and with id 111
342
+ destinations = client.monitor.destinations(LogsDestination.created_by == "username",
343
+ LogsDestination.id == 111)
344
+
345
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/get-destinations
346
+
347
+ :param filters: Any number of filters to apply to this query.
348
+ See :doc:`Filtering Collections</linode_api4/objects/filtering>`
349
+ for more details on filtering.
350
+
351
+ :returns: A list of :class:`LogsDestination` objects matching the query.
352
+ :rtype: PaginatedList of LogsDestination
353
+ """
354
+
355
+ return self.client._get_and_filter(LogsDestination, *filters)
356
+
357
+ def destination_create(
358
+ self,
359
+ label: str,
360
+ type: Union[LogsDestinationType, str],
361
+ details: Union[
362
+ AkamaiObjectStorageLogsDestinationDetails,
363
+ CustomHTTPSLogsDestinationDetails,
364
+ ],
365
+ ) -> LogsDestination:
366
+ """
367
+ Creates a new :any:`LogsDestination` for logs on this account.
368
+
369
+ For an ``akamai_object_storage`` destination::
370
+
371
+ client = LinodeClient(TOKEN)
372
+
373
+ new_destination = client.monitor.destination_create(
374
+ label="OBJ_logs_destination",
375
+ type="akamai_object_storage",
376
+ details=AkamaiObjectStorageLogsDestinationDetails(
377
+ access_key_id="1ABCD23EFG4HIJKLMNO5",
378
+ access_key_secret="1aB2CD3e4fgHi5JK6lmnop7qR8STU9VxYzabcdefHh",
379
+ bucket_name="primary-bucket",
380
+ host="primary-bucket-1.us-east-12.linodeobjects.com",
381
+ path="audit-logs",
382
+ )
383
+ )
384
+
385
+ For a ``custom_https`` destination::
386
+
387
+ new_destination = client.monitor.destination_create(
388
+ label="custom_logs_destination",
389
+ type="custom_https",
390
+ details=CustomHTTPSLogsDestinationDetails(
391
+ endpoint_url="https://my-site.com/log-storage/basicAuth",
392
+ authentication=DestinationAuthentication(
393
+ type="basic",
394
+ details=BasicAuthenticationDetails(
395
+ basic_authentication_user="user",
396
+ basic_authentication_password="pass",
397
+ ),
398
+ ),
399
+ data_compression="gzip",
400
+ content_type="application/json",
401
+ )
402
+ )
403
+
404
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/post-destination
405
+
406
+ :param label: The name for this logs destination.
407
+ :type label: str
408
+ :param type: The type of destination — ``akamai_object_storage`` or ``custom_https``.
409
+ :type type: str or LogsDestinationType
410
+ :param details: A typed details object matching the destination type.
411
+ Use :class:`AkamaiObjectStorageLogsDestinationDetails` for
412
+ ``akamai_object_storage`` or :class:`CustomHTTPSLogsDestinationDetails`
413
+ for ``custom_https``.
414
+ :type details: AkamaiObjectStorageLogsDestinationDetails or CustomHTTPSLogsDestinationDetails
415
+
416
+ :returns: The newly created logs destination.
417
+ :rtype: LogsDestination
418
+ """
419
+
420
+ params = {
421
+ "label": label,
422
+ "type": type,
423
+ "details": details.dict,
424
+ }
425
+
426
+ result = self.client.post("/monitor/streams/destinations", data=params)
427
+
428
+ if "id" not in result:
429
+ raise UnexpectedResponseError(
430
+ "Unexpected response when creating destination!",
431
+ json=result,
432
+ )
433
+
434
+ return LogsDestination(self.client, result["id"], result)
435
+
436
+ def streams(self, *filters) -> PaginatedList:
437
+ """
438
+ List available logs streams.
439
+
440
+ Returns a paginated collection of :class:`LogsStream` objects which
441
+ describe logs streams. By default, this method returns all available
442
+ streams; you can supply optional filter expressions to restrict
443
+ the results, for example::
444
+
445
+ # Get all streams with status ``provisioning``
446
+ provisioning_streams = client.monitor.streams(LogsStream.status == "provisioning")
447
+
448
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/get-streams
449
+
450
+ :param filters: Any number of filters to apply to this query.
451
+ See :doc:`Filtering Collections</linode_api4/objects/filtering>`
452
+ for more details on filtering.
453
+ :returns: A list of :class:`LogsStream` objects matching the query.
454
+ :rtype: PaginatedList of LogsStream
455
+ """
456
+
457
+ return self.client._get_and_filter(LogsStream, *filters)
458
+
459
+ def stream_create(
460
+ self,
461
+ destinations: list[int],
462
+ label: str,
463
+ type: Union[LogsStreamType, str],
464
+ status: Optional[Union[LogsStreamStatus, str]] = None,
465
+ details: Optional[LogsStreamDetails] = None,
466
+ ) -> LogsStream:
467
+ """
468
+ Creates a new :any:`LogsStream` for logs on this account. For example::
469
+
470
+ client = LinodeClient(TOKEN)
471
+
472
+ # audit_logs stream (no details required)
473
+ new_stream = client.monitor.stream_create(
474
+ destinations=[1234],
475
+ label="Linode_services",
476
+ status="active",
477
+ type="audit_logs"
478
+ )
479
+
480
+ # lke_audit_logs stream with specific clusters
481
+ lke_stream = client.monitor.stream_create(
482
+ destinations=[1234],
483
+ label="LKE_audit_stream",
484
+ type="lke_audit_logs",
485
+ details=LogsStreamDetails(
486
+ cluster_ids=[1111, 2222],
487
+ is_auto_add_all_clusters_enabled=False,
488
+ )
489
+ )
490
+
491
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/post-stream
492
+
493
+ :param destinations: The unique identifier for the sync point that will receive logs data.
494
+ Run the List destinations operation and store the id values for each applicable destination.
495
+ At the moment only single destination is supported.
496
+ :type destinations: list[int]
497
+ :param label: The name of the stream. This is used for display purposes in Akamai Cloud Manager.
498
+ :type label: str
499
+ :param type: The type of stream — ``audit_logs`` for Linode control plane logs,
500
+ or ``lke_audit_logs`` for LKE enterprise cluster audit logs.
501
+ :type type: str or LogsStreamType
502
+ :param status: (Optional) The availability status of the stream. Possible values are: ``active``, ``inactive``.
503
+ Defaults to ``active``.
504
+ :type status: str
505
+ :param details: (Optional) Additional stream details. Only applicable for
506
+ ``lke_audit_logs`` streams. Omit for ``audit_logs`` streams.
507
+ :type details: LogsStreamDetails
508
+
509
+ :returns: The newly created logs stream.
510
+ :rtype: LogsStream
511
+ """
512
+
513
+ params = {
514
+ "label": label,
515
+ "type": type,
516
+ "destinations": destinations,
517
+ }
518
+
519
+ if status is not None:
520
+ params["status"] = status
521
+
522
+ if details is not None:
523
+ params["details"] = details.dict
524
+
525
+ result = self.client.post("/monitor/streams", data=params)
526
+
527
+ if "id" not in result:
528
+ raise UnexpectedResponseError(
529
+ "Unexpected response when creating logs stream!",
530
+ json=result,
531
+ )
532
+
533
+ return LogsStream(self.client, result["id"], result)
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, Optional, Union
1
+ from typing import Any, Dict, List, Optional, Union
2
2
 
3
3
  from linode_api4.errors import UnexpectedResponseError
4
4
  from linode_api4.groups import Group
@@ -17,6 +17,8 @@ from linode_api4.objects import (
17
17
  Region,
18
18
  )
19
19
  from linode_api4.objects.base import _flatten_request_body_recursive
20
+ from linode_api4.objects.networking import ReservedIPAddress, ReservedIPType
21
+ from linode_api4.paginated_list import PaginatedList
20
22
  from linode_api4.util import drop_null_keys
21
23
 
22
24
 
@@ -328,10 +330,23 @@ class NetworkingGroup(Group):
328
330
  },
329
331
  )
330
332
 
331
- def ip_allocate(self, linode, public=True):
333
+ def ip_allocate(
334
+ self,
335
+ linode: Optional[Union[Instance, int]] = None,
336
+ public: bool = True,
337
+ reserved: bool = False,
338
+ region: Optional[Union[Region, str]] = None,
339
+ ) -> IPAddress:
332
340
  """
333
- Allocates an IP to a Instance you own. Additional IPs must be requested
334
- by opening a support ticket first.
341
+ Allocates an IP to an Instance you own, or reserves a new IP address.
342
+
343
+ When ``reserved`` is False (default), ``linode`` is required and an
344
+ ephemeral IP is allocated and assigned to that Instance.
345
+
346
+ When ``reserved`` is True, either ``region`` or ``linode`` must be
347
+ provided. Passing only ``region`` creates an unassigned reserved IP.
348
+ Passing ``linode`` (with or without ``region``) creates a reserved IP
349
+ in the Instance's region and assigns it to that Instance.
335
350
 
336
351
  API Documentation: https://techdocs.akamai.com/linode-api/reference/post-allocate-ip
337
352
 
@@ -339,18 +354,42 @@ class NetworkingGroup(Group):
339
354
  :type linode: Instance or int
340
355
  :param public: If True, allocate a public IP address. Defaults to True.
341
356
  :type public: bool
357
+ :param reserved: If True, reserve the new IP address.
358
+ NOTE: Reserved IP feature may not currently be available to all users.
359
+ :type reserved: bool
360
+ :param region: The region for the reserved IP (required when reserved=True and linode is not set).
361
+ NOTE: Reserved IP feature may not currently be available to all users.
362
+ :type region: str or Region
342
363
 
343
364
  :returns: The new IPAddress.
344
365
  :rtype: IPAddress
345
366
  """
346
- result = self.client.post(
347
- "/networking/ips/",
348
- data={
349
- "linode_id": linode.id if isinstance(linode, Base) else linode,
350
- "type": "ipv4",
351
- "public": public,
352
- },
353
- )
367
+ if not reserved and linode is None:
368
+ raise ValueError("linode is required when reserved is False.")
369
+ if reserved and linode is None and region is None:
370
+ raise ValueError(
371
+ "Either linode or region must be provided when reserved is True."
372
+ )
373
+ if not reserved and region is not None:
374
+ raise ValueError("region is only valid when reserved is True.")
375
+
376
+ data = {
377
+ "type": "ipv4",
378
+ "public": public,
379
+ }
380
+
381
+ if linode is not None:
382
+ data["linode_id"] = (
383
+ linode.id if isinstance(linode, Base) else linode
384
+ )
385
+
386
+ if reserved:
387
+ data["reserved"] = True
388
+
389
+ if region is not None:
390
+ data["region"] = region.id if isinstance(region, Base) else region
391
+
392
+ result = self.client.post("/networking/ips/", data=data)
354
393
 
355
394
  if not "address" in result:
356
395
  raise UnexpectedResponseError(
@@ -510,3 +549,76 @@ class NetworkingGroup(Group):
510
549
  return False
511
550
 
512
551
  return True
552
+
553
+ def reserved_ips(self, *filters) -> PaginatedList:
554
+ """
555
+ Returns a list of reserved IPv4 addresses on your account.
556
+
557
+ NOTE: Reserved IP feature may not currently be available to all users.
558
+
559
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/get-reserved-ips
560
+
561
+ :param filters: Any number of filters to apply to this query.
562
+ See :doc:`Filtering Collections</linode_api4/objects/filtering>`
563
+ for more details on filtering.
564
+
565
+ :returns: A list of reserved IP addresses on the account.
566
+ :rtype: PaginatedList of ReservedIPAddress
567
+ """
568
+ return self.client._get_and_filter(ReservedIPAddress, *filters)
569
+
570
+ def reserved_ip_create(
571
+ self,
572
+ region: Union[Region, str],
573
+ tags: Optional[List[str]] = None,
574
+ **kwargs,
575
+ ) -> ReservedIPAddress:
576
+ """
577
+ Reserves a new IPv4 address in the given region.
578
+
579
+ NOTE: Reserved IP feature may not currently be available to all users.
580
+
581
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/post-reserved-ip
582
+
583
+ :param region: The region in which to reserve the IP.
584
+ :type region: str or Region
585
+ :param tags: Tags to apply to the reserved IP.
586
+ :type tags: list of str
587
+
588
+ :returns: The new reserved IP address.
589
+ :rtype: ReservedIPAddress
590
+ """
591
+ params = {
592
+ "region": region.id if isinstance(region, Region) else region,
593
+ }
594
+ if tags is not None:
595
+ params["tags"] = tags
596
+ params.update(kwargs)
597
+
598
+ result = self.client.post("/networking/reserved/ips", data=params)
599
+
600
+ if "address" not in result:
601
+ raise UnexpectedResponseError(
602
+ "Unexpected response when reserving IP address!", json=result
603
+ )
604
+
605
+ return ReservedIPAddress(self.client, result["address"], result)
606
+
607
+ def reserved_ip_types(self, *filters) -> PaginatedList:
608
+ """
609
+ Returns a list of reserved IP types with pricing information.
610
+
611
+ NOTE: Reserved IP feature may not currently be available to all users.
612
+
613
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/get-reserved-ip-types
614
+
615
+ :param filters: Any number of filters to apply to this query.
616
+ See :doc:`Filtering Collections</linode_api4/objects/filtering>`
617
+ for more details on filtering.
618
+
619
+ :returns: A list of reserved IP types.
620
+ :rtype: PaginatedList of ReservedIPType
621
+ """
622
+ return self.client._get_and_filter(
623
+ ReservedIPType, *filters, endpoint="/networking/reserved/ips/types"
624
+ )
@@ -32,20 +32,26 @@ class NodeBalancerGroup(Group):
32
32
 
33
33
  :param region: The Region in which to create the NodeBalancer.
34
34
  :type region: Region or str
35
+ :param ipv4: A reserved IPv4 address to assign to this NodeBalancer.
36
+ NOTE: Reserved IP feature may not currently be available to all users.
37
+ :type ipv4: str
35
38
 
36
39
  :returns: The new NodeBalancer
37
40
  :rtype: NodeBalancer
38
41
  """
42
+ ipv4 = kwargs.pop("ipv4", None)
39
43
  params = {
40
44
  "region": region.id if isinstance(region, Base) else region,
41
45
  }
46
+ if ipv4 is not None:
47
+ params["ipv4"] = ipv4
42
48
  params.update(kwargs)
43
49
 
44
50
  result = self.client.post("/nodebalancers", data=params)
45
51
 
46
52
  if not "id" in result:
47
53
  raise UnexpectedResponseError(
48
- "Unexpected response when creating Nodebalaner!", json=result
54
+ "Unexpected response when creating NodeBalancer!", json=result
49
55
  )
50
56
 
51
57
  n = NodeBalancer(self.client, result["id"], result)
@@ -539,7 +539,7 @@ class ObjectStorageGroup(Group):
539
539
  """
540
540
  Lists the active account-level Object Storage quotas applied to your account.
541
541
 
542
- API Documentation: TBD
542
+ API Documentation: https://techdocs.akamai.com/linode-api/reference/get-object-storage-global-quotas
543
543
 
544
544
  :param filters: Any number of filters to apply to this query.
545
545
  See :doc:`Filtering Collections</linode_api4/objects/filtering>`
@@ -32,7 +32,8 @@ class TagGroup(Group):
32
32
  domains=None,
33
33
  nodebalancers=None,
34
34
  volumes=None,
35
- entities=[],
35
+ entities=None,
36
+ reserved_ipv4_addresses=None,
36
37
  ):
37
38
  """
38
39
  Creates a new Tag and optionally applies it to the given entities.
@@ -61,10 +62,14 @@ class TagGroup(Group):
61
62
  :param volumes: A list of Volumes to apply this Tag to upon
62
63
  creation
63
64
  :type volumes: list of Volumes or list of int
65
+ :param reserved_ipv4_addresses: A list of reserved IPv4 addresses to apply
66
+ this Tag to upon creation.
67
+ :type reserved_ipv4_addresses: list of str
64
68
 
65
69
  :returns: The new Tag
66
70
  :rtype: Tag
67
71
  """
72
+ entities = entities or []
68
73
  linode_ids, nodebalancer_ids, domain_ids, volume_ids = [], [], [], []
69
74
 
70
75
  # filter input into lists of ids
@@ -103,6 +108,7 @@ class TagGroup(Group):
103
108
  "nodebalancers": nodebalancer_ids or None,
104
109
  "domains": domain_ids or None,
105
110
  "volumes": volume_ids or None,
111
+ "reserved_ipv4_addresses": reserved_ipv4_addresses or None,
106
112
  }
107
113
 
108
114
  result = self.client.post("/tags", data=params)
@@ -1584,7 +1584,7 @@ class Instance(Base):
1584
1584
  b = Backup(self._client, result["id"], self.id, result)
1585
1585
  return b
1586
1586
 
1587
- def ip_allocate(self, public=False):
1587
+ def ip_allocate(self, public=False, address=None):
1588
1588
  """
1589
1589
  Allocates a new :any:`IPAddress` for this Instance. Additional public
1590
1590
  IPs require justification, and you may need to open a :any:`SupportTicket`
@@ -1596,17 +1596,26 @@ class Instance(Base):
1596
1596
  :param public: If the new IP should be public or private. Defaults to
1597
1597
  private.
1598
1598
  :type public: bool
1599
+ :param address: A reserved IPv4 address to assign to this Instance instead
1600
+ of allocating a new ephemeral IP. The address must be an
1601
+ unassigned reserved IP owned by this account.
1602
+ NOTE: Reserved IP feature may not currently be available to all users.
1603
+ :type address: str
1599
1604
 
1600
1605
  :returns: The new IPAddress
1601
1606
  :rtype: IPAddress
1602
1607
  """
1608
+ data = {
1609
+ "type": "ipv4",
1610
+ "public": public,
1611
+ }
1612
+ if address is not None:
1613
+ data["address"] = address
1614
+
1603
1615
  result = self._client.post(
1604
1616
  "{}/ips".format(Instance.api_endpoint),
1605
1617
  model=self,
1606
- data={
1607
- "type": "ipv4",
1608
- "public": public,
1609
- },
1618
+ data=data,
1610
1619
  )
1611
1620
 
1612
1621
  if not "address" in result: