linode-api4 5.45.0__tar.gz → 5.46.1__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.
- {linode_api4-5.45.0/linode_api4.egg-info → linode_api4-5.46.1}/PKG-INFO +1 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/monitor.py +94 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/object_storage.py +2 -2
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/vpc.py +24 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/monitor.py +1 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/vpc.py +34 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/version.py +1 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1/linode_api4.egg-info}/PKG-INFO +1 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4.egg-info/SOURCES.txt +2 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_alert-definitions.json +3 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_alert-definitions.json +5 -2
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_alert-definitions_12345.json +5 -2
- linode_api4-5.46.1/test/fixtures/monitor_services_dbaas_alert-definitions_12345_clone.json +57 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/vpcs.json +5 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/vpcs_123456.json +5 -0
- linode_api4-5.46.1/test/fixtures/vpcs_default-ranges.json +10 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/conftest.py +24 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/linode/test_linode.py +17 -12
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/lke/test_lke.py +0 -11
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/monitor/test_monitor.py +142 -24
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/networking/test_networking.py +1 -5
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/vpc/test_vpc.py +31 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/monitor_api_test.py +77 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/vpc_test.py +18 -1
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/linode_client_test.py +1 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/lke_test.py +0 -11
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/vpc_test.py +1 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/LICENSE +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/MANIFEST.in +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/README.rst +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/examples/install-on-linode/app.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/examples/install-on-linode/make_stackscript.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/common.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/errors.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/account.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/beta.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/database.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/domain.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/group.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/image.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/image_share_group.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/linode.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/lke.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/lke_tier.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/lock.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/longview.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/maintenance.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/monitor_api.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/networking.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/nodebalancer.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/placement.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/polling.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/profile.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/region.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/support.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/tag.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/groups/volume.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/linode_client.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/login_client.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/account.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/base.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/beta.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/database.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/dbase.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/domain.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/filtering.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/image.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/image_share_group.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/linode.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/linode_interfaces.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/lke.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/lock.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/longview.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/monitor_api.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/networking.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/nodebalancer.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/object_storage.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/placement.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/profile.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/region.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/serializable.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/support.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/tag.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/objects/volume.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/paginated_list.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/polling.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4/util.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4.egg-info/dependency_links.txt +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4.egg-info/requires.txt +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/linode_api4.egg-info/top_level.txt +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/pyproject.toml +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/setup.cfg +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/setup.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_availability.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_availability_us-east.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_betas.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_betas_cool.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_child-accounts.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_child-accounts_123456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_child-accounts_123456_token.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_events_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_invoices.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_invoices_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_invoices_123456_items.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_logins.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_logins_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_maintenance.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_notifications.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_oauth-clients_2737bf16b39ab5d7b4a1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_payment-method_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_payment-methods.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_payments.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_promo-codes.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_service-transfers.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_service-transfers_12345.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_settings.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_transfer.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/account_users_test-user.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/betas.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/betas_active.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_engines.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_instances.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_config.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances_123_credentials.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances_123_credentials_reset.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances_123_patch.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances_123_resume.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances_123_ssl.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_mysql_instances_123_suspend.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_config.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances_123_credentials.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances_123_credentials_reset.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances_123_patch.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances_123_resume.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances_123_ssl.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_postgresql_instances_123_suspend.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/databases_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/domains.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/domains_12345_clone.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/domains_12345_records.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/domains_12345_zone-file.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/domains_import.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_private_1234_sharegroups.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_private_123_regions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_private_1337.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_1234.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_1234_images.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_1234_images_shared_1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_1234_members.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_1234_members_abc123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_tokens.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_tokens_abc123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_tokens_abc123_sharegroup.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_sharegroups_tokens_abc123_sharegroup_images.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/images_upload.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_backups.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs_456789.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs_456789_interfaces.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs_456789_interfaces_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs_456789_interfaces_123_put.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs_456789_interfaces_321.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_configs_456789_interfaces_456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_disks.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_disks_12345_clone.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_firewalls.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_ips.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_nodebalancers.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_transfer.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_transfer_2023_4.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_123_volumes.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_interfaces.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_interfaces_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_interfaces_123_firewalls.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_interfaces_456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_interfaces_789.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_interfaces_settings.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_instances_124_upgrade-interfaces.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_stackscripts_10079.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/linode_types_g6-nanode-1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18881.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18881_control__plane__acl.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18881_dashboard.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18881_nodes_123456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18881_pools_456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18882.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_clusters_18882_pools_789.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_tiers_standard_versions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/lke_versions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/locks.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/locks_1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/longview_clients.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/longview_plan.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/longview_subscriptions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/maintenance_policies.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/mongodb.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_alert-channels.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_dashboards.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_dashboards_1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_alert-definitions_12345_entities.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_dashboards.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_metric-definitions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_metrics.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_dbaas_token.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_services_linode_token.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams_1_history.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams_2.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams_3.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams_destinations.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams_destinations_1_history.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/monitor_streams_destinations_2.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/network-transfer_prices.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123_devices.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123_devices_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123_devices_456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123_history.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123_history_rules_2.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_123_rules.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_settings.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_templates.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_templates_public.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_firewalls_templates_vpc.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_ips_127.0.0.1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_ipv6_pools.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_ipv6_ranges.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_ipv6_ranges_2600%3A3c01%3A%3A.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_reserved_ips.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_reserved_ips_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/networking_vlans.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_123456.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_123456_configs.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_123456_configs_65432_nodes.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_12345_configs_4567_rebuild.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_12345_firewalls.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_12345_stats.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/nodebalancers_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east-1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east-1_example-bucket.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-acl.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-list.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_object-url.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east-1_example-bucket_ssl.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_buckets_us-east_example-bucket_access.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_clusters.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_global-quotas.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_global-quotas_obj-access-keys-per-account.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_global-quotas_obj-access-keys-per-account_usage.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_keys.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_quotas.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_quotas_obj-objects-us-ord-1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_quotas_obj-objects-us-ord-1_usage.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_transfer.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/object-storage_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/placement_groups.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/placement_groups_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_device_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_devices.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_logins.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_logins_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_preferences.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_security-questions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/profile_sshkeys.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/regions.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/regions_availability.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/regions_us-east_availability.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/regions_us-east_vpc-availability.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/regions_vpc-availability.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/support_tickets_123.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/tags.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/tags_nothing.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/tags_something.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/testmappedobj1.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/volumes.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/volumes_types.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/vpcs_123456_ips.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/vpcs_123456_subnets.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/vpcs_123456_subnets_789.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/fixtures/vpcs_ips.json +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/filters/fixtures.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/filters/model_filters_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/helpers.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/linode_client/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/linode_client/test_errors.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/linode_client/test_linode_client.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/linode_client/test_retry.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/login_client/test_login_client.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/account/test_account.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/database/helpers.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/database/test_database.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/database/test_database_engine_config.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/domain/test_domain.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/firewall/test_firewall.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/firewall/test_firewall_templates.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/image/test_image.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/linode/interfaces/test_interfaces.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/lock/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/lock/test_lock.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/longview/test_longview.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/maintenance/test_maintenance.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/monitor/test_monitor_logs.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/monitor_api/test_monitor_api.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/nodebalancer/test_nodebalancer.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/object_storage/test_obj.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/object_storage/test_obj_quotas.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/placement/test_placement.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/profile/test_profile.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/region/test_region.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/sharegroups/test_sharegroups.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/tag/test_tag.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/volume/test_blockstorage.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/integration/models/volume/test_volume.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/base.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/errors_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/fixtures.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/__init__.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/database_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/image_share_group_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/image_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/linode_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/lke_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/lke_tier_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/lock_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/networking_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/object_storage_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/placement_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/polling_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/groups/region_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/login_client_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/account_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/base_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/beta_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/database_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/domain_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/firewall_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/image_share_group_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/image_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/linode_interface_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/linode_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/lock_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/longview_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/mapped_object_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/monitor_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/networking_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/nodebalancers_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/object_storage_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/placement_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/profile_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/property_alias_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/region_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/serializable_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/support_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/tag_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/objects/volume_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/paginated_list_test.py +0 -0
- {linode_api4-5.45.0 → linode_api4-5.46.1}/test/unit/util_test.py +0 -0
|
@@ -225,6 +225,7 @@ class MonitorGroup(Group):
|
|
|
225
225
|
description: Optional[str] = None,
|
|
226
226
|
scope: Optional[Union[AlertScope, str]] = None,
|
|
227
227
|
regions: Optional[list[str]] = None,
|
|
228
|
+
group_by: Optional[list[str]] = None,
|
|
228
229
|
) -> AlertDefinition:
|
|
229
230
|
"""
|
|
230
231
|
Create a new alert definition for a given service type.
|
|
@@ -258,6 +259,8 @@ class MonitorGroup(Group):
|
|
|
258
259
|
:type scope: Optional[Union[AlertScope, str]]
|
|
259
260
|
:param regions: (Optional) Regions to monitor.
|
|
260
261
|
:type regions: Optional[list[str]]
|
|
262
|
+
:param group_by: (Optional) Aggregates metric data by dimension so that alert conditions are evaluated independently for each dimension value.
|
|
263
|
+
:type group_by: Optional[list[str]]
|
|
261
264
|
|
|
262
265
|
:returns: The newly created :class:`AlertDefinition`.
|
|
263
266
|
:rtype: AlertDefinition
|
|
@@ -282,6 +285,8 @@ class MonitorGroup(Group):
|
|
|
282
285
|
params["scope"] = scope
|
|
283
286
|
if regions is not None:
|
|
284
287
|
params["regions"] = regions
|
|
288
|
+
if group_by is not None:
|
|
289
|
+
params["group_by"] = group_by
|
|
285
290
|
|
|
286
291
|
# API will validate service_type and return an error if missing
|
|
287
292
|
result = self.client.post(
|
|
@@ -296,6 +301,95 @@ class MonitorGroup(Group):
|
|
|
296
301
|
|
|
297
302
|
return AlertDefinition(self.client, result["id"], service_type, result)
|
|
298
303
|
|
|
304
|
+
def clone_alert_definition(
|
|
305
|
+
self,
|
|
306
|
+
service_type: str,
|
|
307
|
+
id: int,
|
|
308
|
+
label: str,
|
|
309
|
+
description: Optional[str] = None,
|
|
310
|
+
scope: Optional[Union[AlertScope, str]] = None,
|
|
311
|
+
regions: Optional[list[str]] = None,
|
|
312
|
+
entity_ids: Optional[list[str]] = None,
|
|
313
|
+
severity: Optional[int] = None,
|
|
314
|
+
rule_criteria: Optional[dict] = None,
|
|
315
|
+
trigger_conditions: Optional[dict] = None,
|
|
316
|
+
channel_ids: Optional[list[int]] = None,
|
|
317
|
+
group_by: Optional[list[str]] = None,
|
|
318
|
+
) -> AlertDefinition:
|
|
319
|
+
"""
|
|
320
|
+
Clone an existing alert definition for a given service type.
|
|
321
|
+
The clone request creates a new alert definition based on the source
|
|
322
|
+
definition identified by ``id``.
|
|
323
|
+
|
|
324
|
+
API Documentation: TODO
|
|
325
|
+
|
|
326
|
+
:param service_type: Service type for the source alert definition
|
|
327
|
+
(e.g. ``"dbaas"``).
|
|
328
|
+
:type service_type: str
|
|
329
|
+
:param id: Source alert definition identifier.
|
|
330
|
+
:type id: int (Alert identifier)
|
|
331
|
+
:param label: Human-readable label for the cloned alert definition.
|
|
332
|
+
This value is mandatory and must be unique.
|
|
333
|
+
:type label: str
|
|
334
|
+
:param description: (Optional) Longer description for the cloned alert definition.
|
|
335
|
+
:type description: Optional[str]
|
|
336
|
+
:param scope: (Optional) Alert scope provided in the clone request.
|
|
337
|
+
Scope is inherited from the source alert and is immutable.
|
|
338
|
+
:type scope: Optional[Union[AlertScope, str]]
|
|
339
|
+
:param regions: (Optional) Regions to monitor.
|
|
340
|
+
:type regions: Optional[list[str]]
|
|
341
|
+
:param entity_ids: (Optional) Restrict the alert to a subset of entity IDs.
|
|
342
|
+
:type entity_ids: Optional[list[str]]
|
|
343
|
+
:param severity: (Optional) Severity level for the alert.
|
|
344
|
+
:type severity: Optional[int]
|
|
345
|
+
:param rule_criteria: (Optional) Rule criteria used to evaluate the alert.
|
|
346
|
+
:type rule_criteria: Optional[dict]
|
|
347
|
+
:param trigger_conditions: (Optional) Trigger conditions for alert state transitions.
|
|
348
|
+
:type trigger_conditions: Optional[dict]
|
|
349
|
+
:param channel_ids: (Optional) List of alert channel IDs to notify.
|
|
350
|
+
:type channel_ids: Optional[list[int]]
|
|
351
|
+
:param group_by: (Optional) Aggregates metric data by dimension so that alert conditions are evaluated independently for each dimension value.
|
|
352
|
+
:type group_by: Optional[list[str]]
|
|
353
|
+
|
|
354
|
+
:returns: The newly created cloned :class:`AlertDefinition`.
|
|
355
|
+
:rtype: AlertDefinition
|
|
356
|
+
"""
|
|
357
|
+
params = {
|
|
358
|
+
"label": label,
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
if description is not None:
|
|
362
|
+
params["description"] = description
|
|
363
|
+
if scope is not None:
|
|
364
|
+
params["scope"] = scope
|
|
365
|
+
if regions is not None:
|
|
366
|
+
params["regions"] = regions
|
|
367
|
+
if entity_ids is not None:
|
|
368
|
+
params["entity_ids"] = entity_ids
|
|
369
|
+
if severity is not None:
|
|
370
|
+
params["severity"] = severity
|
|
371
|
+
if rule_criteria is not None:
|
|
372
|
+
params["rule_criteria"] = rule_criteria
|
|
373
|
+
if trigger_conditions is not None:
|
|
374
|
+
params["trigger_conditions"] = trigger_conditions
|
|
375
|
+
if channel_ids is not None:
|
|
376
|
+
params["channel_ids"] = channel_ids
|
|
377
|
+
if group_by is not None:
|
|
378
|
+
params["group_by"] = group_by
|
|
379
|
+
|
|
380
|
+
result = self.client.post(
|
|
381
|
+
f"/monitor/services/{service_type}/alert-definitions/{id}/clone",
|
|
382
|
+
data=params,
|
|
383
|
+
)
|
|
384
|
+
|
|
385
|
+
if "id" not in result:
|
|
386
|
+
raise UnexpectedResponseError(
|
|
387
|
+
"Unexpected response when cloning alert definition!",
|
|
388
|
+
json=result,
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
return AlertDefinition(self.client, result["id"], service_type, result)
|
|
392
|
+
|
|
299
393
|
def alert_definition_entities(
|
|
300
394
|
self,
|
|
301
395
|
service_type: str,
|
|
@@ -429,8 +429,8 @@ class ObjectStorageGroup(Group):
|
|
|
429
429
|
json=result,
|
|
430
430
|
)
|
|
431
431
|
|
|
432
|
-
return ObjectStorageBucket(
|
|
433
|
-
|
|
432
|
+
return ObjectStorageBucket.make_instance(
|
|
433
|
+
result["label"], self.client, json=result
|
|
434
434
|
)
|
|
435
435
|
|
|
436
436
|
def object_acl_config(self, cluster_or_region_id: str, bucket, name=None):
|
|
@@ -2,7 +2,14 @@ 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
|
|
5
|
-
from linode_api4.objects import
|
|
5
|
+
from linode_api4.objects import (
|
|
6
|
+
VPC,
|
|
7
|
+
Region,
|
|
8
|
+
VPCIPAddress,
|
|
9
|
+
VPCIPv4DefaultRange,
|
|
10
|
+
VPCIPv4RangeOptions,
|
|
11
|
+
VPCIPv6RangeOptions,
|
|
12
|
+
)
|
|
6
13
|
from linode_api4.objects.base import _flatten_request_body_recursive
|
|
7
14
|
from linode_api4.paginated_list import PaginatedList
|
|
8
15
|
from linode_api4.util import drop_null_keys
|
|
@@ -36,6 +43,7 @@ class VPCGroup(Group):
|
|
|
36
43
|
description: Optional[str] = None,
|
|
37
44
|
subnets: Optional[List[Dict[str, Any]]] = None,
|
|
38
45
|
ipv6: Optional[List[Union[VPCIPv6RangeOptions, Dict[str, Any]]]] = None,
|
|
46
|
+
ipv4: Optional[List[Union[VPCIPv4RangeOptions, Dict[str, Any]]]] = None,
|
|
39
47
|
**kwargs,
|
|
40
48
|
) -> VPC:
|
|
41
49
|
"""
|
|
@@ -53,6 +61,8 @@ class VPCGroup(Group):
|
|
|
53
61
|
:type subnets: List[Dict[str, Any]]
|
|
54
62
|
:param ipv6: The IPv6 address ranges for this VPC.
|
|
55
63
|
:type ipv6: List[Union[VPCIPv6RangeOptions, Dict[str, Any]]]
|
|
64
|
+
:param ipv4: The IPv4 address ranges for this VPC. Note that IPv4 VPCs may not currently be available to all users.
|
|
65
|
+
:type ipv4: List[Union[VPCIPv4RangeOptions, Dict[str, Any]]]
|
|
56
66
|
|
|
57
67
|
:returns: The new VPC object.
|
|
58
68
|
:rtype: VPC
|
|
@@ -61,6 +71,7 @@ class VPCGroup(Group):
|
|
|
61
71
|
"label": label,
|
|
62
72
|
"region": region.id if isinstance(region, Region) else region,
|
|
63
73
|
"description": description,
|
|
74
|
+
"ipv4": ipv4,
|
|
64
75
|
"ipv6": ipv6,
|
|
65
76
|
"subnets": subnets,
|
|
66
77
|
}
|
|
@@ -108,3 +119,15 @@ class VPCGroup(Group):
|
|
|
108
119
|
return self.client._get_and_filter(
|
|
109
120
|
VPCIPAddress, *filters, endpoint="/vpcs/ips"
|
|
110
121
|
)
|
|
122
|
+
|
|
123
|
+
def default_ranges(self) -> VPCIPv4DefaultRange:
|
|
124
|
+
"""
|
|
125
|
+
Retrieve the default settings for the internal and forbidden IPv4 address ranges in VPCs.
|
|
126
|
+
|
|
127
|
+
API Documentation: https://techdocs.akamai.com/linode-api/reference/get-vpcs-default-ranges
|
|
128
|
+
|
|
129
|
+
:returns: The default IPv4 ranges for VPCs.
|
|
130
|
+
:rtype: VPCIPv4DefaultRange
|
|
131
|
+
"""
|
|
132
|
+
result = self.client.get("/vpcs/default-ranges")
|
|
133
|
+
return VPCIPv4DefaultRange.from_json(result)
|
|
@@ -10,6 +10,36 @@ from linode_api4.paginated_list import PaginatedList
|
|
|
10
10
|
from linode_api4.util import drop_null_keys
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
@dataclass
|
|
14
|
+
class VPCIPv4DefaultRange(JSONObject):
|
|
15
|
+
"""
|
|
16
|
+
VPCIPv4DefaultRange represents the default settings for the internal and forbidden IPv4 address ranges in VPCs.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
default_ipv4_ranges: Optional[List[str]] = None
|
|
20
|
+
forbidden_ipv4_ranges: Optional[List[str]] = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass
|
|
24
|
+
class VPCIPv4RangeOptions(JSONObject):
|
|
25
|
+
"""
|
|
26
|
+
VPCIPv4RangeOptions is used to specify an IPv4 range when creating or updating a VPC.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
range: Optional[str] = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass
|
|
33
|
+
class VPCIPv4Range(JSONObject):
|
|
34
|
+
"""
|
|
35
|
+
VPCIPv4Range represents a single VPC IPv4 range.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
put_class = VPCIPv4RangeOptions
|
|
39
|
+
|
|
40
|
+
range: str = ""
|
|
41
|
+
|
|
42
|
+
|
|
13
43
|
@dataclass
|
|
14
44
|
class VPCIPv6RangeOptions(JSONObject):
|
|
15
45
|
"""
|
|
@@ -108,6 +138,10 @@ class VPC(Base):
|
|
|
108
138
|
"label": Property(mutable=True),
|
|
109
139
|
"description": Property(mutable=True),
|
|
110
140
|
"region": Property(slug_relationship=Region),
|
|
141
|
+
# Note that IPv4 VPCs may not currently be available to all users.
|
|
142
|
+
"ipv4": Property(
|
|
143
|
+
json_object=VPCIPv4Range, mutable=True, unordered=True
|
|
144
|
+
),
|
|
111
145
|
"ipv6": Property(json_object=VPCIPv6Range, unordered=True),
|
|
112
146
|
"subnets": Property(derived_class=VPCSubnet),
|
|
113
147
|
"created": Property(is_datetime=True),
|
|
@@ -196,6 +196,7 @@ test/fixtures/monitor_services.json
|
|
|
196
196
|
test/fixtures/monitor_services_dbaas.json
|
|
197
197
|
test/fixtures/monitor_services_dbaas_alert-definitions.json
|
|
198
198
|
test/fixtures/monitor_services_dbaas_alert-definitions_12345.json
|
|
199
|
+
test/fixtures/monitor_services_dbaas_alert-definitions_12345_clone.json
|
|
199
200
|
test/fixtures/monitor_services_dbaas_alert-definitions_12345_entities.json
|
|
200
201
|
test/fixtures/monitor_services_dbaas_dashboards.json
|
|
201
202
|
test/fixtures/monitor_services_dbaas_metric-definitions.json
|
|
@@ -282,6 +283,7 @@ test/fixtures/vpcs_123456.json
|
|
|
282
283
|
test/fixtures/vpcs_123456_ips.json
|
|
283
284
|
test/fixtures/vpcs_123456_subnets.json
|
|
284
285
|
test/fixtures/vpcs_123456_subnets_789.json
|
|
286
|
+
test/fixtures/vpcs_default-ranges.json
|
|
285
287
|
test/fixtures/vpcs_ips.json
|
|
286
288
|
test/integration/__init__.py
|
|
287
289
|
test/integration/conftest.py
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
"description": "A test alert for dbaas service",
|
|
10
10
|
"scope": "entity",
|
|
11
11
|
"regions": [],
|
|
12
|
+
"group_by": [
|
|
13
|
+
"entity_id"
|
|
14
|
+
],
|
|
12
15
|
"entities": {
|
|
13
16
|
"url": "/monitor/services/dbaas/alert-definitions/12345/entities",
|
|
14
17
|
"count": 1,
|
|
@@ -48,8 +51,8 @@
|
|
|
48
51
|
"polling_interval_seconds": 60,
|
|
49
52
|
"trigger_occurrences": 3
|
|
50
53
|
},
|
|
51
|
-
"class": "
|
|
52
|
-
"status": "
|
|
54
|
+
"class": "",
|
|
55
|
+
"status": "enabled",
|
|
53
56
|
"created": "2024-01-01T00:00:00",
|
|
54
57
|
"updated": "2024-01-01T00:00:00",
|
|
55
58
|
"updated_by": "tester"
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
"description": "A test alert for dbaas service",
|
|
8
8
|
"scope": "entity",
|
|
9
9
|
"regions": [],
|
|
10
|
+
"group_by": [
|
|
11
|
+
"entity_id"
|
|
12
|
+
],
|
|
10
13
|
"entities": {
|
|
11
14
|
"url": "/monitor/services/dbaas/alert-definitions/12345/entities",
|
|
12
15
|
"count": 1,
|
|
@@ -46,8 +49,8 @@
|
|
|
46
49
|
"polling_interval_seconds": 60,
|
|
47
50
|
"trigger_occurrences": 3
|
|
48
51
|
},
|
|
49
|
-
"class": "
|
|
50
|
-
"status": "
|
|
52
|
+
"class": "",
|
|
53
|
+
"status": "enabled",
|
|
51
54
|
"created": "2024-01-01T00:00:00",
|
|
52
55
|
"updated": "2024-01-01T00:00:00",
|
|
53
56
|
"updated_by": "tester"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 67891,
|
|
3
|
+
"label": "Cloned Alert",
|
|
4
|
+
"service_type": "dbaas",
|
|
5
|
+
"severity": 1,
|
|
6
|
+
"type": "user",
|
|
7
|
+
"description": "Cloned from source alert",
|
|
8
|
+
"scope": "entity",
|
|
9
|
+
"regions": [],
|
|
10
|
+
"group_by": [
|
|
11
|
+
"entity_id"
|
|
12
|
+
],
|
|
13
|
+
"entities": {
|
|
14
|
+
"url": "/monitor/services/dbaas/alert-definitions/67891/entities",
|
|
15
|
+
"count": 1,
|
|
16
|
+
"has_more_resources": false
|
|
17
|
+
},
|
|
18
|
+
"alert_channels": [
|
|
19
|
+
{
|
|
20
|
+
"id": 10000,
|
|
21
|
+
"label": "Read-Write Channel",
|
|
22
|
+
"type": "email",
|
|
23
|
+
"url": "/monitor/alert-channels/10000"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"rule_criteria": {
|
|
27
|
+
"rules": [
|
|
28
|
+
{
|
|
29
|
+
"aggregate_function": "avg",
|
|
30
|
+
"dimension_filters": [
|
|
31
|
+
{
|
|
32
|
+
"dimension_label": "node_type",
|
|
33
|
+
"label": "Node Type",
|
|
34
|
+
"operator": "eq",
|
|
35
|
+
"value": "primary"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"label": "High CPU Usage",
|
|
39
|
+
"metric": "cpu_usage",
|
|
40
|
+
"operator": "gt",
|
|
41
|
+
"threshold": 90,
|
|
42
|
+
"unit": "percent"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"trigger_conditions": {
|
|
47
|
+
"criteria_condition": "ALL",
|
|
48
|
+
"evaluation_period_seconds": 300,
|
|
49
|
+
"polling_interval_seconds": 60,
|
|
50
|
+
"trigger_occurrences": 3
|
|
51
|
+
},
|
|
52
|
+
"class": "",
|
|
53
|
+
"status": "enabled",
|
|
54
|
+
"created": "2024-01-01T00:00:00",
|
|
55
|
+
"updated": "2024-01-01T00:00:00",
|
|
56
|
+
"updated_by": "tester"
|
|
57
|
+
}
|
|
@@ -286,6 +286,7 @@ def test_linode_client():
|
|
|
286
286
|
token,
|
|
287
287
|
base_url=api_url,
|
|
288
288
|
ca_path=api_ca_file,
|
|
289
|
+
retry_statuses=[504],
|
|
289
290
|
)
|
|
290
291
|
return client
|
|
291
292
|
|
|
@@ -473,7 +474,13 @@ def create_vpc(test_linode_client):
|
|
|
473
474
|
vpc = client.vpcs.create(
|
|
474
475
|
label=label,
|
|
475
476
|
region=get_region(
|
|
476
|
-
test_linode_client,
|
|
477
|
+
test_linode_client,
|
|
478
|
+
{
|
|
479
|
+
"VPCs",
|
|
480
|
+
"VPC IPv6 Stack",
|
|
481
|
+
"Linode Interfaces",
|
|
482
|
+
"Custom VPC IPv4 Ranges",
|
|
483
|
+
},
|
|
477
484
|
),
|
|
478
485
|
description="test description",
|
|
479
486
|
ipv6=[{"range": "auto"}],
|
|
@@ -518,6 +525,22 @@ def create_vpc_with_subnet_and_linode(
|
|
|
518
525
|
instance.delete()
|
|
519
526
|
|
|
520
527
|
|
|
528
|
+
@pytest.fixture
|
|
529
|
+
def create_vpc_with_ipv4(test_linode_client):
|
|
530
|
+
client = test_linode_client
|
|
531
|
+
|
|
532
|
+
vpc = client.vpcs.create(
|
|
533
|
+
label=get_test_label(length=10),
|
|
534
|
+
region=get_region(client, {"VPCs", "Custom VPC IPv4 Ranges"}),
|
|
535
|
+
description="integration test vpc with ipv4",
|
|
536
|
+
ipv4=[{"range": "10.0.0.0/8"}],
|
|
537
|
+
)
|
|
538
|
+
|
|
539
|
+
yield vpc
|
|
540
|
+
|
|
541
|
+
vpc.delete()
|
|
542
|
+
|
|
543
|
+
|
|
521
544
|
@pytest.fixture(scope="session")
|
|
522
545
|
def create_multiple_vpcs(test_linode_client):
|
|
523
546
|
client = test_linode_client
|
|
@@ -23,6 +23,7 @@ from linode_api4.objects import (
|
|
|
23
23
|
Type,
|
|
24
24
|
)
|
|
25
25
|
from linode_api4.objects.linode import InstanceDiskEncryptionType, MigrationType
|
|
26
|
+
from linode_api4.objects.region import RegionAvailabilityEntry
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
@pytest.fixture(scope="session")
|
|
@@ -119,12 +120,23 @@ def linode_and_vpc_for_legacy_interface_tests_offline(
|
|
|
119
120
|
@pytest.fixture(scope="session")
|
|
120
121
|
def linode_for_vpu_tests(test_linode_client, e2e_test_firewall):
|
|
121
122
|
client = test_linode_client
|
|
122
|
-
|
|
123
|
+
vpu_type = "g1-accelerated-netint-vpu-t1u1-s"
|
|
124
|
+
|
|
125
|
+
availability = client.regions.availability(
|
|
126
|
+
RegionAvailabilityEntry.filters.plan == vpu_type
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
region = next(
|
|
130
|
+
(entry.region for entry in availability if entry.available), None
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
if region is None:
|
|
134
|
+
pytest.skip("No VPU capacity is currently available")
|
|
123
135
|
|
|
124
136
|
label = get_test_label(length=8)
|
|
125
137
|
|
|
126
138
|
linode_instance = client.linode.instance_create(
|
|
127
|
-
|
|
139
|
+
vpu_type,
|
|
128
140
|
region,
|
|
129
141
|
image="linode/debian12",
|
|
130
142
|
label=label,
|
|
@@ -848,21 +860,14 @@ def test_get_linode_types(test_linode_client):
|
|
|
848
860
|
for linode_type in types:
|
|
849
861
|
assert hasattr(linode_type, "accelerated_devices")
|
|
850
862
|
|
|
851
|
-
|
|
852
|
-
def test_get_linode_types_overrides(test_linode_client):
|
|
853
|
-
types = test_linode_client.linode.types()
|
|
854
|
-
|
|
855
|
-
target_types = [
|
|
863
|
+
regional_priced_types = [
|
|
856
864
|
v
|
|
857
865
|
for v in types
|
|
858
866
|
if len(v.region_prices) > 0 and v.region_prices[0].hourly > 0
|
|
859
867
|
]
|
|
860
868
|
|
|
861
|
-
assert
|
|
862
|
-
|
|
863
|
-
for linode_type in target_types:
|
|
864
|
-
assert linode_type.region_prices[0].hourly >= 0
|
|
865
|
-
assert linode_type.region_prices[0].monthly >= 0
|
|
869
|
+
assert any(v.region_prices[0].hourly > 0 for v in regional_priced_types)
|
|
870
|
+
assert any(v.region_prices[0].monthly > 0 for v in regional_priced_types)
|
|
866
871
|
|
|
867
872
|
|
|
868
873
|
@pytest.mark.flaky(reruns=3, reruns_delay=2)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import base64
|
|
2
|
-
import re
|
|
3
2
|
from test.integration.conftest import get_region
|
|
4
3
|
from test.integration.helpers import (
|
|
5
4
|
get_test_label,
|
|
@@ -226,16 +225,6 @@ def test_node_pool_create_with_disk_encryption(test_linode_client, lke_cluster):
|
|
|
226
225
|
pool.delete()
|
|
227
226
|
|
|
228
227
|
|
|
229
|
-
def test_cluster_dashboard_url_view(lke_cluster):
|
|
230
|
-
cluster = lke_cluster
|
|
231
|
-
|
|
232
|
-
url = send_request_when_resource_available(
|
|
233
|
-
300, cluster.cluster_dashboard_url_view
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
assert re.search("https://+", url)
|
|
237
|
-
|
|
238
|
-
|
|
239
228
|
def test_get_and_delete_kubeconfig(lke_cluster):
|
|
240
229
|
cluster = lke_cluster
|
|
241
230
|
|