A web application for running Python scripts.
Project description
script-runner
A tool for defining python functions, triggering their execution and displaying results via a user interface.
Used at Sentry to allow specific users to run predefined Python scripts on production data.
Deployment modes
Multi-region deployments enable aggregating results across multiple "regions" or "silos", whilst still enabling script execution to be performed in a single region.
- set
mode: mainfor the central region - set
mode: regionfor each instance of the application deployed in each regions
For a single deployment in one region use mode:combined. Currently we only use this for dev and testing.
Writing custom scripts
Scripts are standard python functions organized into groups.
All of the arguments to a function must be annotated with one of the supported parameter types. The currently supported ones are:
- Text
- Textarea
- Integer
- Number
- Autocomplete
- DynamicAutocomplete
Example:
def print_value(input: Text) -> None:
"""
for short text, renders <input type="text" /> in the ui
"""
print(input.value)
def print_long_value(input: TextArea) -> None:
"""
multiline text, renders <textarea /> in the ui
"""
print(input.value)
The annotation controls how the element is displayed in the UI, and the Python type of the value (str, int or float)
The return value of the function can be anything, as long as it is json serializable
Any functions exported by a module via __all__ will be picked up automatically and displayed in the UI.
Writing tests
Use the execute_with_context helper from the testutils module to call your function with mock values.
Authentication
currently google iap (and no auth) are supported
for google iap, set the audience_code as well as iap_principals (group -> iap principal mapping) in the config
Example data:
- These are in the examples/scripts directory
Configuration
check config.schema.json for configuration format and required fields.
there is also an example of each mode in this repository: example_config_combined.yaml, example_config_main.yaml, example_config_local.yaml
Development
-
Run
make devserver. The application will run on combined mode onhttp://127.0.0.1:5000 -
If you want UI hot reloading, you have to run the vite server separately.
-
Navigate to the frontend directory:
cd script_runner/frontend
-
Install dependencies if you haven't already:
npm install -
Run the Vite development server:
npm run dev
-
The frontend should now be running on
http://localhost:5173and will automatically proxy API requests to the backend thanks to the proxy configured invite.config.ts.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sentry_script_runner-0.2.8.tar.gz.
File metadata
- Download URL: sentry_script_runner-0.2.8.tar.gz
- Upload date:
- Size: 68.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cda78bffc6714400222fb7cf29321a74d81ed69ee738736db3aa1fcff2af94eb
|
|
| MD5 |
9464ce9324a8f380ef4ab935126343e0
|
|
| BLAKE2b-256 |
6add30ec4ebf455cb6a69f7a4ca879a65189d6f63e6bb37e0411b226316ccb46
|
File details
Details for the file sentry_script_runner-0.2.8-py3-none-any.whl.
File metadata
- Download URL: sentry_script_runner-0.2.8-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16876f25a100346a742ea8029cb0bce4d1f42d1ce72bcc0bf0145a463944702f
|
|
| MD5 |
8f3d2ac15880141ca6143e27e6d08faa
|
|
| BLAKE2b-256 |
ff37eb3ad9cb2c2078148fd3678196f9882f7ceaf0b13a13719e78b418853348
|