Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 55 additions & 24 deletions test/integration/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
)
from linode_api4.errors import ApiError
from linode_api4.linode_client import LinodeClient, MonitorClient
from linode_api4.objects import Region
from linode_api4.objects import Capability, Region

ENV_TOKEN_NAME = "LINODE_TOKEN"
ENV_API_URL_NAME = "LINODE_API_URL"
Expand All @@ -42,10 +42,10 @@
SKIP_E2E_FIREWALL = "SKIP_E2E_FIREWALL"

ALL_ACCOUNT_AVAILABILITIES = {
"Linodes",
"NodeBalancers",
"Block Storage",
"Kubernetes",
Capability.linodes,
Capability.nodebalancers,
Capability.block_storage,
Capability.lke,
}

logger = logging.getLogger(__name__)
Expand All @@ -61,7 +61,7 @@ def get_api_url():

def get_regions(
client: LinodeClient,
capabilities: Optional[Set[str]] = None,
capabilities: Optional[Set[Capability]] = None,
site_type: Optional[str] = None,
):
region_override = os.environ.get(ENV_REGION_OVERRIDE)
Expand Down Expand Up @@ -115,7 +115,9 @@ def get_regions(


def get_region(
client: LinodeClient, capabilities: Set[str] = None, site_type: str = "core"
client: LinodeClient,
capabilities: Optional[Set[Capability]] = None,
site_type: str = "core",
):
return random.choice(get_regions(client, capabilities, site_type))

Expand Down Expand Up @@ -223,7 +225,11 @@ def create_inbound_rule(ipv4_address, ipv6_address):
def create_linode(test_linode_client, e2e_test_firewall):
client = test_linode_client

region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.firewall},
site_type="core",
)
label = get_test_label(length=8)

linode_instance = client.linode.instance_create(
Expand All @@ -244,7 +250,11 @@ def create_linode(test_linode_client, e2e_test_firewall):
def create_linode_for_pass_reset(test_linode_client, e2e_test_firewall):
client = test_linode_client

region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.firewall},
site_type="core",
)
label = get_test_label(length=8)
password = "aComplex@Password123"

Expand Down Expand Up @@ -337,7 +347,11 @@ def get_domain_status():
@pytest.fixture(scope="session")
def test_volume(test_linode_client):
client = test_linode_client
region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.firewall},
site_type="core",
)
label = get_test_label(length=8)

volume = client.volume_create(label=label, region=region)
Expand All @@ -356,7 +370,7 @@ def get_volume_status():
@pytest.fixture(scope="session")
def test_volume_with_encryption(test_linode_client):
client = test_linode_client
region = get_region(client, {"Block Storage Encryption"})
region = get_region(client, {Capability.blockstorage_encryption})
label = get_test_label(length=8)

volume = client.volume_create(
Expand Down Expand Up @@ -388,7 +402,8 @@ def test_nodebalancer(test_linode_client):
label = get_test_label(length=8)

nodebalancer = client.nodebalancer_create(
region=get_region(client, capabilities={"NodeBalancers"}), label=label
region=get_region(client, capabilities={Capability.nodebalancers}),
label=label,
)

yield nodebalancer
Expand Down Expand Up @@ -475,11 +490,11 @@ def create_vpc(test_linode_client):
region=get_region(
test_linode_client,
{
"VPCs",
"VPC IPv6 Stack",
"Linode Interfaces",
"Custom VPC IPv4 Ranges",
"Linodes",
Capability.vpcs,
Capability.vpc_ipv6_stack,
Capability.linode_interfaces,
Capability.vpc_custom_ipv4_ranges,
Capability.linodes,
},
),
description="test description",
Expand All @@ -497,7 +512,12 @@ def create_vpc_with_rdma_type(test_linode_client):

# GPUDirect RDMA capability not available for now
region = get_region(
test_linode_client, {"VPCs", "VPC IPv6 Stack", "Linode Interfaces"}
test_linode_client,
{
Capability.vpcs,
Capability.vpc_ipv6_stack,
Capability.linode_interfaces,
},
)

vpc = client.vpcs.create(
Expand Down Expand Up @@ -567,7 +587,10 @@ def create_vpc_with_ipv4(test_linode_client):

vpc = client.vpcs.create(
label=get_test_label(length=10),
region=get_region(client, {"VPCs", "Custom VPC IPv4 Ranges"}),
region=get_region(
client,
{Capability.vpcs, Capability.vpc_custom_ipv4_ranges},
),
description="integration test vpc with ipv4",
ipv4=[{"range": "10.0.0.0/8"}],
)
Expand All @@ -587,13 +610,13 @@ def create_multiple_vpcs(test_linode_client):

vpc_1 = client.vpcs.create(
label,
get_region(test_linode_client, {"VPCs"}),
get_region(test_linode_client, {Capability.vpcs}),
description="test description",
)

vpc_2 = client.vpcs.create(
label_2,
get_region(test_linode_client, {"VPCs"}),
get_region(test_linode_client, {Capability.vpcs}),
description="test description",
)

Expand All @@ -612,7 +635,7 @@ def create_placement_group(test_linode_client):

pg = client.placement.group_create(
label,
get_region(test_linode_client, {"Placement Group"}),
get_region(test_linode_client, {Capability.placement_group}),
PlacementGroupType.anti_affinity_local,
PlacementGroupPolicy.flexible,
)
Expand Down Expand Up @@ -652,7 +675,11 @@ def pytest_configure(config):
@pytest.fixture(scope="session")
def linode_for_vlan_tests(test_linode_client, e2e_test_firewall):
client = test_linode_client
region = get_region(client, {"Linodes", "Vlans"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.vlans},
site_type="core",
)
label = get_test_label(length=8)

linode_instance = client.linode.instance_create(
Expand Down Expand Up @@ -811,7 +838,11 @@ def test_monitor_client(get_monitor_token_for_db_entities):
@pytest.fixture
def create_reserved_ip(test_linode_client):
client = test_linode_client
region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.firewall},
site_type="core",
)
reserved_ip = client.networking.reserved_ip_create(
region=region, tags=["test"]
)
Expand Down
7 changes: 6 additions & 1 deletion test/integration/filters/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

import pytest

from linode_api4.objects import Capability


@pytest.fixture(scope="package")
def domain_instance(test_linode_client):
Expand All @@ -23,7 +25,10 @@ def lke_cluster_instance(test_linode_client):
node_type = test_linode_client.linode.types()[1] # g6-standard-1
version = test_linode_client.lke.versions()[0]

region = get_region(test_linode_client, {"Kubernetes", "Disk Encryption"})
region = get_region(
test_linode_client,
{Capability.lke, Capability.disk_encryption},
)

node_pool = test_linode_client.lke.node_pool(node_type, 3)
label = get_test_label() + "_cluster"
Expand Down
25 changes: 19 additions & 6 deletions test/integration/linode_client/test_linode_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
import pytest

from linode_api4 import ApiError
from linode_api4.objects import ConfigInterface, ObjectStorageKeys, Region
from linode_api4.objects import (
Capability,
ConfigInterface,
ObjectStorageKeys,
Region,
)


def is_tag_created(client, tag_label):
Expand All @@ -19,7 +24,11 @@ def is_tag_created(client, tag_label):
@pytest.fixture(scope="session")
def setup_client_and_linode(test_linode_client, e2e_test_firewall):
client = test_linode_client
region = get_region(client, {"Kubernetes", "NodeBalancers"}, "core").id
region = get_region(
client,
{Capability.lke, Capability.nodebalancers},
"core",
).id

label = get_test_label()

Expand Down Expand Up @@ -228,7 +237,7 @@ def test_get_account_settings(test_linode_client):
# LinodeGroupTests
def test_create_linode_instance_without_image(test_linode_client):
client = test_linode_client
region = get_region(client, {"Linodes"}, "core").id
region = get_region(client, {Capability.linodes}, "core").id
label = get_test_label()

linode_instance = client.linode.instance_create(
Expand All @@ -252,7 +261,11 @@ def test_create_linode_instance_with_image(setup_client_and_linode):

def test_create_linode_with_interfaces(test_linode_client):
client = test_linode_client
region = get_region(client, {"Vlans", "Linodes"}, site_type="core").id
region = get_region(
client,
{Capability.vlans, Capability.linodes},
site_type="core",
).id
label = get_test_label()

linode_instance = client.linode.instance_create(
Expand Down Expand Up @@ -325,7 +338,7 @@ def test_cluster_create_with_api_objects(test_linode_client):
client = test_linode_client
node_type = client.linode.types()[1] # g6-standard-1
version = client.lke.versions()[0]
region = get_region(client, {"Kubernetes"})
region = get_region(client, {Capability.lke})
node_pool = client.lke.node_pool(node_type, 3)
label = get_test_label()

Expand All @@ -342,7 +355,7 @@ def test_cluster_create_with_api_objects(test_linode_client):
def test_fails_to_create_cluster_with_invalid_version(test_linode_client):
invalid_version = "a.12"
client = test_linode_client
region = get_region(client, {"Kubernetes"}).id
region = get_region(client, {Capability.lke}).id

with pytest.raises(ApiError, match="not valid") as exc_info:
client.lke.cluster_create(
Expand Down
7 changes: 6 additions & 1 deletion test/integration/models/account/test_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from linode_api4.objects import (
Account,
AccountSettings,
Capability,
ChildAccount,
Event,
Login,
Expand Down Expand Up @@ -100,7 +101,11 @@ def test_update_maintenance_policy(test_linode_client):
def test_latest_get_event(test_linode_client, e2e_test_firewall):
client = test_linode_client

region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.firewall},
site_type="core",
)
label = get_test_label()

linode = client.linode.instance_create(
Expand Down
8 changes: 6 additions & 2 deletions test/integration/models/firewall/test_firewall.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@

import pytest

from linode_api4.objects import Firewall, FirewallDevice
from linode_api4.objects import Capability, Firewall, FirewallDevice


@pytest.fixture(scope="session")
def linode_fw(test_linode_client):
client = test_linode_client
region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
region = get_region(
client,
{Capability.linodes, Capability.firewall},
site_type="core",
)
label = get_test_label()

linode_instance = client.linode.instance_create(
Expand Down
4 changes: 2 additions & 2 deletions test/integration/models/image/test_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pytest

from linode_api4 import LinodeClient
from linode_api4.objects import Image
from linode_api4.objects import Capability, Image

DISALLOWED_IMAGE_REGIONS = {
"gb-lon",
Expand All @@ -30,7 +30,7 @@ def get_image_upload_regions(client: LinodeClient):
region
for region in get_regions(
client,
capabilities={"Linodes", "Object Storage"},
capabilities={Capability.linodes, Capability.object_storage},
site_type="core",
)
if region.id not in DISALLOWED_IMAGE_REGIONS
Expand Down
Loading
Loading