From 0130490faa36ff92cfaaac718f58e8a528f012e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Moser?= Date: Thu, 8 Mar 2018 17:05:57 +0100 Subject: [PATCH] cs_instance: fix py3 user_data base64 (#37135) * cs_instance: tests: reproduce py3 user_data base64 issue * cs_instance: fix base64 encoding with py3 --- .../modules/cloud/cloudstack/cs_instance.py | 11 ++++++++--- .../targets/cs_instance/tasks/present.yml | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/cloud/cloudstack/cs_instance.py b/lib/ansible/modules/cloud/cloudstack/cs_instance.py index 06a2529419..c3145b99f9 100644 --- a/lib/ansible/modules/cloud/cloudstack/cs_instance.py +++ b/lib/ansible/modules/cloud/cloudstack/cs_instance.py @@ -348,8 +348,13 @@ instance_name: import base64 from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.cloudstack import (AnsibleCloudStack, CS_HYPERVISORS, cs_argument_spec, - cs_required_together) +from ansible.module_utils._text import to_bytes, to_text +from ansible.module_utils.cloudstack import ( + AnsibleCloudStack, + CS_HYPERVISORS, + cs_argument_spec, + cs_required_together +) class AnsibleCloudStackInstance(AnsibleCloudStack): @@ -592,7 +597,7 @@ class AnsibleCloudStackInstance(AnsibleCloudStack): def get_user_data(self): user_data = self.module.params.get('user_data') if user_data is not None: - user_data = base64.b64encode(str(user_data)) + user_data = to_text(base64.b64encode(to_bytes(user_data))) return user_data def get_details(self): diff --git a/test/integration/targets/cs_instance/tasks/present.yml b/test/integration/targets/cs_instance/tasks/present.yml index cc145e5bb0..ed089f170d 100644 --- a/test/integration/targets/cs_instance/tasks/present.yml +++ b/test/integration/targets/cs_instance/tasks/present.yml @@ -15,6 +15,11 @@ affinity_group: "{{ cs_resource_prefix }}-ag" security_group: "{{ cs_resource_prefix }}-sg" ssh_key: "{{ cs_resource_prefix }}-sshkey" + user_data: | + #cloud-config + package_upgrade: true + packages: + - tmux tags: [] register: instance check_mode: true @@ -32,6 +37,11 @@ affinity_group: "{{ cs_resource_prefix }}-ag" security_group: "{{ cs_resource_prefix }}-sg" ssh_key: "{{ cs_resource_prefix }}-sshkey" + user_data: | + #cloud-config + package_upgrade: true + packages: + - tmux tags: [] register: instance - name: verify create instance @@ -54,6 +64,11 @@ affinity_group: "{{ cs_resource_prefix }}-ag" security_group: "{{ cs_resource_prefix }}-sg" ssh_key: "{{ cs_resource_prefix }}-sshkey" + user_data: | + #cloud-config + package_upgrade: true + packages: + - tmux tags: [] register: instance - name: verify create instance idempotence @@ -84,7 +99,6 @@ - instance.service_offering == "{{ test_cs_instance_offering_1 }}" - instance.state == "Running" - - name: test running instance not updated cs_instance: name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"