Commit Graph

27 Commits

Author SHA1 Message Date
Jan Wozniak 6fa0b98608
Prepare release v0.10.0 (#1260)
Signed-off-by: Jan Wozniak <wozniak.jan@gmail.com>
2025-02-21 14:09:32 +01:00
Sebastian Penhouet 8e95401e96
[#1246] Add compatibility information for 0.9.0 (#1247)
Signed-off-by: Sebastian Penhouet <Spenhouet@users.noreply.github.com>
2025-02-06 13:07:21 +01:00
Daniel Li c96c106c72
docs: fix typo ScaledHTTPObject -> HTTPScaledObject (#1071)
Signed-off-by: Daniel Li <dan@danyll.com>
2024-06-18 15:20:46 +00:00
Jorge Turrado Ferrero 30e7571b19
chore: Upgrade supported versions (#1033)
Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>
Co-authored-by: Tom Kerkhove <kerkhove.tom@gmail.com>
2024-05-26 12:45:52 +02:00
Federico Marani b37046ea47
Remove initial dollar sign from install instructions (#967)
To make them copy/pasteable.

Signed-off-by: Federico Marani <flagzeta@gmail.com>
2024-04-05 09:57:31 +00:00
Jorge Turrado Ferrero e658582052
chore: Bump deps (#884)
* bump deps

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* update codegen

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* fix link

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* update linter

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

* update keda and k8s versions

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>

---------

Signed-off-by: Jorge Turrado <jorge_turrado@hotmail.es>
2024-01-19 17:00:54 +01:00
Jorge Turrado Ferrero d374cbecbf
chore: Add missing changes for the release (#806) 2023-10-05 08:47:42 +02:00
Jorge Turrado Ferrero 6121019b0b
chore: bumps deps (#771) 2023-09-12 12:00:05 +02:00
Pedro Tôrres 3bd29c22df
controller: use kedav1alpha1.ScaledObject default values (#610)
Co-authored-by: Pedro Tôrres <pedrotorres@microsoft.com>
2023-02-28 01:19:13 +01:00
Jorge Turrado Ferrero 0a1fbb1ff9
use relative links for going back (#548)
Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>

Signed-off-by: Jorge Turrado <jorge.turrado@scrm.lidl>
2022-11-22 11:34:57 +01:00
Tom Kerkhove 6e40f21931
feat(docs): Publish current documentation to GitHub Pages (#547)
* README

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Reshuffle

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Split again

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Links

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>
2022-11-22 09:56:43 +01:00
Vighnesh Shenoy 7fed8bc4cc
Misc. doc changes for consistency and clarity. (#496) 2022-08-16 14:21:59 +02:00
Aaron Wislang 9feb10ca31
Update all references to HTTP Add-on / add-on (#465) 2022-06-08 08:20:53 +02:00
Aaron Schlesinger eb4e1e9f42
Allowing cluster-global operation (#269)
* Allowing cluster-global operation

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* passing less unnecessary data in the operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* setting namespace

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* updating tests:

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Updating deployment cache interfaces

To accommodate multi-namespace gets and watches

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting on deployment cache informer

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* switching over to informer-based deployment cache

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing test compile errors and merging fake and in-memory deployment caches

Signed-off-by: Aaron <aaron@ecomaz.net>

* fixing tests

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing more compile errs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* improving logging, and several other small changes

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* go mod tidy

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding config validation

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* improving ns and svc name var names to indicate interceptor

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* running go mod tidy

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* passing a function to transform target to in-cluster URL

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* not requiring namespace for operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* splitting namespace config for operator into watch and current

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing appInfo, passing current namespace everywhere in its place

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* using proper namespace when creating scaled object

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* allowing xkcd chart to set ingress namespace

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* printing namespace in error

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* using proper fully-qualified hostname of external scaler in scaledobject

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding note on cluster-global vs. namespaced mode

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding note about installing the xkcd chart in cluster-global mode

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing hostname test

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* merging scaler queue counts with routing table hosts. removing merge functionality from interceptors

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fix assumption in tests that queue has all hosts from routing table

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding test for MergeCountsWithRoutingTable

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* sleep for longer to wait for server to start

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding handler test for merging hosts

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding test to GetMetrics test cases for host not in queue pinger

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2022-01-13 14:50:49 -08:00
Ritika b9f112c305
Correcting install guide for keda (#319)
Signed-off-by: Ritikaa96 <ritika@india.nec.com>
2021-11-11 18:46:14 +00:00
Aaron Schlesinger d2a130603a
fixing links to ghcr (#301)
Signed-off-by: Aaron <aaron@ecomaz.net>
2021-11-09 22:50:33 +00:00
Aaron Schlesinger a0407daf9b
Update install.md (#304)
Signed-off-by: Aaron <aaron@ecomaz.net>
2021-10-29 16:24:27 -07:00
Aaron Schlesinger 7bbcc91cb5
Clarifying the install document (#170) 2021-05-25 14:11:08 +02:00
Lucas Santos 6442f7769c
Move charts to keda/charts (#125)
* Move charts to keda/charts

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Update install docs

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Change repository name to match charts

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Fix spacing

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Re add xkcd as example

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Add files from #150

Co-authored-by: Aaron Schlesinger <aaron@ecomaz.net>
Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Update instructions following new chart location

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

* Fix broken link

Signed-off-by: Lucas Santos <lhs.santoss@gmail.com>

Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
Co-authored-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-05-18 22:34:12 +00:00
Aaron Schlesinger 730509f762
Adding note on installing the canary versions of images (#166)
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-05-12 07:14:37 +02:00
Aaron Schlesinger f939c2c985
Adding a next steps link to the end of the install.md page (#153)
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-04-28 07:54:00 +02:00
Aaron Schlesinger 8c60d9d6c8
Switching `make` commands to `helm` commands. (#128)
* Switching `make` commands to `helm` commands.

Fixes https://github.com/kedacore/http-add-on/issues/117

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding mage version minimum

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-04-14 10:41:36 -07:00
Aaron Schlesinger fd4cdfe718
Not creating app deployments (#78)
* Allowing users to scale an existing deployment

Fixes https://github.com/kedacore/http-add-on/issues/35

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* checking custom deployment info

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding tests for new deployment logic

Also generalizing test "infrastructure" code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* regenerating code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Remove functionality to auto-create deployments and services

Users provide a scale target ref, which is the name of the
deployment to scale and the service to route to. They are required
to have already deployed these things already

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding more docs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* regenerating with 0.5.0 controller-gen

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing compile err

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-03-19 12:58:29 -07:00
Aaron Schlesinger 4141b75b5a
Using latest tag for image names in helm chart (#52)
* using latest tag for image names

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding latest tag

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* moving to hierarchical image configs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-02-09 09:02:11 -08:00
Aaron Schlesinger 7502948b6b
adding a walkthrough document (#37)
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-02-03 12:18:36 -08:00
Aaron Schlesinger 698a5ee0c2
Creating 2 interceptor services (#16)
* logging

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding helm delete functionality to makefile

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Splitting up functionality, logs and more

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* checking error fetching services

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Using the proper service name

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* enabling RBAC on endpoints so the scaler can access interceptor queue sizes

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* logs and TODOs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* using IPs instead of hostnames in external scaler

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* backing off polling interval

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* logging on external scaler startup

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing superfluous logging in scaler

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* port and updating namespaces

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* the right namespace

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding grpc reflection

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Makefile targets for creating/deleting example HTTPScaledObject

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Removing namespace from example HTTPScaledObject file

it is specified when you add it from the make target

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding keda creation logic to Makefile (and install doc)

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* helm delete keda target

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Passing queue pinger around as a pointer

Otherwise the queue lengths are always reported as 0

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-01-29 16:46:31 -08:00
Aaron Schlesinger 7b75262476
Starting to move components from prototype repo (#2)
* starting the scaler and interceptor

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding interceptor

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* link to issue

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* operator and CLI start

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* starting on the dockerfiles

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Improving the operator Dockerfile

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fix

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* note

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding go based operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* a bit of progress

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* moving rust operator to old

will delete this shortly

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* moving goperator to operator

forgot to do this last commit

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* moving go.mod to root

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* marking deprecated

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* it builds
gs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* progress on the operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more progress

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* All my changes and implementations (#2)

* Fix error with existing variable

* Rename ScaledObject to HTTPScaledObject

* Add draft implementation for status spec

* Rename files to match new naming

* Remove scaffolding comments

* Change requeue time to 50s

* Variable renaming to better read

* Add new spec field to make polling configurable

* Remove previously added objects in case of error

* Set Statuses

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Fix Typos (#4)

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Add RBAC rules for services, pods and deployments (#5)

* Fix Typos

* Add RBAC rules for services, pods and deployments

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Bunch of changes (#6)

* Fix Typos

* Implement object deletion

* Add prefix for logging

* Remove unused status interface

* Add status check for "Ready"

* Golint

* Generate CRD Manifests

* Reorder RBAC Roles

* Change file namings

* Remove CLI part for now

* Add internal build context for operator

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Charts, docs, readability and other changes (#8)

* Fix Typos

* Implement object deletion

* Add prefix for logging

* Remove unused status interface

* Add status check for "Ready"

* Golint

* Generate CRD Manifests

* Reorder RBAC Roles

* Change file namings

* Remove CLI part for now

* Add internal build context for operator

* Remove Rust-related things

* Add comment docs and reorder packages

* Change variable name and add package docs

* Add package docs

* Add package docs

* Rename var for readability

* Adds package docs

* Remove commented code

* Remove unused admin echo server and rename current one

* Add more logging and docs

* Fix doc

* Update readme on cli

* Add scaffold to operator chart

* Add docs

* Golint

* Update name in kustomization

* Add descriptions to fields

* Update default image name

* Change resource names

* Add version tag to kustomization

* Add make command for charts

* Create base values file

* Add patch for image name

* Add environment variable to manager

* Update charts/operator/Chart.yaml

Co-authored-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Update charts/operator/Chart.yaml

Co-authored-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Correct dir name and reuse step

* Rename dir to keda-http-operator

* Add envs to deployment pkg

* Add new statuses for extended objetct

* Fixing interceptor listening port

* Include new "Terminating" status

* Add namespaces for logs

* Change variable names

* Add new statuses

* Code reorder

* Create interceptor

* Add missing return

* Remove comment

* Fix link

* Remove all references to external scaler address

This is because we'll use one external scaler for each new application, so there's no point in having a single environment variable controlling the
address of the external scaler.

The address will be defined by the operator for each new app and a new scaler will be created.

* Fixing external scaler port

* Code reorder and creation of external scaler

* Improve code readability

* Golint

* Add colons

* Further clean the code

* Move functions to other file

* Rename files

* Add more meaninful names

* Rename method

* Update roles and enums

* Make yamls

* Add next TODO

* Add todo

Co-authored-by: Tom Kerkhove <kerkhove.tom@gmail.com>
Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Fixing the operator Dockerfile

also adding env vars to allow users to customize docker image names

Fixes https://github.com/kedacore/http-add-on/issues/5

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Updating to the KEDA 2.0 external scaler gRPC interface

The notable change here is that there is an added StreamIsActive
RPC call. The New and Close RPCs are removed.

Fixes https://github.com/kedacore/http-add-on/issues/3

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Making the scaler talk to interceptors to get pending HTTP queue sizes

Fixes https://github.com/kedacore/http-add-on/issues/4

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Initial install docs

Includes various tweaks needed to make install work

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more progress

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* proper port and path

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* splitting up helm chart

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fix chart, example yaml, and fix panic in operator logging

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing log errors

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* minor changes

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* gracefully moving on when deleting kube resources

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* creating dynamic client

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* using proper group for scaled objects

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding scaledobject to ClusterRole

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Helm installation in the Makefile

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more loggign

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* properly specifying namespaces etc...

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* setting operator deployment pull policy to always

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding more logs to resource creation

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* fixing namespace problems and simplifying code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* proper API version

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* aking image names and ports for external scaler and interceptor configurable

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding docs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* proper env var names

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Specifying proper external scaler ports

Also moving the application config in the operator into operator/config

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* ports

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* updated ScaledObject spec

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* proper port formatting for interceptor

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* more logging and not requeueing

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* cscaler => kedahttp

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* trying something out

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* adding finalizer, simplifying get code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* finalizers

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* ignoring more stuff

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing the right things

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* updating deletion & error logic

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* logging status updates

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* check for already exists inside specific creator logic

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Fiddling with status

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* upgrading CRD version

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Adding instructions on microk8s installs

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* Restoring the status file

Don't know why I deleted it in 021b5f1b76

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* myapp => xkcd

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* service type

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* logging

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* configuring services properly

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* readme

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

Co-authored-by: Lucas Santos <lhs.santoss@gmail.com>
Co-authored-by: Tom Kerkhove <kerkhove.tom@gmail.com>
2021-01-27 11:41:52 -08:00