From 4.0.0, kubernetes-incubator/client-python uses multiprocessing
libaray to send request to k8s cluster, which is not supported by
eventlet. This patch introduced the following changes to fix the issue:
- Use cotyledon for engine service rather than oslo.service
- Update global requirments
- Provide separate scripts for api and engine service
References:
[1] https://github.com/eventlet/eventlet/issues/147
[2] https://bugs.launchpad.net/taskflow/+bug/1225275
Change-Id: Ib99565e00eedc72c388e8ebec6b7f1453f77f30f
- Make docker image function work, add functional tests
- Use 'result' instead of 'output' in execution response
- Support string as execution input
- Update python runtime
Partially implements: blueprint qinling-functional-tests
Change-Id: Ie7e59983cfbc6f9e8514438e30a854f372a4c4d7
- Qinling is using etcd for distributed locking, especially for invoking
functions simultaneously.
- Get rid of function service and function worker mapping table
- Use etcd to store function service url and workers
Change-Id: I0a6abc98534dc95af5b985b6b6b4c0883263a221
This is an admin only operation. which gives admin user a safe way to
clean up the underlying resources allocated for the function.
Change-Id: If98ab5235902516f98be7d485e744cf3ea4cd262
- Improve/Simplify python runtime
- Use non-locking for communication with db when invoking function.
- Add config option to run job handler.
- Pre-fetch runtime when query function in db.
Change-Id: I9e791aecf03d5bf64a39548e6c9bad1b678882af
When user creates function, qinling will create trust for the function
that can be used when function is invoked. This feature is especially
useful when the function is invoked by a trustee user.
Remove the trust for job accordingly because the job will always use
trust for the function.
Change-Id: I68c608a1f25f1008e13bff33325e7cd9914653ae
This is admin only operation. The load monitoring of function execution
depends on the monitoring solution of underlying orchestrator.
Implements: blueprint qingling-autoscaling
Change-Id: I2eff62a45a718d230b51f18c5a49e0abea5f3164
Provide an API to do scale up operation, leave the container
monitoring to orchestrator underlay, although k8s already supports
HPA, but we should not rely on specific container orchestrator
capability for general purpose.
Partially implements: blueprint qingling-autoscaling
Change-Id: Iff1ff646a6df263b2770b8cebc74e80ab18c7613
After execution is finished, Qinling provides API to query execution
log for audit, debug or other purposes.
Implements: blueprint qinling-logs
Change-Id: Ie92619bf238c8e72e15c350c65bfbbb88a065f97
This is part-1 of jobs support in Qinling.
With job API, users can create a job with an existing function
that can be ran in cron job's fashion, but the job definition
has more capabilities than cron.
Change-Id: I0cb885dd6005ba024e3816bae9b79b0d3f35d335
If update image, will send asynchronous request to engine. If some
error happened during update, engine will rollback runtime
automatically.
Change-Id: I1598b1c04427dfdb7d573bbff8dc017f113c2fd2
When deleting function, we should remove all the allocated resources
in the orchestrator, no matter what kind of source the function is
using.
Change-Id: I7ee3d1bb1e6b417194a1b86606f8fcd64cb598cf
Currenty, the function entry is hard-coded to be 'main.main' which is
not flexible. This patch adds support for specifying module name and
function name in the code package.
Change-Id: I92ea36f668073f380a4aef4526a6fad321d8cc95
When a package function is executed, a service url is cached so it's
faster when function is executed again. But this will lead to problem
if function is never executed for a long time.
This patch add an expiry machanism which will release resources in
orchestration platform.
Change-Id: I754ebe314d87f6d7c194d9b9c061316f7ba74245
Invoke a function in sync way means the command will wait until the
execution finish. On the contrary, 'sync=false' means user will get
a response before the function is actually invoked. User could get
execution status using execution ID in the response.
Change-Id: I605ea8414f49d44899e0bc8c36b89e48e335d284
Allow user to create function using her own docker image including
all the code and dependencies inside. The image needs to have an
script running as entry point, expecting user's input as params.
This allow users to execute functions written in any language.
With this patch, users can create function using swift object:
http POST http://127.0.0.1:7070/v1/functions name=swift_function \
runtime_id=xxx \
code='{"source": "swift", "swift": {"container": "container_name", "object": "object_name"}}'
Implements: blueprint support-swift-object-as-code