From 57a69c580df943b41251d1d037b4b0f05f9181bb Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Tue, 17 Nov 2020 13:26:15 +0100 Subject: [PATCH] F #5177: Compatibility with existing containers (cherry picked from commit 826d5e9af064aa0d945f2d5cae90f2bdfe394df6) --- src/vmm_mad/remotes/lib/lxd/container.rb | 2 +- src/vmm_mad/remotes/lxd/reboot | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vmm_mad/remotes/lib/lxd/container.rb b/src/vmm_mad/remotes/lib/lxd/container.rb index 933717a1f9..2a3c3be382 100644 --- a/src/vmm_mad/remotes/lib/lxd/container.rb +++ b/src/vmm_mad/remotes/lib/lxd/container.rb @@ -497,7 +497,7 @@ class Container container_key = 'user.xml' # TODO: lxdrc ? - @lxc['config'].update(container_key => Base64.encode64(one_xml)) + @lxc['config'].update(container_key => Base64.strict_encode64(one_xml)) end private diff --git a/src/vmm_mad/remotes/lxd/reboot b/src/vmm_mad/remotes/lxd/reboot index 4033e82dbc..5be94c5db6 100755 --- a/src/vmm_mad/remotes/lxd/reboot +++ b/src/vmm_mad/remotes/lxd/reboot @@ -23,6 +23,15 @@ require 'base64' require_relative '../../scripts_common' +# Ref: https://rgxdb.com/r/1NUN74O6 +def base64?(str) + b64_rexp = %r{^(?:[a-zA-Z0-9+/]{4})*(?:|(?:[a-zA-Z0-9+/]{3}=)|(?:[a-zA-Z0-9+/]{2}==)|(?:[a-zA-Z0-9+/]{1}===))$} + + b64_rexp.match?(str.strip) +rescue StandardError + false +end + # ------------------------------------------------------------------------------ # Action Arguments, STDIN doesn't include XML description of the OpenNebula VM # ------------------------------------------------------------------------------ @@ -31,7 +40,9 @@ vm_name = ARGV[0] client = LXDClient.new container = Container.get(vm_name, nil, client) -xml = Base64.decode64(container.config['user.xml']) +xml = container.config['user.xml'] +xml = Base64.decode64(xml) if base64?(xml) + container = Container.get(vm_name, xml, client) force = false