diff --git a/devstack/settings b/devstack/settings index 7a58d0c0..f549f8f0 100644 --- a/devstack/settings +++ b/devstack/settings @@ -22,7 +22,7 @@ QINLING_CONF_FILE=${QINLING_CONF_DIR}/qinling.conf QINLING_POLICY_FILE=${QINLING_CONF_DIR}/policy.json QINLING_AUTH_CACHE_DIR=${QINLING_AUTH_CACHE_DIR:-/var/cache/qinling} QINLING_FUNCTION_STORAGE_DIR=${QINLING_FUNCTION_STORAGE_DIR:-/opt/qinling/function/packages} -QINLING_PYTHON_RUNTIME_IMAGE=${QINLING_PYTHON_RUNTIME_IMAGE:-openstackqinling/python-runtime:0.0.4} +QINLING_PYTHON_RUNTIME_IMAGE=${QINLING_PYTHON_RUNTIME_IMAGE:-openstackqinling/python-runtime:0.0.5} QINLING_NODEJS_RUNTIME_IMAGE=${QINLING_NODEJS_RUNTIME_IMAGE:-openstackqinling/nodejs-runtime:0.0.1} QINLING_SIDECAR_IMAGE=${QINLING_SIDECAR_IMAGE:-openstackqinling/sidecar:0.0.2} diff --git a/example/functions/python/openstack/create_thumbnail.py b/example/functions/python/openstack/create_thumbnail.py index 3d3bbac3..bf4c6898 100644 --- a/example/functions/python/openstack/create_thumbnail.py +++ b/example/functions/python/openstack/create_thumbnail.py @@ -17,45 +17,53 @@ import os from PIL import Image import swiftclient +from swiftclient.exceptions import ClientException def resize_image(image_path, resized_path): with Image.open(image_path) as image: - image.thumbnail((75, 75)) + image.thumbnail(tuple(x / 4 for x in image.size)) image.save(resized_path) -def main(context, container, object): +def main(context, container_name, object_name): conn = swiftclient.Connection( session=context['os_session'], os_options={'region_name': 'RegionOne'}, ) - new_container = '%s_thumb' % container - - # Download original photo - image_path = '/%s' % object - _, obj_contents = conn.get_object(container, object) + # Download original image + image_path = os.path.abspath('./%s' % object_name) + _, obj_contents = conn.get_object(container_name, object_name) with open(image_path, 'w') as local: local.write(obj_contents) - print('Downloaded object %s from container %s' % (object, container)) + print('Downloaded object %s from container %s' % + (object_name, container_name)) - thumb_path = '/thumb_%s' % object + thumb_path = os.path.abspath('./%s_resized.png' % object_name) resize_image(image_path, thumb_path) print('Resized.') - # Upload thumb photo + # Create new container if needed + new_container_name = '%s_resized' % container_name + try: + conn.head_container(new_container_name) + except ClientException: + conn.put_container(new_container_name) + print("New container %s created." % new_container_name) + + # Upload resized image with open(thumb_path, 'r') as new_local: conn.put_object( - new_container, - object, + new_container_name, + object_name, contents=new_local, content_type='text/plain' ) - os.remove(image_path) os.remove(thumb_path) - print('Uploaded object %s to container %s' % (object, new_container)) + print('Uploaded object %s to container %s' % + (object_name, new_container_name)) diff --git a/qinling_tempest_plugin/config.py b/qinling_tempest_plugin/config.py index 9ffd1852..8e7dac16 100644 --- a/qinling_tempest_plugin/config.py +++ b/qinling_tempest_plugin/config.py @@ -40,7 +40,7 @@ QinlingGroup = [ 'publicURL', 'adminURL', 'internalURL'], help="The endpoint type to use for the qinling service."), cfg.StrOpt("python_runtime_image", - default="openstackqinling/python-runtime:0.0.4", + default="openstackqinling/python-runtime:0.0.5", help="The Python runtime being used in the tests."), cfg.StrOpt("nodejs_runtime_image", default="openstackqinling/nodejs-runtime:0.0.1", diff --git a/runtimes/python2/server.py b/runtimes/python2/server.py index ea5cf839..acef5352 100644 --- a/runtimes/python2/server.py +++ b/runtimes/python2/server.py @@ -50,7 +50,8 @@ def _set_ulimit(): customized_limits = { resource.RLIMIT_NOFILE: 1024, resource.RLIMIT_NPROC: 128, - resource.RLIMIT_FSIZE: 61440 + # TODO(lxkong): 50M by default, need to be configurable in future. + resource.RLIMIT_FSIZE: 524288000 } for t, soft in customized_limits.items(): _, hard = resource.getrlimit(t)