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
|
.. code-block:: console
|
||||||
|
|
||||||
$ mkdir ~/qinling_test
|
mkdir ~/qinling_test
|
||||||
|
|
||||||
.. end
|
.. end
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ cat <<EOF > ~/qinling_test/resize_image.py
|
cat <<EOF > ~/qinling_test/resize_image.py
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
@ -138,7 +138,7 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ pip install Pillow -t ~/qinling_test
|
pip install Pillow -t ~/qinling_test
|
||||||
|
|
||||||
.. end
|
.. end
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ cd ~/qinling_test; zip -r9 ~/qinling_test/resize_image.zip .
|
cd ~/qinling_test; zip -r9 ~/qinling_test/resize_image.zip .
|
||||||
|
|
||||||
.. end
|
.. end
|
||||||
|
|
||||||
@ -163,8 +163,8 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ runtime_id=601efeb8-3e41-4e5c-a12a-986dbda252e3
|
runtime_id=601efeb8-3e41-4e5c-a12a-986dbda252e3
|
||||||
$ openstack function create --name resize_image \
|
openstack function create --name resize_image \
|
||||||
--runtime $runtime_id \
|
--runtime $runtime_id \
|
||||||
--entry resize_image.main \
|
--entry resize_image.main \
|
||||||
--package ~/qinling_test/resize_image.zip
|
--package ~/qinling_test/resize_image.zip
|
||||||
@ -184,7 +184,7 @@ execution log to see the whole process.
|
|||||||
| cpu | 100 |
|
| cpu | 100 |
|
||||||
| memory_size | 33554432 |
|
| memory_size | 33554432 |
|
||||||
+-------------+-------------------------------------------------------------------------+
|
+-------------+-------------------------------------------------------------------------+
|
||||||
$ function_id=f8b18de6-1751-46d6-8c0d-0f1ecf943d12
|
function_id=f8b18de6-1751-46d6-8c0d-0f1ecf943d12
|
||||||
|
|
||||||
.. end
|
.. end
|
||||||
|
|
||||||
@ -192,20 +192,20 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ curl -SL https://docs.openstack.org/arch-design/_images/osog_0001.png -o ~/origin.jpg
|
curl -SL https://docs.openstack.org/arch-design/_images/osog_0001.png -o ~/origin.jpg
|
||||||
$ openstack container create origin_folder
|
openstack container create origin_folder
|
||||||
+---------------------------------------+---------------+------------------------------------+
|
+---------------------------------------+---------------+------------------------------------+
|
||||||
| account | container | x-trans-id |
|
| account | container | x-trans-id |
|
||||||
+---------------------------------------+---------------+------------------------------------+
|
+---------------------------------------+---------------+------------------------------------+
|
||||||
| AUTH_a1e58c83923a4e2ca9370df6007c7fe6 | origin_folder | tx664a23a4a6e345b6af30d-005b3b6127 |
|
| 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 |
|
| object | container | etag |
|
||||||
+--------+---------------+----------------------------------+
|
+--------+---------------+----------------------------------+
|
||||||
| image | origin_folder | 07855978284adfcbbf76954a7c654a74 |
|
| image | origin_folder | 07855978284adfcbbf76954a7c654a74 |
|
||||||
+--------+---------------+----------------------------------+
|
+--------+---------------+----------------------------------+
|
||||||
$ openstack object show origin_folder image
|
openstack object show origin_folder image
|
||||||
+----------------+---------------------------------------+
|
+----------------+---------------------------------------+
|
||||||
| Field | Value |
|
| Field | Value |
|
||||||
+----------------+---------------------------------------+
|
+----------------+---------------------------------------+
|
||||||
@ -225,7 +225,7 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. 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 |
|
| Field | Value |
|
||||||
+------------------+-------------------------------------------------------------+
|
+------------------+-------------------------------------------------------------+
|
||||||
@ -248,7 +248,7 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. 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
|
Start execution: 04c60ae7-08c9-454c-9b2c-0bbf36391159
|
||||||
Downloaded object image from container origin_folder
|
Downloaded object image from container origin_folder
|
||||||
Resized.
|
Resized.
|
||||||
@ -263,20 +263,20 @@ execution log to see the whole process.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ openstack container list
|
openstack container list
|
||||||
+-----------------------+
|
+-----------------------+
|
||||||
| Name |
|
| Name |
|
||||||
+-----------------------+
|
+-----------------------+
|
||||||
| origin_folder |
|
| origin_folder |
|
||||||
| origin_folder_resized |
|
| origin_folder_resized |
|
||||||
+-----------------------+
|
+-----------------------+
|
||||||
$ openstack object list origin_folder_resized
|
openstack object list origin_folder_resized
|
||||||
+-------+
|
+-------+
|
||||||
| Name |
|
| Name |
|
||||||
+-------+
|
+-------+
|
||||||
| image |
|
| image |
|
||||||
+-------+
|
+-------+
|
||||||
$ openstack object show origin_folder_resized image
|
openstack object show origin_folder_resized image
|
||||||
+----------------+---------------------------------------+
|
+----------------+---------------------------------------+
|
||||||
| Field | Value |
|
| Field | Value |
|
||||||
+----------------+---------------------------------------+
|
+----------------+---------------------------------------+
|
||||||
@ -308,16 +308,15 @@ a Python 2.7 runtime available in the deployment.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ mkdir ~/qinling_swift_test
|
mkdir ~/qinling_swift_test
|
||||||
$ cd ~/qinling_swift_test
|
cd ~/qinling_swift_test
|
||||||
$ cat <<EOF > hello_world.py
|
cat <<EOF > hello_world.py
|
||||||
|
|
||||||
def main(name='World',**kwargs):
|
def main(name='World',**kwargs):
|
||||||
ret = 'Hello, %s' % name
|
ret = 'Hello, %s' % name
|
||||||
return ret
|
return ret
|
||||||
EOF
|
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
|
.. end
|
||||||
|
|
||||||
@ -325,7 +324,7 @@ a Python 2.7 runtime available in the deployment.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ openstack container create functions
|
openstack container create functions
|
||||||
|
|
||||||
+---------------------------------------+------------------+------------------------------------+
|
+---------------------------------------+------------------+------------------------------------+
|
||||||
| account | container | x-trans-id |
|
| account | container | x-trans-id |
|
||||||
@ -333,7 +332,7 @@ a Python 2.7 runtime available in the deployment.
|
|||||||
| AUTH_6ae7142bff0542d8a8f3859ffa184236 | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 |
|
| AUTH_6ae7142bff0542d8a8f3859ffa184236 | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 |
|
||||||
+---------------------------------------+------------------+------------------------------------+
|
+---------------------------------------+------------------+------------------------------------+
|
||||||
|
|
||||||
$ openstack object create functions hello_world.zip
|
openstack object create functions hello_world.zip
|
||||||
|
|
||||||
+-----------------+-----------+----------------------------------+
|
+-----------------+-----------+----------------------------------+
|
||||||
| object | container | etag |
|
| object | container | etag |
|
||||||
@ -341,7 +340,7 @@ a Python 2.7 runtime available in the deployment.
|
|||||||
| hello_world.zip | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 |
|
| hello_world.zip | functions | 9b45bef5ab2658acb9b72ee32f39dbc8 |
|
||||||
+-----------------+-----------+----------------------------------+
|
+-----------------+-----------+----------------------------------+
|
||||||
|
|
||||||
$ openstack object show functions hello_world.zip
|
openstack object show functions hello_world.zip
|
||||||
|
|
||||||
+----------------+---------------------------------------+
|
+----------------+---------------------------------------+
|
||||||
| Field | Value |
|
| Field | Value |
|
||||||
@ -363,7 +362,7 @@ a Python 2.7 runtime available in the deployment.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ openstack function create --name hello_world \
|
openstack function create --name hello_world \
|
||||||
--runtime $runtime_id \
|
--runtime $runtime_id \
|
||||||
--entry hello_world.main \
|
--entry hello_world.main \
|
||||||
--container functions \
|
--container functions \
|
||||||
@ -392,8 +391,8 @@ a Python 2.7 runtime available in the deployment.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ function_id=f1102bca-fbb4-4baf-874d-ed33bf8251f7
|
function_id=f1102bca-fbb4-4baf-874d-ed33bf8251f7
|
||||||
$ openstack function execution create $function_id
|
openstack function execution create $function_id
|
||||||
|
|
||||||
+------------------+-----------------------------------------------+
|
+------------------+-----------------------------------------------+
|
||||||
| Field | Value |
|
| 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
|
It is very easy and simple to use Qinling with swift. We have successfully created and
|
||||||
invoked a function using OpenStack Swift.
|
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…
x
Reference in New Issue
Block a user