From e264cbdd2c9efdd2104414658c684ad862f97d23 Mon Sep 17 00:00:00 2001 From: vshanthe Date: Tue, 22 Jul 2025 16:02:04 +0530 Subject: [PATCH 1/2] integration test --- .../models/account/test_account.py | 33 ++++++++++++++ test/integration/models/linode/test_linode.py | 44 +++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/test/integration/models/account/test_account.py b/test/integration/models/account/test_account.py index decad434f..0d7810218 100644 --- a/test/integration/models/account/test_account.py +++ b/test/integration/models/account/test_account.py @@ -59,6 +59,25 @@ def test_get_account_settings(test_linode_client): assert "longview_subscription" in str(account_settings._raw_json) assert "backups_enabled" in str(account_settings._raw_json) assert "object_storage" in str(account_settings._raw_json) + assert "maintenance_policy" in str(account_settings._raw_json) + + +def test_update_maintenance_policy(test_linode_client): + client = test_linode_client + settings = client.load(AccountSettings(client, ""), "") + + original_policy = settings.maintenance_policy + new_policy = ( + "linode/power_off_on" + if original_policy == "linode/migrate" + else "linode/migrate" + ) + + settings.maintenance_policy = new_policy + settings.save() + + updated = client.load(AccountSettings(client, ""), "") + assert updated.maintenance_policy == new_policy @pytest.mark.smoke @@ -132,3 +151,17 @@ def test_get_payments(test_linode_client): if len(payments) > 0: assert isinstance(payments[0].date, datetime) assert isinstance(payments[0].usd, float) + + +def test_get_maintenance_policies(test_linode_client): + client = test_linode_client + + policies = client.maintenance.maintenance_policies() + + assert isinstance(policies, list) + assert all(hasattr(p, "slug") for p in policies) + + slugs = [p.slug for p in policies] + assert any( + slug in slugs for slug in ["linode/migrate", "linode/power_off_on"] + ) diff --git a/test/integration/models/linode/test_linode.py b/test/integration/models/linode/test_linode.py index ade4ca5ed..fb49fefc3 100644 --- a/test/integration/models/linode/test_linode.py +++ b/test/integration/models/linode/test_linode.py @@ -877,3 +877,47 @@ def test_delete_interface_containing_vpc( # returns true when delete successful assert result + + +def test_create_linode_with_maintenance_policy(test_linode_client): + client = test_linode_client + region = get_region(client, {"Linodes"}, site_type="core") + label = get_test_label() + + policies = client.maintenance.maintenance_policies() + assert policies, "No maintenance policies returned from API" + + non_default_policy = next((p for p in policies if not p.is_default), None) + assert non_default_policy, "No non-default maintenance policy available" + + linode_instance, password = client.linode.instance_create( + "g6-nanode-1", + region, + image="linode/debian12", + label=label + "_with_policy", + maintenance_policy_id=non_default_policy.slug, + ) + + assert linode_instance.id is not None + assert linode_instance.label.startswith(label) + assert linode_instance.maintenance_policy == non_default_policy.slug + + linode_instance.delete() + + +def test_update_linode_maintenance_policy(create_linode, test_linode_client): + client = test_linode_client + linode = create_linode + + policies = client.maintenance.maintenance_policies() + assert policies, "No maintenance policies returned from API" + + non_default_policy = next((p for p in policies if not p.is_default), None) + assert non_default_policy, "No non-default maintenance policy found" + + linode.maintenance_policy_id = non_default_policy.slug + result = linode.save() + + linode.invalidate() + assert result + assert linode.maintenance_policy_id == non_default_policy.slug From 32edf959d4e426b8cdb40384737f1989695f912e Mon Sep 17 00:00:00 2001 From: vshanthe Date: Wed, 30 Jul 2025 12:12:05 +0530 Subject: [PATCH 2/2] address_PR_comments --- test/integration/models/account/test_account.py | 14 -------------- .../models/maintenance/test_maintenance.py | 12 ++++++++++++ 2 files changed, 12 insertions(+), 14 deletions(-) create mode 100644 test/integration/models/maintenance/test_maintenance.py diff --git a/test/integration/models/account/test_account.py b/test/integration/models/account/test_account.py index 0d7810218..b56a65cb1 100644 --- a/test/integration/models/account/test_account.py +++ b/test/integration/models/account/test_account.py @@ -151,17 +151,3 @@ def test_get_payments(test_linode_client): if len(payments) > 0: assert isinstance(payments[0].date, datetime) assert isinstance(payments[0].usd, float) - - -def test_get_maintenance_policies(test_linode_client): - client = test_linode_client - - policies = client.maintenance.maintenance_policies() - - assert isinstance(policies, list) - assert all(hasattr(p, "slug") for p in policies) - - slugs = [p.slug for p in policies] - assert any( - slug in slugs for slug in ["linode/migrate", "linode/power_off_on"] - ) diff --git a/test/integration/models/maintenance/test_maintenance.py b/test/integration/models/maintenance/test_maintenance.py new file mode 100644 index 000000000..509d06cf6 --- /dev/null +++ b/test/integration/models/maintenance/test_maintenance.py @@ -0,0 +1,12 @@ +def test_get_maintenance_policies(test_linode_client): + client = test_linode_client + + policies = client.maintenance.maintenance_policies() + + assert isinstance(policies, list) + assert all(hasattr(p, "slug") for p in policies) + + slugs = [p.slug for p in policies] + assert any( + slug in slugs for slug in ["linode/migrate", "linode/power_off_on"] + )