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