From 54c2579a35bec50540a728d07723cef3c0fa4665 Mon Sep 17 00:00:00 2001 From: wuchunyang Date: Tue, 9 Aug 2022 22:32:23 +0800 Subject: Fix docker start failed in guest-agent docker_insecure_registries is a StrOpt, but the default value is '[]' which is true for a string. Change-Id: I4b8841cc77324f274bc8210d328bc42ddef5d056 --- releasenotes/notes/fix-docker-start-failed-160e79b6e5494edd.yaml | 5 +++++ trove/common/cfg.py | 4 ++-- trove/instance/models.py | 2 +- trove/tests/unittests/taskmanager/test_models.py | 7 +++++++ 4 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/fix-docker-start-failed-160e79b6e5494edd.yaml diff --git a/releasenotes/notes/fix-docker-start-failed-160e79b6e5494edd.yaml b/releasenotes/notes/fix-docker-start-failed-160e79b6e5494edd.yaml new file mode 100644 index 00000000..57de117c --- /dev/null +++ b/releasenotes/notes/fix-docker-start-failed-160e79b6e5494edd.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fix docker start failed in trove guest-agent when + docker_insecure_registries is not set. diff --git a/trove/common/cfg.py b/trove/common/cfg.py index 58dd3af6..60692ac9 100644 --- a/trove/common/cfg.py +++ b/trove/common/cfg.py @@ -449,8 +449,8 @@ common_opts = [ 'the datastores supported by Trove.'), cfg.StrOpt('docker_bridge_network_ip', default=None, help='Docker bridge network IP.'), - cfg.StrOpt('docker_insecure_registries', default=[], - help='Docker insecure registries for image development.'), + cfg.ListOpt('docker_insecure_registries', default=[], + help='Docker insecure registries for image development.'), cfg.StrOpt('template_path', default='/etc/trove/templates/', help='Path which leads to datastore templates.'), cfg.BoolOpt('sql_query_logging', default=False, diff --git a/trove/instance/models.py b/trove/instance/models.py index 8469f174..1b6e3078 100644 --- a/trove/instance/models.py +++ b/trove/instance/models.py @@ -1046,7 +1046,7 @@ class BaseInstance(SimpleInstance): docker_daemon_values["bip"] = CONF.docker_bridge_network_ip if CONF.docker_insecure_registries: docker_daemon_values["insecure-registries"] = \ - CONF.docker_insecure_registries.split(',') + CONF.docker_insecure_registries if docker_daemon_values: files['/etc/docker/daemon.json'] = ( diff --git a/trove/tests/unittests/taskmanager/test_models.py b/trove/tests/unittests/taskmanager/test_models.py index 0af1aa16..7497e1dd 100644 --- a/trove/tests/unittests/taskmanager/test_models.py +++ b/trove/tests/unittests/taskmanager/test_models.py @@ -11,6 +11,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import json import os from tempfile import NamedTemporaryFile @@ -257,6 +258,8 @@ class FreshInstanceTasksTest(BaseFreshInstanceTasksTest): cfg.CONF.set_override('guest_config', self.guestconfig) cfg.CONF.set_override('guest_info', 'guest_info.conf') cfg.CONF.set_override('injected_config_location', '/etc/trove/conf.d') + cfg.CONF.set_override('docker_insecure_registries', + '127.0.0.1:4000,127.0.0.1:5000') # execute files = self.freshinstancetasks.get_injected_files("test", 'test') @@ -268,6 +271,9 @@ class FreshInstanceTasksTest(BaseFreshInstanceTasksTest): self.assertEqual( self.guestconfig_content, files['/etc/trove/conf.d/trove-guestagent.conf']) + deamon_json = json.loads(files.get('/etc/docker/daemon.json')) + self.assertIn('127.0.0.1:4000', deamon_json.get('insecure-registries')) + self.assertIn('127.0.0.1:5000', deamon_json.get('insecure-registries')) @patch.object(DBInstance, 'get_by') def test_create_instance_guestconfig_compat(self, patch_get_by): @@ -285,6 +291,7 @@ class FreshInstanceTasksTest(BaseFreshInstanceTasksTest): self.assertEqual( self.guestconfig_content, files['/etc/trove-guestagent.conf']) + self.assertFalse(files.get('/etc/docker/daemon.json')) def test_create_instance_with_az_kwarg(self): # execute -- cgit v1.2.1