From 1e27b6b69c46c71bb809d6243fec65e5b456d4ce Mon Sep 17 00:00:00 2001
From: Jakob Meng <code@jakobmeng.de>
Date: Fri, 28 Oct 2022 18:19:24 +0200
Subject: [PATCH] Revert openstack.cloud.server parameter user_data to userdata

openstacksdk's create_server() [1] takes cloud-init userdata as a
plaintext string (or other data types [2]) via argument 'userdata',
not 'user_data' [3]. This is 'userdata' argument of create_server()
is different from the 'user_data' value which is returned [4]. The
latter is base64 decoded, while the former is e.g. a plaintext string.
As a (tiny) visual indicator for this difference, this patch reverts
the module parameter 'user_data' to 'userdata' which was used before
this module got refactored [5].

[1] https://opendev.org/openstack/openstacksdk/src/commit/57fbb72e32351f795f5888306096e8d3d35a64ef/openstack/cloud/_compute.py#L678
[2] https://opendev.org/openstack/openstacksdk/src/commit/57fbb72e32351f795f5888306096e8d3d35a64ef/openstack/cloud/_compute.py#L1757
[3] https://opendev.org/openstack/openstacksdk/src/commit/57fbb72e32351f795f5888306096e8d3d35a64ef/openstack/cloud/_compute.py#L796
[4] https://opendev.org/openstack/openstacksdk/src/commit/57fbb72e32351f795f5888306096e8d3d35a64ef/openstack/compute/v2/server.py#L223
[5] https://opendev.org/openstack/ansible-collections-openstack/commit/ac401bb354c6a1d388848a3ebd18537beba080cc

Change-Id: I1f3b9314e4d82674cd2ae45f6209de5611e2b6cb
---
 plugins/modules/server.py | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/plugins/modules/server.py b/plugins/modules/server.py
index fabfcbb..8bb1e3e 100644
--- a/plugins/modules/server.py
+++ b/plugins/modules/server.py
@@ -205,12 +205,11 @@ options:
           into active state.
       default: 180
       type: int
-    user_data:
+    userdata:
       description:
         - Opaque blob of data which is made available to the instance.
         - This server attribute cannot be updated.
       type: str
-      aliases: ['userdata']
     volume_size:
       description:
         - The size of the volume to create in GB if booting from volume based
@@ -423,7 +422,7 @@ EXAMPLES = '''
         image: "Ubuntu Server 14.04"
         flavor: "P-1"
         network: "Production"
-        user_data: |
+        userdata: |
           #cloud-config
           chpasswd:
             list: |
@@ -444,7 +443,7 @@ EXAMPLES = '''
         image: "Ubuntu Server 22.04"
         flavor: "P-1"
         network: "Production"
-        user_data: |
+        userdata: |
           #!/bin/sh
           apt update
           apt -y full-upgrade
@@ -818,7 +817,7 @@ class ServerModule(OpenStackModule):
         security_groups=dict(default=[], type='list', elements='str'),
         state=dict(default='present', choices=['absent', 'present']),
         terminate_volume=dict(default=False, type='bool'),
-        user_data=dict(aliases=['userdata']),
+        userdata=dict(),
         volume_size=dict(type='int'),
         volumes=dict(default=[], type='list', elements='str'),
     )
@@ -1065,7 +1064,7 @@ class ServerModule(OpenStackModule):
                   'boot_volume', 'config_drive', 'description', 'key_name',
                   'name', 'network', 'reuse_ips', 'scheduler_hints',
                   'security_groups', 'terminate_volume', 'timeout',
-                  'user_data', 'volume_size', 'volumes', 'wait']:
+                  'userdata', 'volume_size', 'volumes', 'wait']:
             if self.params[k] is not None:
                 args[k] = self.params[k]
 
-- 
GitLab