Browse Source

Set file size limit to 50M in the python rumtime image

The original file size limit is too small and not suitable for common
user case. This patch changes the file size limit to 50M but it could
be configurable in future.

Change-Id: Ie48c9374f8eb2b6a15416fb5ec775f6a444063c3
Story: 2002967
Task: 22973
changes/39/582439/2
Lingxian Kong 3 years ago
parent
commit
4a4a18f2ec
4 changed files with 26 additions and 17 deletions
  1. +1
    -1
      devstack/settings
  2. +22
    -14
      example/functions/python/openstack/create_thumbnail.py
  3. +1
    -1
      qinling_tempest_plugin/config.py
  4. +2
    -1
      runtimes/python2/server.py

+ 1
- 1
devstack/settings View File

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


+ 22
- 14
example/functions/python/openstack/create_thumbnail.py View File

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

+ 1
- 1
qinling_tempest_plugin/config.py View File

@ -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",


+ 2
- 1
runtimes/python2/server.py View File

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


Loading…
Cancel
Save