linode-api4 5.47.0__tar.gz → 5.48.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 (381) hide show
  1. {linode_api4-5.47.0/linode_api4.egg-info → linode_api4-5.48.0}/PKG-INFO +26 -27
  2. {linode_api4-5.47.0 → linode_api4-5.48.0}/README.rst +4 -7
  3. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/nodebalancer.py +21 -0
  4. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/linode.py +37 -1
  5. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/nodebalancer.py +17 -2
  6. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/version.py +1 -1
  7. {linode_api4-5.47.0 → linode_api4-5.48.0/linode_api4.egg-info}/PKG-INFO +26 -27
  8. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4.egg-info/requires.txt +21 -14
  9. {linode_api4-5.47.0 → linode_api4-5.48.0}/pyproject.toml +17 -12
  10. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances.json +2 -0
  11. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_nodebalancers.json +3 -0
  12. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers.json +8 -2
  13. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_123456.json +5 -2
  14. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/nodebalancer/test_nodebalancer.py +7 -0
  15. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/linode_client_test.py +79 -0
  16. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/linode_test.py +26 -0
  17. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/nodebalancers_test.py +86 -0
  18. {linode_api4-5.47.0 → linode_api4-5.48.0}/LICENSE +0 -0
  19. {linode_api4-5.47.0 → linode_api4-5.48.0}/MANIFEST.in +0 -0
  20. {linode_api4-5.47.0 → linode_api4-5.48.0}/examples/install-on-linode/app.py +0 -0
  21. {linode_api4-5.47.0 → linode_api4-5.48.0}/examples/install-on-linode/make_stackscript.py +0 -0
  22. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/__init__.py +0 -0
  23. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/common.py +0 -0
  24. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/errors.py +0 -0
  25. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/__init__.py +0 -0
  26. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/account.py +0 -0
  27. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/beta.py +0 -0
  28. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/database.py +0 -0
  29. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/domain.py +0 -0
  30. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/group.py +0 -0
  31. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/image.py +0 -0
  32. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/image_share_group.py +0 -0
  33. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/linode.py +0 -0
  34. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/lke.py +0 -0
  35. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/lke_tier.py +0 -0
  36. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/lock.py +0 -0
  37. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/longview.py +0 -0
  38. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/maintenance.py +0 -0
  39. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/monitor.py +0 -0
  40. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/monitor_api.py +0 -0
  41. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/networking.py +0 -0
  42. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/object_storage.py +0 -0
  43. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/placement.py +0 -0
  44. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/polling.py +0 -0
  45. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/profile.py +0 -0
  46. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/region.py +0 -0
  47. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/support.py +0 -0
  48. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/tag.py +0 -0
  49. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/volume.py +0 -0
  50. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/groups/vpc.py +0 -0
  51. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/linode_client.py +0 -0
  52. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/login_client.py +0 -0
  53. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/__init__.py +0 -0
  54. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/account.py +0 -0
  55. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/base.py +0 -0
  56. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/beta.py +0 -0
  57. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/database.py +0 -0
  58. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/dbase.py +0 -0
  59. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/domain.py +0 -0
  60. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/filtering.py +0 -0
  61. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/image.py +0 -0
  62. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/image_share_group.py +0 -0
  63. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/linode_interfaces.py +0 -0
  64. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/lke.py +0 -0
  65. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/lock.py +0 -0
  66. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/longview.py +0 -0
  67. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/monitor.py +0 -0
  68. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/monitor_api.py +0 -0
  69. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/networking.py +0 -0
  70. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/object_storage.py +0 -0
  71. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/placement.py +0 -0
  72. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/profile.py +0 -0
  73. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/region.py +0 -0
  74. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/serializable.py +0 -0
  75. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/support.py +0 -0
  76. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/tag.py +0 -0
  77. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/volume.py +0 -0
  78. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/objects/vpc.py +0 -0
  79. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/paginated_list.py +0 -0
  80. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/polling.py +0 -0
  81. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4/util.py +0 -0
  82. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4.egg-info/SOURCES.txt +0 -0
  83. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4.egg-info/dependency_links.txt +0 -0
  84. {linode_api4-5.47.0 → linode_api4-5.48.0}/linode_api4.egg-info/top_level.txt +0 -0
  85. {linode_api4-5.47.0 → linode_api4-5.48.0}/setup.cfg +0 -0
  86. {linode_api4-5.47.0 → linode_api4-5.48.0}/setup.py +0 -0
  87. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/__init__.py +0 -0
  88. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account.json +0 -0
  89. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_availability.json +0 -0
  90. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_availability_us-east.json +0 -0
  91. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_betas.json +0 -0
  92. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_betas_cool.json +0 -0
  93. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_child-accounts.json +0 -0
  94. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_child-accounts_123456.json +0 -0
  95. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_child-accounts_123456_token.json +0 -0
  96. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_events_123.json +0 -0
  97. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_invoices.json +0 -0
  98. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_invoices_123.json +0 -0
  99. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_invoices_123456_items.json +0 -0
  100. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_logins.json +0 -0
  101. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_logins_123.json +0 -0
  102. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_maintenance.json +0 -0
  103. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_notifications.json +0 -0
  104. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_oauth-clients_2737bf16b39ab5d7b4a1.json +0 -0
  105. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_payment-method_123.json +0 -0
  106. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_payment-methods.json +0 -0
  107. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_payments.json +0 -0
  108. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_promo-codes.json +0 -0
  109. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_service-transfers.json +0 -0
  110. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_service-transfers_12345.json +0 -0
  111. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_settings.json +0 -0
  112. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_transfer.json +0 -0
  113. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/account_users_test-user.json +0 -0
  114. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/betas.json +0 -0
  115. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/betas_active.json +0 -0
  116. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_engines.json +0 -0
  117. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_instances.json +0 -0
  118. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_config.json +0 -0
  119. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances.json +0 -0
  120. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances_123_credentials.json +0 -0
  121. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances_123_credentials_reset.json +0 -0
  122. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances_123_patch.json +0 -0
  123. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances_123_resume.json +0 -0
  124. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances_123_ssl.json +0 -0
  125. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_mysql_instances_123_suspend.json +0 -0
  126. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_config.json +0 -0
  127. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances.json +0 -0
  128. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances_123_credentials.json +0 -0
  129. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances_123_credentials_reset.json +0 -0
  130. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances_123_patch.json +0 -0
  131. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances_123_resume.json +0 -0
  132. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances_123_ssl.json +0 -0
  133. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_postgresql_instances_123_suspend.json +0 -0
  134. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/databases_types.json +0 -0
  135. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/domains.json +0 -0
  136. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/domains_12345_clone.json +0 -0
  137. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/domains_12345_records.json +0 -0
  138. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/domains_12345_zone-file.json +0 -0
  139. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/domains_import.json +0 -0
  140. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images.json +0 -0
  141. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_private_1234_sharegroups.json +0 -0
  142. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_private_123_regions.json +0 -0
  143. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_private_1337.json +0 -0
  144. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups.json +0 -0
  145. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_1234.json +0 -0
  146. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_1234_images.json +0 -0
  147. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_1234_images_shared_1.json +0 -0
  148. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_1234_members.json +0 -0
  149. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_1234_members_abc123.json +0 -0
  150. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_tokens.json +0 -0
  151. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_tokens_abc123.json +0 -0
  152. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_tokens_abc123_sharegroup.json +0 -0
  153. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_sharegroups_tokens_abc123_sharegroup_images.json +0 -0
  154. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/images_upload.json +0 -0
  155. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_backups.json +0 -0
  156. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs.json +0 -0
  157. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs_456789.json +0 -0
  158. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs_456789_interfaces.json +0 -0
  159. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_123.json +0 -0
  160. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_123_put.json +0 -0
  161. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_321.json +0 -0
  162. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_configs_456789_interfaces_456.json +0 -0
  163. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_disks.json +0 -0
  164. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_disks_12345_clone.json +0 -0
  165. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_firewalls.json +0 -0
  166. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_ips.json +0 -0
  167. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_transfer.json +0 -0
  168. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_transfer_2023_4.json +0 -0
  169. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_123_volumes.json +0 -0
  170. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124.json +0 -0
  171. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces.json +0 -0
  172. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces_123.json +0 -0
  173. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces_123_firewalls.json +0 -0
  174. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces_456.json +0 -0
  175. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces_789.json +0 -0
  176. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces_999.json +0 -0
  177. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_interfaces_settings.json +0 -0
  178. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_instances_124_upgrade-interfaces.json +0 -0
  179. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_stackscripts_10079.json +0 -0
  180. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_types.json +0 -0
  181. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/linode_types_g6-nanode-1.json +0 -0
  182. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters.json +0 -0
  183. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18881.json +0 -0
  184. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18881_control__plane__acl.json +0 -0
  185. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18881_dashboard.json +0 -0
  186. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18881_nodes_123456.json +0 -0
  187. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18881_pools_456.json +0 -0
  188. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18882.json +0 -0
  189. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_clusters_18882_pools_789.json +0 -0
  190. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_tiers_standard_versions.json +0 -0
  191. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_types.json +0 -0
  192. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/lke_versions.json +0 -0
  193. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/locks.json +0 -0
  194. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/locks_1.json +0 -0
  195. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/longview_clients.json +0 -0
  196. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/longview_plan.json +0 -0
  197. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/longview_subscriptions.json +0 -0
  198. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/maintenance_policies.json +0 -0
  199. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/mongodb.json +0 -0
  200. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_alert-channels.json +0 -0
  201. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_alert-definitions.json +0 -0
  202. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_dashboards.json +0 -0
  203. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_dashboards_1.json +0 -0
  204. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services.json +0 -0
  205. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas.json +0 -0
  206. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_alert-definitions.json +0 -0
  207. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_alert-definitions_12345.json +0 -0
  208. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_alert-definitions_12345_clone.json +0 -0
  209. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_alert-definitions_12345_entities.json +0 -0
  210. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_dashboards.json +0 -0
  211. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_metric-definitions.json +0 -0
  212. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_metrics.json +0 -0
  213. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_dbaas_token.json +0 -0
  214. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_services_linode_token.json +0 -0
  215. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams.json +0 -0
  216. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams_1_history.json +0 -0
  217. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams_2.json +0 -0
  218. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams_3.json +0 -0
  219. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams_destinations.json +0 -0
  220. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams_destinations_1_history.json +0 -0
  221. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/monitor_streams_destinations_2.json +0 -0
  222. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/network-transfer_prices.json +0 -0
  223. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls.json +0 -0
  224. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123.json +0 -0
  225. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123_devices.json +0 -0
  226. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123_devices_123.json +0 -0
  227. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123_devices_456.json +0 -0
  228. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123_history.json +0 -0
  229. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123_history_rules_2.json +0 -0
  230. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_123_rules.json +0 -0
  231. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_settings.json +0 -0
  232. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_templates.json +0 -0
  233. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_templates_public.json +0 -0
  234. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_firewalls_templates_vpc.json +0 -0
  235. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_ips_127.0.0.1.json +0 -0
  236. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_ipv6_pools.json +0 -0
  237. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_ipv6_ranges.json +0 -0
  238. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_ipv6_ranges_2600%3A3c01%3A%3A.json +0 -0
  239. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_reserved_ips.json +0 -0
  240. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_reserved_ips_types.json +0 -0
  241. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/networking_vlans.json +0 -0
  242. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_123456_configs.json +0 -0
  243. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_123456_configs_65432_nodes.json +0 -0
  244. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_12345_configs_4567_rebuild.json +0 -0
  245. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_12345_firewalls.json +0 -0
  246. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_12345_stats.json +0 -0
  247. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/nodebalancers_types.json +0 -0
  248. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets.json +0 -0
  249. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east-1.json +0 -0
  250. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket.json +0 -0
  251. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-acl.json +0 -0
  252. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-list.json +0 -0
  253. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-url.json +0 -0
  254. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_ssl.json +0 -0
  255. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_buckets_us-east_example-bucket_access.json +0 -0
  256. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_clusters.json +0 -0
  257. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_global-quotas.json +0 -0
  258. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_global-quotas_obj-access-keys-per-account.json +0 -0
  259. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_global-quotas_obj-access-keys-per-account_usage.json +0 -0
  260. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_keys.json +0 -0
  261. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_quotas.json +0 -0
  262. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_quotas_obj-objects-us-ord-1.json +0 -0
  263. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_quotas_obj-objects-us-ord-1_usage.json +0 -0
  264. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_transfer.json +0 -0
  265. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/object-storage_types.json +0 -0
  266. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/placement_groups.json +0 -0
  267. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/placement_groups_123.json +0 -0
  268. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile.json +0 -0
  269. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_device_123.json +0 -0
  270. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_devices.json +0 -0
  271. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_logins.json +0 -0
  272. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_logins_123.json +0 -0
  273. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_preferences.json +0 -0
  274. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_security-questions.json +0 -0
  275. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/profile_sshkeys.json +0 -0
  276. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/regions.json +0 -0
  277. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/regions_availability.json +0 -0
  278. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/regions_us-east_availability.json +0 -0
  279. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/regions_us-east_vpc-availability.json +0 -0
  280. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/regions_vpc-availability.json +0 -0
  281. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/support_tickets_123.json +0 -0
  282. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/tags.json +0 -0
  283. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/tags_nothing.json +0 -0
  284. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/tags_something.json +0 -0
  285. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/testmappedobj1.json +0 -0
  286. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/volumes.json +0 -0
  287. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/volumes_types.json +0 -0
  288. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs.json +0 -0
  289. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs_123456.json +0 -0
  290. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs_123456_ips.json +0 -0
  291. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs_123456_subnets.json +0 -0
  292. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs_123456_subnets_789.json +0 -0
  293. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs_default-ranges.json +0 -0
  294. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/fixtures/vpcs_ips.json +0 -0
  295. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/__init__.py +0 -0
  296. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/conftest.py +0 -0
  297. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/filters/fixtures.py +0 -0
  298. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/filters/model_filters_test.py +0 -0
  299. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/helpers.py +0 -0
  300. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/linode_client/__init__.py +0 -0
  301. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/linode_client/test_errors.py +0 -0
  302. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/linode_client/test_linode_client.py +0 -0
  303. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/linode_client/test_retry.py +0 -0
  304. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/login_client/test_login_client.py +0 -0
  305. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/__init__.py +0 -0
  306. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/account/test_account.py +0 -0
  307. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/database/helpers.py +0 -0
  308. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/database/test_database.py +0 -0
  309. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/database/test_database_engine_config.py +0 -0
  310. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/domain/test_domain.py +0 -0
  311. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/firewall/test_firewall.py +0 -0
  312. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/firewall/test_firewall_templates.py +0 -0
  313. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/image/test_image.py +0 -0
  314. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/linode/interfaces/test_interfaces.py +0 -0
  315. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/linode/test_linode.py +0 -0
  316. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/lke/test_lke.py +0 -0
  317. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/lock/__init__.py +0 -0
  318. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/lock/test_lock.py +0 -0
  319. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/longview/test_longview.py +0 -0
  320. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/maintenance/test_maintenance.py +0 -0
  321. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/monitor/test_monitor.py +0 -0
  322. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/monitor/test_monitor_logs.py +0 -0
  323. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/monitor_api/test_monitor_api.py +0 -0
  324. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/networking/test_networking.py +0 -0
  325. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/object_storage/test_obj.py +0 -0
  326. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/object_storage/test_obj_quotas.py +0 -0
  327. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/placement/test_placement.py +0 -0
  328. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/profile/test_profile.py +0 -0
  329. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/region/test_region.py +0 -0
  330. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/sharegroups/test_sharegroups.py +0 -0
  331. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/tag/test_tag.py +0 -0
  332. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/volume/test_blockstorage.py +0 -0
  333. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/volume/test_volume.py +0 -0
  334. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/integration/models/vpc/test_vpc.py +0 -0
  335. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/__init__.py +0 -0
  336. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/base.py +0 -0
  337. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/errors_test.py +0 -0
  338. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/fixtures.py +0 -0
  339. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/__init__.py +0 -0
  340. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/database_test.py +0 -0
  341. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/image_share_group_test.py +0 -0
  342. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/image_test.py +0 -0
  343. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/linode_test.py +0 -0
  344. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/lke_test.py +0 -0
  345. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/lke_tier_test.py +0 -0
  346. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/lock_test.py +0 -0
  347. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/monitor_api_test.py +0 -0
  348. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/networking_test.py +0 -0
  349. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/object_storage_test.py +0 -0
  350. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/placement_test.py +0 -0
  351. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/polling_test.py +0 -0
  352. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/region_test.py +0 -0
  353. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/groups/vpc_test.py +0 -0
  354. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/login_client_test.py +0 -0
  355. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/account_test.py +0 -0
  356. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/base_test.py +0 -0
  357. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/beta_test.py +0 -0
  358. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/database_test.py +0 -0
  359. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/domain_test.py +0 -0
  360. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/firewall_test.py +0 -0
  361. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/image_share_group_test.py +0 -0
  362. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/image_test.py +0 -0
  363. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/linode_interface_test.py +0 -0
  364. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/lke_test.py +0 -0
  365. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/lock_test.py +0 -0
  366. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/longview_test.py +0 -0
  367. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/mapped_object_test.py +0 -0
  368. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/monitor_test.py +0 -0
  369. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/networking_test.py +0 -0
  370. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/object_storage_test.py +0 -0
  371. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/placement_test.py +0 -0
  372. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/profile_test.py +0 -0
  373. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/property_alias_test.py +0 -0
  374. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/region_test.py +0 -0
  375. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/serializable_test.py +0 -0
  376. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/support_test.py +0 -0
  377. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/tag_test.py +0 -0
  378. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/volume_test.py +0 -0
  379. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/objects/vpc_test.py +0 -0
  380. {linode_api4-5.47.0 → linode_api4-5.48.0}/test/unit/paginated_list_test.py +0 -0
  381. {linode_api4-5.47.0 → linode_api4-5.48.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.47.0
3
+ Version: 5.48.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
@@ -25,29 +25,31 @@ License-File: LICENSE
25
25
  Requires-Dist: requests
26
26
  Requires-Dist: polling
27
27
  Requires-Dist: deprecated
28
- Provides-Extra: test
29
- Requires-Dist: tox>=4.4.0; extra == "test"
30
- Provides-Extra: dev
31
- Requires-Dist: tox>=4.4.0; extra == "dev"
32
- Requires-Dist: mock>=5.0.0; extra == "dev"
33
- Requires-Dist: pytest>=7.3.1; extra == "dev"
34
- Requires-Dist: httpretty>=1.1.4; extra == "dev"
35
- Requires-Dist: black>=23.1.0; extra == "dev"
36
- Requires-Dist: isort>=5.12.0; extra == "dev"
37
- Requires-Dist: autoflake>=2.0.1; extra == "dev"
38
- Requires-Dist: pylint; extra == "dev"
39
- Requires-Dist: twine>=4.0.2; extra == "dev"
40
- Requires-Dist: build>=0.10.0; extra == "dev"
41
- Requires-Dist: Sphinx>=6.0.0; extra == "dev"
42
- Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
43
- Requires-Dist: sphinxcontrib-fulltoc>=1.2.0; extra == "dev"
44
- Requires-Dist: build>=0.10.0; extra == "dev"
45
- Requires-Dist: twine>=4.0.2; extra == "dev"
46
- Requires-Dist: pytest-rerunfailures; extra == "dev"
28
+ Provides-Extra: test-shared
29
+ Requires-Dist: pytest>=7.3.1; extra == "test-shared"
30
+ Requires-Dist: httpretty>=1.1.4; extra == "test-shared"
31
+ Requires-Dist: pytest-rerunfailures; extra == "test-shared"
32
+ Provides-Extra: unit-test
33
+ Requires-Dist: linode_api4[test-shared]; extra == "unit-test"
34
+ Requires-Dist: mock>=5.0.0; extra == "unit-test"
35
+ Provides-Extra: int-test
36
+ Requires-Dist: linode_api4[test-shared]; extra == "int-test"
37
+ Provides-Extra: lint
38
+ Requires-Dist: black>=23.1.0; extra == "lint"
39
+ Requires-Dist: isort>=5.12.0; extra == "lint"
40
+ Requires-Dist: autoflake>=2.0.1; extra == "lint"
41
+ Requires-Dist: pylint; extra == "lint"
42
+ Requires-Dist: twine>=4.0.2; extra == "lint"
43
+ Requires-Dist: build>=0.10.0; extra == "lint"
47
44
  Provides-Extra: doc
48
45
  Requires-Dist: Sphinx>=6.0.0; extra == "doc"
49
46
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "doc"
50
47
  Requires-Dist: sphinxcontrib-fulltoc>=1.2.0; extra == "doc"
48
+ Provides-Extra: dev
49
+ Requires-Dist: linode_api4[unit-test]; extra == "dev"
50
+ Requires-Dist: linode_api4[int-test]; extra == "dev"
51
+ Requires-Dist: linode_api4[lint]; extra == "dev"
52
+ Requires-Dist: linode_api4[doc]; extra == "dev"
51
53
  Dynamic: license-file
52
54
 
53
55
  linode_api4
@@ -154,14 +156,13 @@ Tests
154
156
  -----
155
157
 
156
158
  Tests live in the ``test`` directory. When invoking tests, make sure you are
157
- in the root directory of this project. To run the full suite across all
158
- supported python versions, use tox_:
159
+ in the root directory of this project. Install unit-test dependencies and run
160
+ the mocked unit suite with:
159
161
 
160
162
  .. code-block:: shell
161
163
 
162
- tox
163
-
164
- Running tox also runs pylint and coverage reports.
164
+ python3 -m pip install -e ".[unit-test]"
165
+ make test-unit
165
166
 
166
167
  The test suite uses fixtures stored as JSON in ``test/fixtures``. These files
167
168
  contain sanitized JSON responses from the API - the file name is the URL called
@@ -183,8 +184,6 @@ from the api base url that should be returned, for example::
183
184
  linode = self.client.linode.instance_create('g6-standard-2', 'us-east')
184
185
  self.assertEqual(linode.id, 123) # passes
185
186
 
186
- .. _tox: http://tox.readthedocs.io
187
-
188
187
 
189
188
  Integration Tests
190
189
  -----------------
@@ -102,14 +102,13 @@ Tests
102
102
  -----
103
103
 
104
104
  Tests live in the ``test`` directory. When invoking tests, make sure you are
105
- in the root directory of this project. To run the full suite across all
106
- supported python versions, use tox_:
105
+ in the root directory of this project. Install unit-test dependencies and run
106
+ the mocked unit suite with:
107
107
 
108
108
  .. code-block:: shell
109
109
 
110
- tox
111
-
112
- Running tox also runs pylint and coverage reports.
110
+ python3 -m pip install -e ".[unit-test]"
111
+ make test-unit
113
112
 
114
113
  The test suite uses fixtures stored as JSON in ``test/fixtures``. These files
115
114
  contain sanitized JSON responses from the API - the file name is the URL called
@@ -131,8 +130,6 @@ from the api base url that should be returned, for example::
131
130
  linode = self.client.linode.instance_create('g6-standard-2', 'us-east')
132
131
  self.assertEqual(linode.id, 123) # passes
133
132
 
134
- .. _tox: http://tox.readthedocs.io
135
-
136
133
 
137
134
  Integration Tests
138
135
  -----------------
@@ -35,6 +35,27 @@ class NodeBalancerGroup(Group):
35
35
  :param ipv4: A reserved IPv4 address to assign to this NodeBalancer.
36
36
  NOTE: Reserved IP feature may not currently be available to all users.
37
37
  :type ipv4: str
38
+ :param type: The NodeBalancer type. Supported values include
39
+ ``common``, ``premium``, ``premium_40gb``, and
40
+ ``enterprise``. This cannot be changed after creation.
41
+ NOTE: Creating premium or enterprise NodeBalancers may not
42
+ currently be available to all users.
43
+ :type type: str
44
+ :param backend_connectivity: How this NodeBalancer communicates with
45
+ backends (``legacy``, ``ipv6``, or ``vpc``). If omitted,
46
+ the API infers a value from ``vpcs`` or config nodes, or
47
+ returns ``undefined`` until the first node is added.
48
+ ``undefined`` cannot be sent by clients. This cannot be
49
+ changed after creation.
50
+ NOTE: This field may not currently be available to all users.
51
+ :type backend_connectivity: NodeBalancerBackendConnectivity | str
52
+ :param vpcs: VPC attachments for this NodeBalancer. Required when
53
+ ``backend_connectivity`` is ``vpc``.
54
+ :type vpcs: list[dict]
55
+ :param configs: NodeBalancer configs and optional nodes to create
56
+ with this NodeBalancer. Node addresses must match the
57
+ selected or inferred backend connectivity.
58
+ :type configs: list[dict]
38
59
 
39
60
  :returns: The new NodeBalancer
40
61
  :rtype: NodeBalancer
@@ -790,6 +790,42 @@ class UpgradeInterfacesResult(JSONObject):
790
790
  )
791
791
 
792
792
 
793
+ @dataclass
794
+ class InstanceBackupSchedule(JSONObject):
795
+ """
796
+ InstanceBackupSchedule represents when automatic backups of a Linode Instance are taken.
797
+ """
798
+
799
+ include_none_values = True
800
+
801
+ day: Optional[str] = None
802
+ window: Optional[str] = None
803
+
804
+
805
+ @dataclass
806
+ class InstanceBackupsOptions(JSONObject):
807
+ """
808
+ InstanceBackupsOptions is used to update the backup settings of a Linode Instance.
809
+ """
810
+
811
+ enabled: bool = False
812
+ schedule: Optional[InstanceBackupSchedule] = None
813
+
814
+
815
+ @dataclass
816
+ class InstanceBackups(JSONObject):
817
+ """
818
+ InstanceBackups represents the backup settings and status of a Linode Instance.
819
+ """
820
+
821
+ put_class = InstanceBackupsOptions
822
+
823
+ enabled: bool = False
824
+ available: bool = False
825
+ schedule: Optional[InstanceBackupSchedule] = None
826
+ last_successful: Optional[str] = None
827
+
828
+
793
829
  class Instance(Base):
794
830
  """
795
831
  A Linode Instance.
@@ -811,7 +847,7 @@ class Instance(Base):
811
847
  "disks": Property(derived_class=Disk),
812
848
  "configs": Property(derived_class=Config),
813
849
  "type": Property(slug_relationship=Type),
814
- "backups": Property(mutable=True),
850
+ "backups": Property(mutable=True, json_object=InstanceBackups),
815
851
  "ipv4": Property(unordered=True),
816
852
  "ipv6": Property(),
817
853
  "hypervisor": Property(),
@@ -7,6 +7,16 @@ from linode_api4.objects.base import Base, MappedObject, Property
7
7
  from linode_api4.objects.dbase import DerivedBase
8
8
  from linode_api4.objects.networking import Firewall, IPAddress
9
9
  from linode_api4.objects.region import Region
10
+ from linode_api4.objects.serializable import StrEnum
11
+
12
+
13
+ class NodeBalancerBackendConnectivity(StrEnum):
14
+ """Backend connectivity modes accepted when creating a NodeBalancer."""
15
+
16
+ IPV6 = "ipv6"
17
+ LEGACY = "legacy"
18
+ UNDEFINED = "undefined"
19
+ VPC = "vpc"
10
20
 
11
21
 
12
22
  class NodeBalancerType(Base):
@@ -162,8 +172,10 @@ class NodeBalancerConfig(DerivedBase):
162
172
 
163
173
  API documentation: https://techdocs.akamai.com/linode-api/reference/post-node-balancer-node
164
174
 
165
- :param address: The private IP Address where this backend can be reached.
166
- This must be a private IP address.
175
+ :param address: The address and port where this backend can be reached.
176
+ The address may be a private IPv4 address, a public
177
+ IPv6 address, or a VPC address. The address type must
178
+ match this NodeBalancer's ``backend_connectivity``.
167
179
  :type address: str
168
180
 
169
181
  :param label: The label for this node. This is for display purposes only.
@@ -255,6 +267,9 @@ class NodeBalancer(Base):
255
267
  "tags": Property(mutable=True, unordered=True),
256
268
  "client_udp_sess_throttle": Property(mutable=True),
257
269
  "locks": Property(unordered=True),
270
+ "type": Property(),
271
+ "backend_connectivity": Property(),
272
+ "backend_ipv6_prefix": Property(),
258
273
  }
259
274
 
260
275
  # create derived objects
@@ -2,4 +2,4 @@
2
2
  The version of this linode_api4 package.
3
3
  """
4
4
 
5
- __version__ = "v5.47.0"
5
+ __version__ = "v5.48.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: linode_api4
3
- Version: 5.47.0
3
+ Version: 5.48.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
@@ -25,29 +25,31 @@ License-File: LICENSE
25
25
  Requires-Dist: requests
26
26
  Requires-Dist: polling
27
27
  Requires-Dist: deprecated
28
- Provides-Extra: test
29
- Requires-Dist: tox>=4.4.0; extra == "test"
30
- Provides-Extra: dev
31
- Requires-Dist: tox>=4.4.0; extra == "dev"
32
- Requires-Dist: mock>=5.0.0; extra == "dev"
33
- Requires-Dist: pytest>=7.3.1; extra == "dev"
34
- Requires-Dist: httpretty>=1.1.4; extra == "dev"
35
- Requires-Dist: black>=23.1.0; extra == "dev"
36
- Requires-Dist: isort>=5.12.0; extra == "dev"
37
- Requires-Dist: autoflake>=2.0.1; extra == "dev"
38
- Requires-Dist: pylint; extra == "dev"
39
- Requires-Dist: twine>=4.0.2; extra == "dev"
40
- Requires-Dist: build>=0.10.0; extra == "dev"
41
- Requires-Dist: Sphinx>=6.0.0; extra == "dev"
42
- Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
43
- Requires-Dist: sphinxcontrib-fulltoc>=1.2.0; extra == "dev"
44
- Requires-Dist: build>=0.10.0; extra == "dev"
45
- Requires-Dist: twine>=4.0.2; extra == "dev"
46
- Requires-Dist: pytest-rerunfailures; extra == "dev"
28
+ Provides-Extra: test-shared
29
+ Requires-Dist: pytest>=7.3.1; extra == "test-shared"
30
+ Requires-Dist: httpretty>=1.1.4; extra == "test-shared"
31
+ Requires-Dist: pytest-rerunfailures; extra == "test-shared"
32
+ Provides-Extra: unit-test
33
+ Requires-Dist: linode_api4[test-shared]; extra == "unit-test"
34
+ Requires-Dist: mock>=5.0.0; extra == "unit-test"
35
+ Provides-Extra: int-test
36
+ Requires-Dist: linode_api4[test-shared]; extra == "int-test"
37
+ Provides-Extra: lint
38
+ Requires-Dist: black>=23.1.0; extra == "lint"
39
+ Requires-Dist: isort>=5.12.0; extra == "lint"
40
+ Requires-Dist: autoflake>=2.0.1; extra == "lint"
41
+ Requires-Dist: pylint; extra == "lint"
42
+ Requires-Dist: twine>=4.0.2; extra == "lint"
43
+ Requires-Dist: build>=0.10.0; extra == "lint"
47
44
  Provides-Extra: doc
48
45
  Requires-Dist: Sphinx>=6.0.0; extra == "doc"
49
46
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "doc"
50
47
  Requires-Dist: sphinxcontrib-fulltoc>=1.2.0; extra == "doc"
48
+ Provides-Extra: dev
49
+ Requires-Dist: linode_api4[unit-test]; extra == "dev"
50
+ Requires-Dist: linode_api4[int-test]; extra == "dev"
51
+ Requires-Dist: linode_api4[lint]; extra == "dev"
52
+ Requires-Dist: linode_api4[doc]; extra == "dev"
51
53
  Dynamic: license-file
52
54
 
53
55
  linode_api4
@@ -154,14 +156,13 @@ Tests
154
156
  -----
155
157
 
156
158
  Tests live in the ``test`` directory. When invoking tests, make sure you are
157
- in the root directory of this project. To run the full suite across all
158
- supported python versions, use tox_:
159
+ in the root directory of this project. Install unit-test dependencies and run
160
+ the mocked unit suite with:
159
161
 
160
162
  .. code-block:: shell
161
163
 
162
- tox
163
-
164
- Running tox also runs pylint and coverage reports.
164
+ python3 -m pip install -e ".[unit-test]"
165
+ make test-unit
165
166
 
166
167
  The test suite uses fixtures stored as JSON in ``test/fixtures``. These files
167
168
  contain sanitized JSON responses from the API - the file name is the URL called
@@ -183,8 +184,6 @@ from the api base url that should be returned, for example::
183
184
  linode = self.client.linode.instance_create('g6-standard-2', 'us-east')
184
185
  self.assertEqual(linode.id, 123) # passes
185
186
 
186
- .. _tox: http://tox.readthedocs.io
187
-
188
187
 
189
188
  Integration Tests
190
189
  -----------------
@@ -3,25 +3,32 @@ polling
3
3
  deprecated
4
4
 
5
5
  [dev]
6
- tox>=4.4.0
7
- mock>=5.0.0
8
- pytest>=7.3.1
9
- httpretty>=1.1.4
6
+ linode_api4[unit-test]
7
+ linode_api4[int-test]
8
+ linode_api4[lint]
9
+ linode_api4[doc]
10
+
11
+ [doc]
12
+ Sphinx>=6.0.0
13
+ sphinx-autobuild>=2021.3.14
14
+ sphinxcontrib-fulltoc>=1.2.0
15
+
16
+ [int-test]
17
+ linode_api4[test-shared]
18
+
19
+ [lint]
10
20
  black>=23.1.0
11
21
  isort>=5.12.0
12
22
  autoflake>=2.0.1
13
23
  pylint
14
24
  twine>=4.0.2
15
25
  build>=0.10.0
16
- Sphinx>=6.0.0
17
- sphinx-autobuild>=2021.3.14
18
- sphinxcontrib-fulltoc>=1.2.0
19
- pytest-rerunfailures
20
26
 
21
- [doc]
22
- Sphinx>=6.0.0
23
- sphinx-autobuild>=2021.3.14
24
- sphinxcontrib-fulltoc>=1.2.0
27
+ [test-shared]
28
+ pytest>=7.3.1
29
+ httpretty>=1.1.4
30
+ pytest-rerunfailures
25
31
 
26
- [test]
27
- tox>=4.4.0
32
+ [unit-test]
33
+ linode_api4[test-shared]
34
+ mock>=5.0.0
@@ -35,32 +35,37 @@ dependencies = ["requests", "polling", "deprecated"]
35
35
  dynamic = ["version"]
36
36
 
37
37
  [project.optional-dependencies]
38
- test = ["tox>=4.4.0"]
39
-
40
- dev = [
41
- "tox>=4.4.0",
42
- "mock>=5.0.0",
38
+ test-shared = [
43
39
  "pytest>=7.3.1",
44
40
  "httpretty>=1.1.4",
41
+ "pytest-rerunfailures",
42
+ ]
43
+ unit-test = [
44
+ "linode_api4[test-shared]",
45
+ "mock>=5.0.0",
46
+ ]
47
+ int-test = [
48
+ "linode_api4[test-shared]",
49
+ ]
50
+ lint = [
45
51
  "black>=23.1.0",
46
52
  "isort>=5.12.0",
47
53
  "autoflake>=2.0.1",
48
54
  "pylint",
49
55
  "twine>=4.0.2",
50
56
  "build>=0.10.0",
51
- "Sphinx>=6.0.0",
52
- "sphinx-autobuild>=2021.3.14",
53
- "sphinxcontrib-fulltoc>=1.2.0",
54
- "build>=0.10.0",
55
- "twine>=4.0.2",
56
- "pytest-rerunfailures",
57
57
  ]
58
-
59
58
  doc = [
60
59
  "Sphinx>=6.0.0",
61
60
  "sphinx-autobuild>=2021.3.14",
62
61
  "sphinxcontrib-fulltoc>=1.2.0",
63
62
  ]
63
+ dev = [
64
+ "linode_api4[unit-test]",
65
+ "linode_api4[int-test]",
66
+ "linode_api4[lint]",
67
+ "linode_api4[doc]",
68
+ ]
64
69
 
65
70
  [project.urls]
66
71
  Homepage = "https://github.com/linode/linode_api4-python"
@@ -19,6 +19,8 @@
19
19
  "label": "linode123",
20
20
  "backups": {
21
21
  "enabled": true,
22
+ "available": true,
23
+ "last_successful": "2018-01-01T00:01:01",
22
24
  "schedule": {
23
25
  "window": "W02",
24
26
  "day": "Scheduling"
@@ -8,6 +8,9 @@
8
8
  "ipv4": "203.0.113.1",
9
9
  "ipv6": null,
10
10
  "label": "balancer12345",
11
+ "type": "premium",
12
+ "backend_connectivity": "ipv6",
13
+ "backend_ipv6_prefix": "2600:3c22:1:20:0:3039::/96",
11
14
  "region": "us-east",
12
15
  "tags": [
13
16
  "example tag",
@@ -11,7 +11,10 @@
11
11
  "label": "balancer123456",
12
12
  "client_conn_throttle": 0,
13
13
  "tags": ["something"],
14
- "locks": ["cannot_delete_with_subresources"]
14
+ "locks": ["cannot_delete_with_subresources"],
15
+ "type": "premium",
16
+ "backend_connectivity": "ipv6",
17
+ "backend_ipv6_prefix": "2600:3c22:1:20:0:3039::/96"
15
18
  },
16
19
  {
17
20
  "created": "2018-01-01T00:01:01",
@@ -24,7 +27,10 @@
24
27
  "label": "balancer123457",
25
28
  "client_conn_throttle": 0,
26
29
  "tags": [],
27
- "locks": []
30
+ "locks": [],
31
+ "type": "premium",
32
+ "backend_connectivity": "ipv6",
33
+ "backend_ipv6_prefix": null
28
34
  }
29
35
  ],
30
36
  "results": 2,
@@ -13,5 +13,8 @@
13
13
  ],
14
14
  "locks": [
15
15
  "cannot_delete_with_subresources"
16
- ]
17
- }
16
+ ],
17
+ "type": "premium",
18
+ "backend_connectivity": "ipv6",
19
+ "backend_ipv6_prefix": "2600:3c22:1:20:0:3039::/96"
20
+ }
@@ -106,11 +106,18 @@ def test_create_nb(test_linode_client, e2e_test_firewall):
106
106
  label=label,
107
107
  firewall=e2e_test_firewall.id,
108
108
  client_udp_sess_throttle=5,
109
+ type="premium",
110
+ backend_connectivity="ipv6",
109
111
  )
110
112
 
111
113
  assert TEST_REGION, nb.region
112
114
  assert label == nb.label
113
115
  assert 5 == nb.client_udp_sess_throttle
116
+ assert nb.type == "premium"
117
+ assert nb.backend_connectivity == "ipv6"
118
+ assert nb.backend_ipv6_prefix is None or isinstance(
119
+ nb.backend_ipv6_prefix, str
120
+ )
114
121
 
115
122
  nb.delete()
116
123
 
@@ -5,6 +5,7 @@ from linode_api4 import FirewallCreateDevicesOptions, LongviewSubscription
5
5
  from linode_api4.objects.beta import BetaProgram
6
6
  from linode_api4.objects.linode import Instance
7
7
  from linode_api4.objects.networking import IPAddress
8
+ from linode_api4.objects.nodebalancer import NodeBalancerBackendConnectivity
8
9
  from linode_api4.objects.object_storage import (
9
10
  ObjectStorageACL,
10
11
  ObjectStorageCluster,
@@ -1589,6 +1590,84 @@ class NodeBalancerGroupTest(ClientBaseCase):
1589
1590
  self.assertEqual(types[0].region_prices[0].hourly, 0.018)
1590
1591
  self.assertEqual(types[0].region_prices[0].monthly, 12)
1591
1592
 
1593
+ def test_create_with_type_and_backend_connectivity(self):
1594
+ """
1595
+ Tests that creating a NodeBalancer forwards type, backend_connectivity,
1596
+ vpcs, and config node addresses.
1597
+ """
1598
+ with self.mock_post(
1599
+ {
1600
+ "id": 1234,
1601
+ "label": "my-premium-nb",
1602
+ "type": "premium",
1603
+ "backend_connectivity": "ipv6",
1604
+ "backend_ipv6_prefix": "2600:3c22:1:20:0:3039::/96",
1605
+ "region": "us-east",
1606
+ }
1607
+ ) as m:
1608
+ nb = self.client.nodebalancers.create(
1609
+ "us-east",
1610
+ label="my-premium-nb",
1611
+ type="premium",
1612
+ backend_connectivity=NodeBalancerBackendConnectivity.IPV6,
1613
+ configs=[
1614
+ {
1615
+ "port": 80,
1616
+ "nodes": [
1617
+ {
1618
+ "address": "[2001:db8:abcd:0012::1]:80",
1619
+ "label": "node1",
1620
+ }
1621
+ ],
1622
+ }
1623
+ ],
1624
+ )
1625
+
1626
+ self.assertEqual(m.call_url, "/nodebalancers")
1627
+ self.assertEqual(m.call_data["region"], "us-east")
1628
+ self.assertEqual(m.call_data["type"], "premium")
1629
+ self.assertEqual(m.call_data["backend_connectivity"], "ipv6")
1630
+ self.assertIs(type(m.call_data["backend_connectivity"]), str)
1631
+ self.assertEqual(
1632
+ m.call_data["configs"][0]["nodes"][0]["address"],
1633
+ "[2001:db8:abcd:0012::1]:80",
1634
+ )
1635
+ self.assertEqual(nb.id, 1234)
1636
+ self.assertEqual(nb.type, "premium")
1637
+ self.assertEqual(nb.backend_connectivity, "ipv6")
1638
+ self.assertEqual(
1639
+ nb.backend_ipv6_prefix, "2600:3c22:1:20:0:3039::/96"
1640
+ )
1641
+ self.assertNotIn("backend_ipv6_prefix", m.call_data)
1642
+
1643
+ def test_create_with_vpc_backend_connectivity(self):
1644
+ """
1645
+ Tests that creating a NodeBalancer forwards vpc backend connectivity.
1646
+ """
1647
+ with self.mock_post(
1648
+ {
1649
+ "id": 1234,
1650
+ "label": "my-nb",
1651
+ "type": "common",
1652
+ "backend_connectivity": "vpc",
1653
+ "region": "us-east",
1654
+ }
1655
+ ) as m:
1656
+ nb = self.client.nodebalancers.create(
1657
+ "us-east",
1658
+ label="my-nb",
1659
+ backend_connectivity="vpc",
1660
+ vpcs=[{"subnet_id": 123456, "ipv4_range": "10.0.250.4/30"}],
1661
+ )
1662
+
1663
+ self.assertEqual(m.call_url, "/nodebalancers")
1664
+ self.assertEqual(m.call_data["backend_connectivity"], "vpc")
1665
+ self.assertEqual(
1666
+ m.call_data["vpcs"],
1667
+ [{"subnet_id": 123456, "ipv4_range": "10.0.250.4/30"}],
1668
+ )
1669
+ self.assertEqual(nb.backend_connectivity, "vpc")
1670
+
1592
1671
 
1593
1672
  class VolumeGroupTest(ClientBaseCase):
1594
1673
  """
@@ -26,6 +26,8 @@ from linode_api4.objects import (
26
26
  Disk,
27
27
  Image,
28
28
  Instance,
29
+ InstanceBackups,
30
+ InstanceBackupSchedule,
29
31
  StackScript,
30
32
  Type,
31
33
  VPCSubnet,
@@ -59,6 +61,14 @@ class LinodeTest(ClientBaseCase):
59
61
  self.assertEqual(linode.lke_cluster_id, None)
60
62
  self.assertEqual(linode.maintenance_policy, "linode/migrate")
61
63
 
64
+ self.assertIsInstance(linode.backups, InstanceBackups)
65
+ self.assertTrue(linode.backups.enabled)
66
+ self.assertTrue(linode.backups.available)
67
+ self.assertEqual(linode.backups.last_successful, "2018-01-01T00:01:01")
68
+ self.assertIsInstance(linode.backups.schedule, InstanceBackupSchedule)
69
+ self.assertEqual(linode.backups.schedule.day, "Scheduling")
70
+ self.assertEqual(linode.backups.schedule.window, "W02")
71
+
62
72
  json = linode._raw_json
63
73
  self.assertIsNotNone(json)
64
74
  self.assertEqual(json["id"], 123)
@@ -229,6 +239,22 @@ class LinodeTest(ClientBaseCase):
229
239
  },
230
240
  )
231
241
 
242
+ def test_update_linode_backups_disabled(self):
243
+ """
244
+ Tests that an unset backup schedule is sent as explicit nulls
245
+ """
246
+ with self.mock_put("linode/instances/456") as m:
247
+ linode = self.client.load(Instance, 456)
248
+ linode.save()
249
+
250
+ self.assertEqual(
251
+ m.call_data["backups"],
252
+ {
253
+ "enabled": False,
254
+ "schedule": {"day": None, "window": None},
255
+ },
256
+ )
257
+
232
258
  def test_delete_linode(self):
233
259
  """
234
260
  Tests that deleting a Linode creates the correct api request