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 .. 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,11 +163,11 @@ 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
+-------------+-------------------------------------------------------------------------+ +-------------+-------------------------------------------------------------------------+
| Field | Value | | Field | Value |
+-------------+-------------------------------------------------------------------------+ +-------------+-------------------------------------------------------------------------+
@ -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.