graph LR
API_Client["API Client"]
API_Resource_Groups["API Resource Groups"]
API_Resource_Data_Models["API Resource Data Models"]
Pagination_Handler["Pagination Handler"]
Filtering_Module["Filtering Module"]
Serialization_and_Deserialization["Serialization and Deserialization"]
Utility_Functions["Utility Functions"]
Error_Handling["Error Handling"]
Polling_Mechanism["Polling Mechanism"]
API_Client -- "initializes and uses" --> API_Resource_Groups
API_Resource_Groups -- "creates and manages" --> API_Resource_Data_Models
API_Client -- "returns" --> Pagination_Handler
API_Client -- "uses for queries" --> Filtering_Module
API_Client -- "uses for data conversion" --> Serialization_and_Deserialization
API_Client -- "uses for data preparation" --> Utility_Functions
API_Client -- "raises" --> Error_Handling
API_Client -- "monitors events via" --> Polling_Mechanism
API_Resource_Data_Models -- "inherits from" --> Serialization_and_Deserialization
API_Resource_Data_Models -- "uses for data manipulation" --> Utility_Functions
Filtering_Module -- "generates" --> Filtering_Module
Serialization_and_Deserialization -- "processes data for" --> API_Resource_Data_Models
Utility_Functions -- "processes data for" --> API_Resource_Data_Models
Utility_Functions -- "processes data for" --> API_Resource_Groups
Error_Handling -- "handles errors from" --> API_Client
Pagination_Handler -- "provides data to" --> API_Resource_Data_Models
API_Resource_Data_Models -- "invokes" --> API_Client
This graph provides an overview of the API Resource Data Models component within the python-linode-api project, detailing its structure, purpose, and interactions with other key components. The API Resource Data Models component defines concrete data models for various Linode API resources, extending core API data models to include resource-specific attributes and methods. It interacts with the API Client for performing actions on resources, relies on Serialization and Deserialization for data conversion, and utilizes Utility Functions for data manipulation. The overall flow involves the API Client initializing and using API Resource Groups, which in turn create and manage instances of API Resource Data Models. The API Client also handles pagination through the Pagination Handler, uses the Filtering Module for queries, and incorporates Error Handling for robust operation. The Polling Mechanism allows for monitoring asynchronous API events.
The central interface for interacting with the Linode API. It manages authentication, constructs and sends HTTP requests, handles retries, and provides access to various API resource groups. It also includes methods for loading specific API objects and handling paginated responses.
Related Classes/Methods:
linode_api4.linode_client.LinodeClient(54:488)linode_api4.linode_client._api_call(full file reference)linode_api4.linode_client._get_objects(full file reference)linode_api4.linode_client.get(full file reference)linode_api4.linode_client.post(full file reference)linode_api4.linode_client.put(full file reference)linode_api4.linode_client.delete(full file reference)linode_api4.linode_client.load(full file reference)
These classes organize and encapsulate methods for managing specific Linode API resources, such as Linodes, Databases, Accounts, and Domains. They act as facades, providing a structured way to interact with different parts of the Linode API through the main API Client.
Related Classes/Methods:
linode_api4.groups.placement.PlacementAPIGroup.group_create(34:76)linode_api4.groups.database.DatabaseGroup.mysql_create(122:184)linode_api4.groups.database.DatabaseGroup.postgresql_create(256:321)linode_api4.groups.tag.TagGroup.create(28:116)linode_api4.groups.volume.VolumeGroup.create(28:77)linode_api4.groups.object_storage.ObjectStorageGroup.keys_create(93:195)linode_api4.groups.support.SupportGroup.ticket_open(38:105)linode_api4.groups.domain.DomainGroup.create(27:61)linode_api4.groups.linode.LinodeGroup.instance_create(136:356)linode_api4.groups.linode.LinodeGroup.stackscript_create(392:451)linode_api4.groups.account.AccountGroup.__call__(29:49)linode_api4.groups.lke.LKEGroup.cluster_create(61:149)linode_api4.groups.image.ImageGroup.create(33:83)linode_api4.groups.nodebalancer.NodeBalancerGroup.create(27:52)linode_api4.groups.profile.ProfileGroup.__call__(23:44)linode_api4.groups.networking.NetworkingGroup.firewall_create(36:95)
Concrete data models representing various Linode API resources such as Linode instances, databases, object storage, networking components, LKE clusters, NodeBalancers, account details, user profiles, domains, volumes, images, tags, support tickets, placement groups, and regions. These models extend linode_api4.objects.base.Base (the core API data model) and linode_api4.objects.serializable.JSONObject to provide resource-specific attributes and methods, and facilitate serialization and deserialization. They provide properties to access resource attributes and methods to perform actions on the specific resource, such as updating, deleting, or performing resource-specific operations.
Related Classes/Methods:
linode_api4.objects.base.Base(147:506)linode_api4.objects.base.Base.save(254:295)linode_api4.objects.base.Base.delete(297:306)linode_api4.objects.base.Base.invalidate(308:320)linode_api4.objects.base.Base._api_get(355:360)linode_api4.objects.base.Base._populate(362:453)linode_api4.objects.dbase.DerivedBase(4:27)linode_api4.objects.serializable.JSONObject(43:258)linode_api4.objects.linode.Instance(full file reference)linode_api4.objects.linode.Backup(full file reference)linode_api4.objects.linode.Disk(full file reference)linode_api4.objects.linode.Config(full file reference)linode_api4.objects.linode.NetworkInterface(full file reference)linode_api4.objects.linode.StackScript(full file reference)linode_api4.objects.linode.Type(full file reference)linode_api4.objects.linode.UserDefinedField(full file reference)linode_api4.objects.database.DatabaseType(15:44)linode_api4.objects.database.DatabaseEngine(47:74)linode_api4.objects.database.MySQLDatabase(274:436)linode_api4.objects.database.PostgreSQLDatabase(439:603)linode_api4.objects.database.Database(612:670)linode_api4.objects.object_storage.ObjectStorageBucket(82:502)linode_api4.objects.object_storage.ObjectStorageKeys(561:578)linode_api4.objects.object_storage.ObjectStorageQuota(581:616)linode_api4.objects.networking.Firewall(198:307)linode_api4.objects.networking.IPAddress(60:127)linode_api4.objects.networking.IPv6Range(26:45)linode_api4.objects.networking.FirewallDevice(179:195)linode_api4.objects.lke.LKECluster(267:639)linode_api4.objects.lke.LKENodePool(173:264)linode_api4.objects.lke.LKENodePoolNode(147:170)linode_api4.objects.nodebalancer.NodeBalancer(232:357)linode_api4.objects.nodebalancer.NodeBalancerConfig(75:229)linode_api4.objects.nodebalancer.NodeBalancerNode(30:72)linode_api4.objects.account.Account(25:56)linode_api4.objects.account.AccountSettings(183:201)linode_api4.objects.account.ChildAccount(59:89)linode_api4.objects.account.Event(204:331)linode_api4.objects.account.InvoiceItem(334:366)linode_api4.objects.account.OAuthClient(390:488)linode_api4.objects.account.PaymentMethod(130:162)linode_api4.objects.account.ServiceTransfer(92:127)linode_api4.objects.account.User(507:555)linode_api4.objects.account.UserGrants(619:703)linode_api4.objects.account.Grant(577:616)linode_api4.objects.profile.Profile(59:186)linode_api4.objects.profile.PersonalAccessToken(25:41)linode_api4.objects.profile.SSHKey(189:203)linode_api4.objects.profile.WhitelistEntry(44:56)linode_api4.objects.domain.Domain(34:160)linode_api4.objects.domain.DomainRecord(5:31)linode_api4.objects.volume.Volume(31:147)linode_api4.objects.image.Image(33:89)linode_api4.objects.tag.Tag(19:79)linode_api4.objects.tag.TaggedObjectProxy(82:132)linode_api4.objects.support.SupportTicket(39:190)linode_api4.objects.support.TicketReply(18:36)linode_api4.objects.placement.PlacementGroup(57:128)linode_api4.objects.region.Region(19:51)
This component is responsible for managing and iterating over paginated results returned by the Linode API. It constructs PaginatedList objects that allow users to easily access data across multiple pages without manually handling pagination logic.
Related Classes/Methods:
linode_api4.paginated_list.PaginatedList(6:262)linode_api4.paginated_list.PaginatedList.make_paginated_list(230:262)
This module provides classes and methods for constructing complex filters that can be applied to API queries. It allows users to define conditions for filtering resources based on various attributes, supporting logical operations like AND and OR.
Related Classes/Methods:
linode_api4.objects.filtering.order_by(85:102)linode_api4.objects.filtering.limit(105:119)linode_api4.objects.filtering.Filter.__or__(133:139)linode_api4.objects.filtering.Filter.__and__(141:147)linode_api4.objects.filtering.FilterableAttribute.__eq__(180:181)linode_api4.objects.filtering.FilterableAttribute.contains(188:189)linode_api4.objects.filtering.FilterableMetaclass.__init__(246:251)
This component handles the conversion of Python objects to and from JSON format, which is essential for communicating with the RESTful Linode API. It ensures that data sent in requests is correctly formatted and that responses are parsed into usable Python objects.
Related Classes/Methods:
linode_api4.objects.serializable.JSONObject(43:258)linode_api4.objects.serializable.JSONObject.from_json(149:167)linode_api4.objects.serializable.JSONObject.dict(238:242)linode_api4.objects.serializable.JSONObject._serialize(169:235)linode_api4.objects.serializable.JSONObject._unwrap_type(89:101)linode_api4.objects.serializable.JSONObject._try_from_json(104:114)linode_api4.objects.serializable.JSONObject._parse_attr_list(117:133)linode_api4.objects.serializable.JSONObject._parse_attr(136:146)
This component provides various helper functions that perform common data manipulation tasks, such as removing null keys from dictionaries or flattening request bodies. These utilities support the main API interaction logic by preparing data for requests.
Related Classes/Methods:
linode_api4.util.drop_null_keys(8:29)linode_api4.objects.base._flatten_request_body_recursive(509:535)linode_api4.common.load_and_validate_keys(16:62)
This component defines and manages custom exceptions for API-related errors, such as unexpected responses from the server. It ensures that specific error conditions are caught and handled gracefully, providing meaningful feedback to the user.
Related Classes/Methods:
This component provides functionality for polling Linode API events, allowing the client to wait for specific events to occur or for operations to complete. It is crucial for asynchronous operations where the client needs to monitor the status of a resource.
Related Classes/Methods: