Skip to main content

A python based proxy looking at multiple AMQP queues for incoming requests of VMware vCloud Director's API Extensions

Project description

vcdextproxy

https://img.shields.io/pypi/v/vcdextproxy.svg https://img.shields.io/travis/lrivallain/vcdextproxy.svg https://img.shields.io/github/workflow/status/lrivallain/vcdextproxy/Tests Documentation Status MIT License

Python based proxy looking at multiple AMQP queues for incoming requests of VMware vCloud Director’s API Extensions and forwarding to specified REST backends.

Features

  • Support multiple queues subscriptions

  • Can address multiple REST endpoints depending on extension(s)

  • 1 REST endpoint is a associated to 1 extension in vCD

  • Backend servers:
    • HTTP + HTTPS support

    • Basic authentication

    • Basic URI rewritting

  • AMQP server:
    • Multiple Exchange/Queue listening

    • Manage Exchange/Queue declarations

    • SSL support

  • Extension lifecyle:
    • Deploy a newly declared extension

    • Redeploy an existing extension

  • vCloud Director:
    • Support vCD from 9.1 to 10.0

    • Can check user’s right based on per extension setting

    • Can check organization’s membership of an user

Planned features

  • #6 - Address some pre-checks like rights management

  • #18 - Check organization’s membership of an user

  • #2 - Manage extension lifecycle (deploy/re-deploy)

User case

In a vCloud Director instance where 2 API extensions are used (example1, example2):

vcdextproxy subscribe to following AMQP queues:

  • example1

  • example2

When a message is sent to example1 queue:

  1. A URI path check is made: is /api/example1 a correct API path for extension named example1 ?

  2. If valid, all fields of the request are converted to REST request (as headers or as body content)

  3. REST endpoint handle the request as a standard REST one (with a lot of vCloud information…)

  4. REST endpoint replies to vcdextproxy

  5. vcdextproxy reformat the reply as an AMQP reply message

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.1.x (2019-11-01)

  • First release on PyPI.

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

vcdextproxy-0.1.1.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

vcdextproxy-0.1.1-py2.py3-none-any.whl (18.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file vcdextproxy-0.1.1.tar.gz.

File metadata

  • Download URL: vcdextproxy-0.1.1.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0

File hashes

Hashes for vcdextproxy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2a5aaa33918f98a0c87acf9242c3a0d2ad06b4ec775c6d478f63293f78e5a22a
MD5 0d986029a132c973a2e9ab4ff09c8b61
BLAKE2b-256 aed8d32e5c3b60fc51d36f7fda62e62ee797bb15cb9222cb5b842001a4e17ecc

See more details on using hashes here.

File details

Details for the file vcdextproxy-0.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: vcdextproxy-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0

File hashes

Hashes for vcdextproxy-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ca17c6f90194afca9c58dca49075df3b768456eb955e22c0b80f78b5a8878a4d
MD5 22a339c0776c8fedc99a553f3155dbeb
BLAKE2b-256 e9a9ea8761af87902ea89177744bc9231c3ec32d39ba75b191ecacc8d65c9dab

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