Skip to main content

Run functions on a remote hub via an http server through a simple API. This greatly facilitates communication and sharing workloads across nodes in a JSON application.

INSTALLATION

pip install pop-gate

Get Capabilities

Gate extends pop-tree, which can be used to get details of all available resources

gate --refs "gate.init.tree"
curl http://localhost:5000 -H "Content-Type: application/json" -d '{"ref": "gate.init.tree"}'

USAGE

Run the gate server from the command line and expose specific patterns of hub references. The ‘–refs’ represent patters on the hub that are allowlisted. The ‘–prefix’ tells gate to assume that all refs are under a specific dynamic namespace.

In this example we will use a prefix of “gate” and allow all refs under ‘hub.gate.init’

gate --prefix gate --refs "init.*"

Use curl to run hub.gate.init.test() on the remote server like so:

curl http://localhost:8080 -H "Content-Type: application/json" -d '{"ref": "init.test"}'

Keyword arguments can be passed by adding extra keys to the call:

curl http://localhost:8080 -H "Content-Type: application/json" -d '{"ref": "init.test", "args": ["arg1", "arg2"], "kwargs": {"kwarg1": "value1"}}'

TESTING

Install gate locally with testing libraries:

git clone git@gitlab.com:saltstack/pop/gate.git
pip install -e gate -r requirements-test.txt

Run the tests with pytest

pytest gate/tests

INTEGRATION

In order to use gate in your own project add the gate config to your conf.py like so:

my_project/conf.py

CLI_CONFIG = {
    # Gate options
    "host": {"source": "gate"},
    "port": {"source": "gate"},
    "server": {"source": "gate"},
    "matcher": {"source": "gate"},
    "prefix": {"source": "gate"},
    "refs": {"source": "gate", "default": ["gate.init.test"]},
}

Add gate startup code to your project’s initializer like so:

my_project/my_project/init.py

def __init__(hub):
    # Horizontally merge the gate dynamic namespace into your project
    hub.pop.sub.add(dyne_name="gate")


def cli(hub):
    # Load the config from gate onto hub.OPT
    hub.pop.config.load(["my_project", "gate"], cli="my_project")

    # Create the asyncio loop
    hub.pop.loop.create()

    # Get the default gate server, and other options from hub.OPT.gate
    gate_server = hub.OPT.gate.server

    # Create the server coroutine
    coro = hub.gate.init.start(gate_server=gate_server)

    # Start the gate server
    hub.pop.Loop.run_until_complete(coro)

Metadata

Release files for pop-gate 6.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pop-gate 6.0.2
File Size Uploaded
pop-gate-6.0.2.tar.gz 11.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pop-gate 6.0.2
File Interpreter ABI Platform
pop_gate-6.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 26.3 kB

Release files / pop-gate-6.0.2.tar.gz

Download URL pop-gate-6.0.2.tar.gz
Size 11.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4ccdfcabf6727fdfbc942dc7f38e59644ec7c81f40fd8bba6c341c928a58b9e9
BLAKE2b-256 checksum
How to use checksums
480919a0edd0dde6c6726c8bec5ce85dfbba446339d7ab90fb05a1b406fb12ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.9

Release files / pop_gate-6.0.2-py3-none-any.whl

Download URL pop_gate-6.0.2-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
97b99d6b10829942c1ef21bd2f6f993365c80a5e082c929f43aaa2bf30c19d68
BLAKE2b-256 checksum
How to use checksums
1b6fb40f509a36f3ee377b9a7da32169077ecbe173ab2d1253149e5533dd58be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.9

Release history Release notifications | RSS feed

This release

6.0.2 This release

2 release files

6.0.1

2 release files

6.0.0

2 release files

5

2 release files

4

2 release files

2

2 release files

1.2

2 release files

1.1

2 release files

1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page