From fe92e9a1e93a2fa1b9842098f6683772a958d79d Mon Sep 17 00:00:00 2001 From: Michal Wojcik Date: Wed, 11 Feb 2026 08:46:27 +0100 Subject: [PATCH 1/2] python-sdk: Add region capability enum --- linode_api4/objects/__init__.py | 2 +- linode_api4/objects/region.py | 60 +++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/linode_api4/objects/__init__.py b/linode_api4/objects/__init__.py index 009e9436e..89a681635 100644 --- a/linode_api4/objects/__init__.py +++ b/linode_api4/objects/__init__.py @@ -3,7 +3,7 @@ from .dbase import DerivedBase from .serializable import JSONObject from .filtering import and_, or_ -from .region import Region +from .region import Region, Capability from .image import Image from .linode import * from .linode_interfaces import * diff --git a/linode_api4/objects/region.py b/linode_api4/objects/region.py index c9dc05099..2d309b5be 100644 --- a/linode_api4/objects/region.py +++ b/linode_api4/objects/region.py @@ -3,6 +3,66 @@ from linode_api4.errors import UnexpectedResponseError from linode_api4.objects.base import Base, JSONObject, Property +from linode_api4.objects.serializable import StrEnum + + +class Capability(StrEnum): + """ + An enum class representing the capabilities that Linode offers + across different regions and services. + + These capabilities indicate what services are available in each data center. + """ + + ACLB = "Akamai Cloud Load Balancer" + ACLP = "Akamai Cloud Pulse" + ACLPStreams = "Akamai Cloud Pulse Streams" + AkamaiRAMProtection = "Akamai RAM Protection" + Backups = "Backups" + BareMetal = "Bare Metal" + BlockStorage = "Block Storage" + BlockStorageEncryption = "Block Storage Encryption" + BlockStorageMigrations = "Block Storage Migrations" + BlockStoragePerformanceB1 = "Block Storage Performance B1" + BlockStoragePerformanceB1Default = "Block Storage Performance B1 Default" + CloudFirewall = "Cloud Firewall" + CloudFirewallRuleSet = "Cloud Firewall Rule Set" + CloudNAT = "Cloud NAT" + DBAAS = "Managed Databases" + DBAASBeta = "Managed Databases Beta" + DiskEncryption = "Disk Encryption" + DistributedPlans = "Distributed Plans" + EdgePlans = "Edge Plans" + GPU = "GPU Linodes" + KubernetesEnterprise = "Kubernetes Enterprise" + KubernetesEnterpriseBYOVPC = "Kubernetes Enterprise BYO VPC" + KubernetesEnterpriseDualStack = "Kubernetes Enterprise Dual Stack" + LADiskEncryption = "LA Disk Encryption" + LinodeInterfaces = "Linode Interfaces" + Linodes = "Linodes" + LKE = "Kubernetes" + LKEControlPlaneACL = "LKE Network Access Control List (IP ACL)" + LKEHAControlPlanes = "LKE HA Control Planes" + MachineImages = "Machine Images" + MaintenancePolicy = "Maintenance Policy" + Metadata = "Metadata" + NLB = "Network LoadBalancer" + NodeBalancers = "NodeBalancers" + ObjectStorage = "Object Storage" + ObjectStorageAccessKeyRegions = "Object Storage Access Key Regions" + ObjectStorageEndpointTypes = "Object Storage Endpoint Types" + PlacementGroup = "Placement Group" + PremiumPlans = "Premium Plans" + QuadraT1UVPU = "NETINT Quadra T1U" + SMTPEnabled = "SMTP Enabled" + StackScripts = "StackScripts" + SupportTicketSeverity = "Support Ticket Severity" + Vlans = "Vlans" + VPCs = "VPCs" + VPCDualStack = "VPC Dual Stack" + VPCIPv6Stack = "VPC IPv6 Stack" + VPCIPv6LargePrefixes = "VPC IPv6 Large Prefixes" + VPCsExtra = "VPCs Extra" @dataclass From 958cc3fa0c2a4e2a813d9262458c51c3e7be0885 Mon Sep 17 00:00:00 2001 From: Michal Wojcik Date: Wed, 11 Feb 2026 09:30:08 +0100 Subject: [PATCH 2/2] python-sdk: Add region capability enum --- linode_api4/objects/region.py | 100 +++++++++++++++++----------------- 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/linode_api4/objects/region.py b/linode_api4/objects/region.py index 2d309b5be..855807bdb 100644 --- a/linode_api4/objects/region.py +++ b/linode_api4/objects/region.py @@ -14,55 +14,57 @@ class Capability(StrEnum): These capabilities indicate what services are available in each data center. """ - ACLB = "Akamai Cloud Load Balancer" - ACLP = "Akamai Cloud Pulse" - ACLPStreams = "Akamai Cloud Pulse Streams" - AkamaiRAMProtection = "Akamai RAM Protection" - Backups = "Backups" - BareMetal = "Bare Metal" - BlockStorage = "Block Storage" - BlockStorageEncryption = "Block Storage Encryption" - BlockStorageMigrations = "Block Storage Migrations" - BlockStoragePerformanceB1 = "Block Storage Performance B1" - BlockStoragePerformanceB1Default = "Block Storage Performance B1 Default" - CloudFirewall = "Cloud Firewall" - CloudFirewallRuleSet = "Cloud Firewall Rule Set" - CloudNAT = "Cloud NAT" - DBAAS = "Managed Databases" - DBAASBeta = "Managed Databases Beta" - DiskEncryption = "Disk Encryption" - DistributedPlans = "Distributed Plans" - EdgePlans = "Edge Plans" - GPU = "GPU Linodes" - KubernetesEnterprise = "Kubernetes Enterprise" - KubernetesEnterpriseBYOVPC = "Kubernetes Enterprise BYO VPC" - KubernetesEnterpriseDualStack = "Kubernetes Enterprise Dual Stack" - LADiskEncryption = "LA Disk Encryption" - LinodeInterfaces = "Linode Interfaces" - Linodes = "Linodes" - LKE = "Kubernetes" - LKEControlPlaneACL = "LKE Network Access Control List (IP ACL)" - LKEHAControlPlanes = "LKE HA Control Planes" - MachineImages = "Machine Images" - MaintenancePolicy = "Maintenance Policy" - Metadata = "Metadata" - NLB = "Network LoadBalancer" - NodeBalancers = "NodeBalancers" - ObjectStorage = "Object Storage" - ObjectStorageAccessKeyRegions = "Object Storage Access Key Regions" - ObjectStorageEndpointTypes = "Object Storage Endpoint Types" - PlacementGroup = "Placement Group" - PremiumPlans = "Premium Plans" - QuadraT1UVPU = "NETINT Quadra T1U" - SMTPEnabled = "SMTP Enabled" - StackScripts = "StackScripts" - SupportTicketSeverity = "Support Ticket Severity" - Vlans = "Vlans" - VPCs = "VPCs" - VPCDualStack = "VPC Dual Stack" - VPCIPv6Stack = "VPC IPv6 Stack" - VPCIPv6LargePrefixes = "VPC IPv6 Large Prefixes" - VPCsExtra = "VPCs Extra" + linodes = "Linodes" + nodebalancers = "NodeBalancers" + block_storage = "Block Storage" + object_storage = "Object Storage" + object_storage_regions = "Object Storage Access Key Regions" + object_storage_endpoint_types = "Object Storage Endpoint Types" + lke = "Kubernetes" + lke_ha_controlplanes = "LKE HA Control Planes" + lke_e = "Kubernetes Enterprise" + firewall = "Cloud Firewall" + gpu = "GPU Linodes" + vlans = "Vlans" + vpcs = "VPCs" + vpcs_extra = "VPCs Extra" + machine_images = "Machine Images" + dbaas = "Managed Databases" + dbaas_beta = "Managed Databases Beta" + bs_migrations = "Block Storage Migrations" + metadata = "Metadata" + premium_plans = "Premium Plans" + edge_plans = "Edge Plans" + distributed_plans = "Distributed Plans" + lke_control_plane_acl = "LKE Network Access Control List (IP ACL)" + aclb = "Akamai Cloud Load Balancer" + support_ticket_severity = "Support Ticket Severity" + backups = "Backups" + placement_group = "Placement Group" + disk_encryption = "Disk Encryption" + la_disk_encryption = "LA Disk Encryption" + akamai_ram_protection = "Akamai RAM Protection" + blockstorage_encryption = "Block Storage Encryption" + blockstorage_perf_b1 = "Block Storage Performance B1" + blockstorage_perf_b1_default = "Block Storage Performance B1 Default" + aclp = "Akamai Cloud Pulse" + aclp_logs = "Akamai Cloud Pulse Logs" + aclp_logs_lkee = "Akamai Cloud Pulse Logs LKE-E Audit" + aclp_logs_dc_lkee = "ACLP Logs Datacenter LKE-E" + smtp_enabled = "SMTP Enabled" + stackscripts = "StackScripts" + vpu = "NETINT Quadra T1U" + linode_interfaces = "Linode Interfaces" + maintenance_policy = "Maintenance Policy" + vpc_dual_stack = "VPC Dual Stack" + vpc_ipv6_stack = "VPC IPv6 Stack" + nlb = "Network LoadBalancer" + natgateway = "NAT Gateway" + lke_e_byovpc = "Kubernetes Enterprise BYO VPC" + lke_e_stacktype = "Kubernetes Enterprise Dual Stack" + ruleset = "Cloud Firewall Rule Set" + prefixlists = "Cloud Firewall Prefix Lists" + current_prefixlists = "Cloud Firewall Prefix List Current References" @dataclass