Skip to main content

A client to interact with the Linode Metadata service in Python.

Project description

Linode Metadata Client for Python

Unit Tests E2E Tests PyPI version Documentation Status

This package allows Python projects to easily interact with the Linode Metadata Service.

Getting Started

Prerequisites

Installation

pip install linode-metadata

Building from Source

To build and install this package:

  • Clone this repository
  • make install

Examples

The following code snippets show multiple different ways to use the metadata client and retrieves various metadata of the current Linode.

Basic Usage

from linode_metadata import MetadataClient

client = MetadataClient()

instance_info = client.get_instance()
network_info = client.get_network()
ssh_info = client.get_ssh_keys()
user_data = client.get_user_data()

print("Instance ID:", instance_info.id)
print("Public IPv4:", network_info.ipv4.public[0])
print("SSH Keys:", "; ".join(ssh_info.users))
print("User Data:", user_data)

Asynchronous I/O and Context Manager Support

You can also use the context manager to ensure the HTTP client will be properly closed, and the asyncio enabled client is also available.

import asyncio
from linode_metadata import AsyncMetadataClient

async def get_metadata():
    with AsyncMetadataClient() as client:
        instance_info = await client.get_instance()
        print("Instance ID:", instance_info.id)

asyncio.run(get_metadata())

Watchers

Watchers are useful for monitor changes in the metadata, e.g. newly added IP address to the Linode.

import asyncio
from linode_metadata import AsyncMetadataClient

async def get_metadata():
    async with AsyncMetadataClient() as client:
        watcher = client.get_watcher()
        async for new_network_info in watcher.watch_network():
            print(new_network_info)

asyncio.run(get_metadata())

Testing

Before running tests on this project, please ensure you have a Linode Personal Access Token exported under the LINODE_TOKEN environment variable.

End-to-End Testing Using Ansible

This project contains an Ansible playbook to automatically deploy the necessary infrastructure and run end-to-end tests on it.

To install the dependencies for this playbook, ensure you have Python 3 installed and run the following:

make test-deps

After all dependencies have been installed, you can run the end-to-end test suite by running the following:

make int-test

If your local SSH public key is stored in a location other than ~/.ssh/id_rsa.pub, you may need to override the TEST_PUBKEY argument:

make TEST_PUBKEY=/path/to/my/pubkey int-test

NOTE: To speed up subsequent test runs, the infrastructure provisioned for testing will persist after the test run is complete. This infrastructure is safe to manually remove.

Manual End-to-End Testing

End-to-end tests can also be manually run using the make int-test-local target. This test suite is expected to run from within a Linode instance and will likely fail in other environments.

License

This software is Copyright Akamai Technologies, Inc. and is released under the Apache 2.0 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

linode_metadata-0.3.5.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

linode_metadata-0.3.5-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file linode_metadata-0.3.5.tar.gz.

File metadata

  • Download URL: linode_metadata-0.3.5.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for linode_metadata-0.3.5.tar.gz
Algorithm Hash digest
SHA256 7d83e1677173cc4c8702126c7c0ce09d678017fd24fdd8b809ef8c362bbb80fe
MD5 d40b1dd85b0ca794e1b53c73bd6f42d6
BLAKE2b-256 d9fbcf3b24584286f0e2a96bfe387914e3b1d77383084e85b049c7d05ffcf971

See more details on using hashes here.

Provenance

The following attestation bundles were made for linode_metadata-0.3.5.tar.gz:

Publisher: publish-pypi.yml on linode/py-metadata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file linode_metadata-0.3.5-py3-none-any.whl.

File metadata

File hashes

Hashes for linode_metadata-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 37be834c10eab79e57a0bb5e1859a82543f89844fbf1dace365f37d15658d89a
MD5 318694797fe550d765fafec439866d1e
BLAKE2b-256 fcb6742d15639207fc1d5dc8dd72036e1836e47af2e260a2c5750367dbdf6f6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for linode_metadata-0.3.5-py3-none-any.whl:

Publisher: publish-pypi.yml on linode/py-metadata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page