Adding Doc: Creating Image type function in Qinling

Change-Id: I1ce914e2d3c96d7fd2d71d854196cc78ac33e2cf
This commit is contained in:
Neerja Narayan 2018-08-10 01:33:22 -05:00
parent 71d9158e7c
commit 7be81332df
1 changed files with 132 additions and 30 deletions

View File

@ -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.