Encode userdata base64 for launch templates

For create_launch_template, the userdata must be provided base64
encoded. In contrast to the run_instance call, for which it is
automatically encoded.

Change-Id: I5fe3a8d13705d6f4b6a0c9ad3ec8e2c94d27a726
This commit is contained in:
Benedikt Loeffler 2024-08-15 14:50:49 +02:00
parent 8d5bb20aee
commit ee621f1a70
2 changed files with 5 additions and 2 deletions

View File

@ -1709,7 +1709,9 @@ class AwsAdapter(statemachine.Adapter):
}
if label.userdata:
template_data['UserData'] = label.userdata
userdata_base64 = base64.b64encode(
label.userdata.encode('ascii')).decode('utf-8')
template_data['UserData'] = userdata_base64
template_args = dict(
LaunchTemplateData=template_data,

View File

@ -1444,7 +1444,8 @@ class TestDriverAws(tests.DBTestCase):
LaunchTemplateId=lt1['LaunchTemplateId'])[
'LaunchTemplateVersions'][0]
lt1_data = lt1_version['LaunchTemplateData']
self.assertEqual(lt1_data['UserData'], 'some-command')
lt1_userdata = base64.b64decode(lt1_data['UserData']).decode()
self.assertEqual(lt1_userdata, 'some-command')
# Get details from second launch template
lt2_version = self.ec2_client.\