From df6b7bf77ff40559ac4029bede0b9114efdd955d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20REY?= <rrey94@gmail.com>
Date: Wed, 30 Oct 2019 08:15:26 +0100
Subject: [PATCH] Fix grafana_datasource fails when name with spaces (#63987)

---
 lib/ansible/modules/monitoring/grafana_datasource.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/ansible/modules/monitoring/grafana_datasource.py b/lib/ansible/modules/monitoring/grafana_datasource.py
index 56060f26b35..4404c59eb6a 100644
--- a/lib/ansible/modules/monitoring/grafana_datasource.py
+++ b/lib/ansible/modules/monitoring/grafana_datasource.py
@@ -360,6 +360,7 @@ import json
 import base64
 
 from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.six.moves.urllib.parse import quote
 from ansible.module_utils.urls import fetch_url, url_argument_spec
 from ansible.module_utils._text import to_text
 
@@ -390,7 +391,7 @@ def grafana_headers(module, data):
 def grafana_datasource_exists(module, grafana_url, name, headers):
     datasource_exists = False
     ds = {}
-    r, info = fetch_url(module, '%s/api/datasources/name/%s' % (grafana_url, name), headers=headers, method='GET')
+    r, info = fetch_url(module, '%s/api/datasources/name/%s' % (grafana_url, quote(name)), headers=headers, method='GET')
     if info['status'] == 200:
         datasource_exists = True
         ds = json.loads(to_text(r.read(), errors='surrogate_or_strict'))
@@ -562,7 +563,7 @@ def grafana_delete_datasource(module, data):
     result = {}
     if datasource_exists is True:
         # delete
-        r, info = fetch_url(module, '%s/api/datasources/name/%s' % (data['grafana_url'], data['name']), headers=headers, method='DELETE')
+        r, info = fetch_url(module, '%s/api/datasources/name/%s' % (data['grafana_url'], quote(data['name'])), headers=headers, method='DELETE')
         if info['status'] == 200:
             res = json.loads(to_text(r.read(), errors='surrogate_or_strict'))
             result['msg'] = "Datasource %s deleted : %s" % (data['name'], res['message'])