Adding Doc: Creating Image type function in Qinling
Change-Id: I1ce914e2d3c96d7fd2d71d854196cc78ac33e2cf
This commit is contained in:
parent
71d9158e7c
commit
7be81332df
@ -57,7 +57,7 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mkdir ~/qinling_test
|
||||
mkdir ~/qinling_test
|
||||
|
||||
.. end
|
||||
|
||||
@ -66,7 +66,7 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cat <<EOF > ~/qinling_test/resize_image.py
|
||||
cat <<EOF > ~/qinling_test/resize_image.py
|
||||
import os
|
||||
|
||||
from PIL import Image
|
||||
@ -138,7 +138,7 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install Pillow -t ~/qinling_test
|
||||
pip install Pillow -t ~/qinling_test
|
||||
|
||||
.. end
|
||||
|
||||
@ -154,7 +154,7 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd ~/qinling_test; zip -r9 ~/qinling_test/resize_image.zip .
|
||||
cd ~/qinling_test; zip -r9 ~/qinling_test/resize_image.zip .
|
||||
|
||||
.. end
|
||||
|
||||
@ -163,11 +163,11 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ runtime_id=601efeb8-3e41-4e5c-a12a-986dbda252e3
|
||||
$ openstack function create --name resize_image \
|
||||
--runtime $runtime_id \
|
||||
--entry resize_image.main \
|
||||
--package ~/qinling_test/resize_image.zip
|
||||
runtime_id=601efeb8-3e41-4e5c-a12a-986dbda252e3
|
||||
openstack function create --name resize_image \
|
||||
--runtime $runtime_id \
|
||||
--entry resize_image.main \
|
||||
--package ~/qinling_test/resize_image.zip
|
||||
+-------------+-------------------------------------------------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+-------------------------------------------------------------------------+
|
||||
@ -184,7 +184,7 @@ execution log to see the whole process.
|
||||
| cpu | 100 |
|
||||
| memory_size | 33554432 |
|
||||
+-------------+-------------------------------------------------------------------------+
|
||||
$ function_id=f8b18de6-1751-46d6-8c0d-0f1ecf943d12
|
||||
function_id=f8b18de6-1751-46d6-8c0d-0f1ecf943d12
|
||||
|
||||
.. end
|
||||
|
||||
@ -192,20 +192,20 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ curl -SL https://docs.openstack.org/arch-design/_images/osog_0001.png -o ~/origin.jpg
|
||||
$ openstack container create origin_folder
|
||||
curl -SL https://docs.openstack.org/arch-design/_images/osog_0001.png -o ~/origin.jpg
|
||||
openstack container create origin_folder
|
||||
+---------------------------------------+---------------+------------------------------------+
|
||||
| account | container | x-trans-id |
|
||||
+---------------------------------------+---------------+------------------------------------+
|
||||
| AUTH_a1e58c83923a4e2ca9370df6007c7fe6 | origin_folder | tx664a23a4a6e345b6af30d-005b3b6127 |
|
||||
+---------------------------------------+---------------+------------------------------------+
|
||||
$ openstack object create origin_folder ~/origin.jpg --name image
|
||||
openstack object create origin_folder ~/origin.jpg --name image
|
||||
+--------+---------------+----------------------------------+
|
||||
| object | container | etag |
|
||||
+--------+---------------+----------------------------------+
|
||||
| image | origin_folder | 07855978284adfcbbf76954a7c654a74 |
|
||||
+--------+---------------+----------------------------------+
|
||||
$ openstack object show origin_folder image
|
||||
openstack object show origin_folder image
|
||||
+----------------+---------------------------------------+
|
||||
| Field | Value |
|
||||
+----------------+---------------------------------------+
|
||||
@ -225,7 +225,7 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack function execution create $function_id --input '{"container_name": "origin_folder", "object_name": "image"}'
|
||||
openstack function execution create $function_id --input '{"container_name": "origin_folder", "object_name": "image"}'
|
||||
+------------------+-------------------------------------------------------------+
|
||||
| Field | Value |
|
||||
+------------------+-------------------------------------------------------------+
|
||||
@ -248,7 +248,7 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack function execution log show 04c60ae7-08c9-454c-9b2c-0bbf36391159
|
||||
openstack function execution log show 04c60ae7-08c9-454c-9b2c-0bbf36391159
|
||||
Start execution: 04c60ae7-08c9-454c-9b2c-0bbf36391159
|
||||
Downloaded object image from container origin_folder
|
||||
Resized.
|
||||
@ -263,20 +263,20 @@ execution log to see the whole process.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack container list
|
||||
openstack container list
|
||||
+-----------------------+
|
||||
| Name |
|
||||
+-----------------------+
|
||||
| origin_folder |
|
||||
| origin_folder_resized |
|
||||
+-----------------------+
|
||||
$ openstack object list origin_folder_resized
|
||||
openstack object list origin_folder_resized
|
||||
+-------+
|
||||
| Name |
|
||||
+-------+
|
||||
| image |
|
||||
+-------+
|
||||
$ openstack object show origin_folder_resized image
|
||||
openstack object show origin_folder_resized image
|
||||
+----------------+---------------------------------------+
|
||||
| Field | Value |
|
||||
+----------------+---------------------------------------+
|
||||
@ -308,16 +308,15 @@ a Python 2.7 runtime available in the deployment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mkdir ~/qinling_swift_test
|
||||
$ cd ~/qinling_swift_test
|
||||
$ cat <<EOF > hello_world.py
|
||||
|
||||
mkdir ~/qinling_swift_test
|
||||
cd ~/qinling_swift_test
|
||||
cat <<EOF > hello_world.py
|
||||
def main(name='World',**kwargs):
|
||||
ret = 'Hello, %s' % name
|
||||
return ret
|
||||
EOF
|
||||
|
||||
$ cd ~/qinling_swift_test && zip -r ~/qinling_swift_test/hello_world.zip ./*
|
||||
cd ~/qinling_swift_test && zip -r ~/qinling_swift_test/hello_world.zip ./*
|
||||
|
||||
.. end
|
||||
|
||||
@ -325,7 +324,7 @@ a Python 2.7 runtime available in the deployment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack container create functions
|
||||
openstack container create functions
|
||||
|
||||
+---------------------------------------+------------------+------------------------------------+
|
||||
| account | container | x-trans-id |
|
||||
@ -333,7 +332,7 @@ a Python 2.7 runtime available in the deployment.
|
||||
| AUTH_6ae7142bff0542d8a8f3859ffa184236 | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 |
|
||||
+---------------------------------------+------------------+------------------------------------+
|
||||
|
||||
$ openstack object create functions hello_world.zip
|
||||
openstack object create functions hello_world.zip
|
||||
|
||||
+-----------------+-----------+----------------------------------+
|
||||
| object | container | etag |
|
||||
@ -341,7 +340,7 @@ a Python 2.7 runtime available in the deployment.
|
||||
| hello_world.zip | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 |
|
||||
+-----------------+-----------+----------------------------------+
|
||||
|
||||
$ openstack object show functions hello_world.zip
|
||||
openstack object show functions hello_world.zip
|
||||
|
||||
+----------------+---------------------------------------+
|
||||
| Field | Value |
|
||||
@ -363,7 +362,7 @@ a Python 2.7 runtime available in the deployment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack function create --name hello_world \
|
||||
openstack function create --name hello_world \
|
||||
--runtime $runtime_id \
|
||||
--entry hello_world.main \
|
||||
--container functions \
|
||||
@ -392,8 +391,8 @@ a Python 2.7 runtime available in the deployment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ function_id=f1102bca-fbb4-4baf-874d-ed33bf8251f7
|
||||
$ openstack function execution create $function_id
|
||||
function_id=f1102bca-fbb4-4baf-874d-ed33bf8251f7
|
||||
openstack function execution create $function_id
|
||||
|
||||
+------------------+-----------------------------------------------+
|
||||
| Field | Value |
|
||||
@ -415,3 +414,106 @@ a Python 2.7 runtime available in the deployment.
|
||||
|
||||
It is very easy and simple to use Qinling with swift. We have successfully created and
|
||||
invoked a function using OpenStack Swift.
|
||||
|
||||
Creating Image type function in Qinling
|
||||
---------------------------------------
|
||||
|
||||
With the help of docker you would be able to create image type functions in
|
||||
Qinling. As a prerequisite, you need to have a Docker Hub account. In the
|
||||
following instructions replace ``DOCKER_USER`` with your own docker hub
|
||||
username.
|
||||
|
||||
#. In this tutorial we would be create docker image with latest Python3
|
||||
installed. We will create a python script which would be included in the image.
|
||||
Finally we create a Dockerfile to build the image.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
mkdir ~/qinling_test
|
||||
cd ~/qinling_test
|
||||
cat <<EOF > ~/qinling_test/hello.py
|
||||
|
||||
import sys
|
||||
def main():
|
||||
print ('Hello from', sys.argv[1])
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
EOF
|
||||
|
||||
cat <<EOF > ~/qinling_test/Dockerfile
|
||||
|
||||
FROM python:3.7.0-alpine3.7
|
||||
COPY . /qinling_test
|
||||
WORKDIR /qinling_test
|
||||
ENTRYPOINT [ "python", "./hello.py" ]
|
||||
CMD ["Qinling!"]
|
||||
|
||||
EOF
|
||||
|
||||
.. end
|
||||
|
||||
#. You must first run docker login to authenticate, build the image and push
|
||||
to Docker Hub.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker login
|
||||
docker build -t DOCKER_USER/qinling_test .
|
||||
docker push DOCKER_USER/qinlng_test
|
||||
|
||||
.. end
|
||||
|
||||
#. Create an image type function by providing the docker image name.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
openstack function create --name docker_test --image DOCKER_USER/qinling_test
|
||||
|
||||
+-------------+--------------------------------------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+--------------------------------------------------------------+
|
||||
| id | 6fa6932d-ee43-41d4-891c-77a96b52c697 |
|
||||
| name | docker_test |
|
||||
| description | None |
|
||||
| count | 0 |
|
||||
| code | {u'source': u'image', u'image': u'DOCKER_USER/qinling_test'} |
|
||||
| runtime_id | None |
|
||||
| entry | None |
|
||||
| project_id | 6ae7142bff0542d8a8f3859ffa184236 |
|
||||
| created_at | 2018-08-05 00:37:07.336918 |
|
||||
| updated_at | None |
|
||||
| cpu | 100 |
|
||||
| memory_size | 33554432 |
|
||||
+-------------+--------------------------------------------------------------+
|
||||
|
||||
function_id=6fa6932d-ee43-41d4-891c-77a96b52c697
|
||||
|
||||
.. end
|
||||
|
||||
#. Invoke the function by specifying function ID.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
openstack function execution create $function_id
|
||||
|
||||
+------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+------------------+--------------------------------------+
|
||||
| id | 8fe0e2e9-2133-4abb-8cd4-f2f14935cab4 |
|
||||
| function_id | 6fa6932d-ee43-41d4-891c-77a96b52c697 |
|
||||
| function_version | 0 |
|
||||
| description | None |
|
||||
| input | None |
|
||||
| result | {"output": "Hello from Qinling!\n"} |
|
||||
| status | success |
|
||||
| sync | True |
|
||||
| project_id | 6ae7142bff0542d8a8f3859ffa184236 |
|
||||
| created_at | 2018-08-05 00:37:25 |
|
||||
| updated_at | 2018-08-05 00:37:29 |
|
||||
+------------------+--------------------------------------+
|
||||
|
||||
.. end
|
||||
|
||||
In the result, you can see the output of image type function.
|
||||
|
Loading…
Reference in New Issue
Block a user