vcdextproxy

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


Keywords
vcdextproxy
License
MIT
Install
pip install vcdextproxy==0.1.1

Documentation

vcdextproxy

https://img.shields.io/github/workflow/status/lrivallain/vcdextproxy/Test%20with%20tox 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.