From f22c3d06cbe2cca84dbb40b5534a437dc80e0c22 Mon Sep 17 00:00:00 2001 From: Guillaume Boutry Date: Wed, 31 Jul 2024 17:18:04 +0200 Subject: [PATCH] [glance-k8s] enable image-conversion on import Allow configuring the images to be imported and converted to row. Disabled by default. Change-Id: If69f7c0260f45038a58ed0695f71e5559730fc32 Signed-off-by: Guillaume Boutry --- charms/glance-k8s/config.yaml | 7 +++++++ charms/glance-k8s/src/charm.py | 12 ++++++++++++ charms/glance-k8s/src/templates/glance-api.conf.j2 | 1 - .../src/templates/glance-image-import.conf.j2 | 13 +++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 charms/glance-k8s/src/templates/glance-image-import.conf.j2 diff --git a/charms/glance-k8s/config.yaml b/charms/glance-k8s/config.yaml index 624182c1..c4f16b6d 100644 --- a/charms/glance-k8s/config.yaml +++ b/charms/glance-k8s/config.yaml @@ -252,3 +252,10 @@ options: . WARNING: this value should only be increased after careful consideration and must be set to a value under 8EB (9223372036854775808 bytes). + image-conversion: + type: boolean + default: False + description: | + Enable conversion of all images to raw format during image import. + This only works on imported images (for example using 'openstack image create --import'). + Does not work on regular image uploads (like 'openstack image create') diff --git a/charms/glance-k8s/src/charm.py b/charms/glance-k8s/src/charm.py index c34a7a10..f427bfd1 100755 --- a/charms/glance-k8s/src/charm.py +++ b/charms/glance-k8s/src/charm.py @@ -21,6 +21,7 @@ This charm provide Glance services as part of an OpenStack deployment """ +import json import logging import re from typing import ( @@ -216,6 +217,11 @@ class GlanceConfigContext(sunbeam_ctxts.ConfigContext): "image_size_cap": bytes_from_string( self.charm.config["image-size-cap"] ), + "image_import_plugins": json.dumps( + ["image_conversion"] + if self.charm.config["image-conversion"] + else [] + ), } @@ -327,6 +333,12 @@ class GlanceOperatorCharm(sunbeam_charm.OSBaseOperatorAPICharm): self.service_group, 0o640, ), + sunbeam_core.ContainerConfigFile( + "/etc/glance/glance-image-import.conf", + self.service_user, + self.service_group, + 0o640, + ), sunbeam_core.ContainerConfigFile( "/usr/local/share/ca-certificates/ca-bundle.pem", self.service_user, diff --git a/charms/glance-k8s/src/templates/glance-api.conf.j2 b/charms/glance-k8s/src/templates/glance-api.conf.j2 index c20cd98d..3cc3c329 100644 --- a/charms/glance-k8s/src/templates/glance-api.conf.j2 +++ b/charms/glance-k8s/src/templates/glance-api.conf.j2 @@ -49,4 +49,3 @@ rbd_store_ceph_conf = /etc/ceph/ceph.conf flavor = keystone {% include "parts/section-oslo-messaging-rabbit" %} - diff --git a/charms/glance-k8s/src/templates/glance-image-import.conf.j2 b/charms/glance-k8s/src/templates/glance-image-import.conf.j2 new file mode 100644 index 00000000..4a988811 --- /dev/null +++ b/charms/glance-k8s/src/templates/glance-image-import.conf.j2 @@ -0,0 +1,13 @@ +############################################################################### +# [ WARNING ] +# glance configuration file maintained by Juju +# local changes may be overwritten. +############################################################################### + +[image_import_opts] +image_import_plugins = {{ glance_config.image_import_plugins }} + +{% if "image_conversion" in glance_config.image_import_plugins -%} +[image_conversion] +output_format = raw +{% endif %}