Skip to main content

'loadbalancer' interface protocol API library

Project description

loadbalancer Interface Protocol API Library

This library provides an API for requesting and providing load balancers or ingress endpoints from one charm to another. It can be used in either charms written in the newer Operator Framework or older charms still using the charms.reactive Framework.

Installation / Setup

Include this library as a dependency for your charm, either in requirements.txt for Operator Framework charms, or wheelhouse.txt for reactive charms:

loadbalancer_interface

Usage

Requesting Load Balancers

Requesting a load balancer from a provider is done via the LBProvider class. The general pattern for using the class is:

  • Wait for the provider to become available
  • Get a Request object via the get_request(name) method
  • Set the appropriate fields on the request object
  • Send the Request via the send_request(request) method
  • Wait for the Response to be provided (or updated)
  • Get the Response object via either the get_response(name) method or via the new_responses property
  • Confirm that the request was successful and use the provided LB's address
  • Acknowledge the Response via ack_response(response)

There are examples in the repo for how to do this in an operator charm or in a reactive charm.

Providing Load Balancers

Providing a load balancer to consumers is done via the LBConsumers class. The general pattern for using the class is:

  • Wait for new or updated requests to come in
  • Iterate over each request object in the new_requests property
  • Create a load balancer according to the request's fields
  • Set the appropriate fields on the request's response object
  • Send the request's response via the send_response(request) method

There are examples in the repo for how to do this in an operator charm or in a reactive charm.

API Reference

See the API docs for detailed reference on the API.

Test Charms

To ease testing of charms using this interface, this library provides test charms which can be used with the pytest-operator plugin based integration test to serve as a basic counterpart to the charm providing or requiring this interface.

The charms are accessed via an lb_charms fixture, which is session scoped. The fixture provides an object with attributes for each of the example charms available in the repo. (The attribute names will be the charm names with dashes replaced with underscores.) For example:

async def test_build_and_deploy(ops_test, lb_charms):
    my_charm = await ops_test.build_charm(".")
    lb_provider = await ops_test.build_charm(lb_charms.lb_provider)
    await ops_test.model.deploy(my_charm)
    await ops_test.model.deploy(lb_provider)
    await ops_test.model.add_relation("my-charm", "lb-provider")

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

loadbalancer_interface-1.2.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

loadbalancer_interface-1.2.0-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file loadbalancer_interface-1.2.0.tar.gz.

File metadata

File hashes

Hashes for loadbalancer_interface-1.2.0.tar.gz
Algorithm Hash digest
SHA256 f2b31a5bf25b0435eee696685af78082c8a93fbe85336755bea5b17392a584bd
MD5 7c0d705733ad4fead4a54969b87eb0e8
BLAKE2b-256 ba373d1dab153000e8dd1799da06f3ababf29a434ec4cb13ad03839bad068385

See more details on using hashes here.

File details

Details for the file loadbalancer_interface-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for loadbalancer_interface-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26a90cdac756e8a9cbed0a0068a30d572fd103a7dfdd9627d8a5f4288ba9bd19
MD5 f95bf60548a2cd78a5cd4ddb4c27cf9f
BLAKE2b-256 2e6b4ef4718014382676723c7c95dce41926c138ed65eb8a63f84cbcf7e88ec3

See more details on using hashes here.

Supported by

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