297660
From bcbd6be99d8317793aff905c4222c351a1bf5c46 Mon Sep 17 00:00:00 2001
134b57
From: Eduardo Otubo <otubo@redhat.com>
297660
Date: Thu, 21 Jan 2021 10:08:49 +0100
297660
Subject: [PATCH 1/2] DataSourceAzure: update password for defuser if exists
297660
 (#671)
134b57
134b57
RH-Author: Eduardo Terrell Ferrari Otubo (eterrell)
297660
RH-MergeRequest: 37: DataSourceAzure: update password for defuser if exists (#671)
297660
RH-Commit: [1/1] 264092a68a3771cc4ed99dad5b93f7a1433e143a (eterrell/cloud-init)
297660
RH-Bugzilla: 1900892
134b57
134b57
commit eea754492f074e00b601cf77aa278e3623857c5a
134b57
Author: Anh Vo <anhvo@microsoft.com>
134b57
Date:   Thu Nov 19 00:35:46 2020 -0500
134b57
134b57
    DataSourceAzure: update password for defuser if exists (#671)
134b57
134b57
    cc_set_password will only update the password for the default user if
134b57
    cfg['password'] is set. The existing code of datasource Azure will fail
134b57
    to update the default user's password because it does not set that
134b57
    metadata. If the default user doesn't exist in the image, the current
134b57
    code works fine because the password is set during user create and
134b57
    not in cc_set_password
134b57
134b57
Signed-off-by: Eduardo Otubo <otubo@redhat.com>
134b57
---
134b57
 cloudinit/sources/DataSourceAzure.py          | 2 +-
134b57
 tests/unittests/test_datasource/test_azure.py | 3 +++
134b57
 2 files changed, 4 insertions(+), 1 deletion(-)
134b57
134b57
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
297660
index 1c214db9..d4a2d60f 100755
134b57
--- a/cloudinit/sources/DataSourceAzure.py
134b57
+++ b/cloudinit/sources/DataSourceAzure.py
297660
@@ -1231,7 +1231,7 @@ def read_azure_ovf(contents):
134b57
     if password:
134b57
         defuser['lock_passwd'] = False
134b57
         if DEF_PASSWD_REDACTION != password:
134b57
-            defuser['passwd'] = encrypt_pass(password)
134b57
+            defuser['passwd'] = cfg['password'] = encrypt_pass(password)
134b57
 
134b57
     if defuser:
134b57
         cfg['system_info'] = {'default_user': defuser}
134b57
diff --git a/tests/unittests/test_datasource/test_azure.py b/tests/unittests/test_datasource/test_azure.py
297660
index 47e03bd1..2059990a 100644
134b57
--- a/tests/unittests/test_datasource/test_azure.py
134b57
+++ b/tests/unittests/test_datasource/test_azure.py
297660
@@ -919,6 +919,9 @@ scbus-1 on xpt0 bus 0
134b57
                          crypt.crypt(odata['UserPassword'],
134b57
                                      defuser['passwd'][0:pos]))
134b57
 
134b57
+        # the same hashed value should also be present in cfg['password']
134b57
+        self.assertEqual(defuser['passwd'], dsrc.cfg['password'])
134b57
+
134b57
     def test_user_not_locked_if_password_redacted(self):
134b57
         odata = {'HostName': "myhost", 'UserName': "myuser",
134b57
                  'UserPassword': dsaz.DEF_PASSWD_REDACTION}
134b57
-- 
134b57
2.18.4
134b57