From ac75069ee02509ad6662b38751c7610c5564bf79 Mon Sep 17 00:00:00 2001 From: Dag Wieers Date: Mon, 4 Apr 2016 20:11:44 +0200 Subject: [PATCH] Support different encoding types in csvfile lookup plugin This fixes #15266. --- lib/ansible/plugins/lookup/csvfile.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/ansible/plugins/lookup/csvfile.py b/lib/ansible/plugins/lookup/csvfile.py index 976e6f58a40..a54c4517008 100644 --- a/lib/ansible/plugins/lookup/csvfile.py +++ b/lib/ansible/plugins/lookup/csvfile.py @@ -25,10 +25,10 @@ from ansible.plugins.lookup import LookupBase class LookupModule(LookupBase): - def read_csv(self, filename, key, delimiter, dflt=None, col=1): + def read_csv(self, filename, key, delimiter, encoding='utf-8', dflt=None, col=1): try: - f = codecs.open(filename, 'r', encoding='utf-8') + f = codecs.open(filename, 'r', encoding=encoding) creader = csv.reader(f, delimiter=str(delimiter)) for row in creader: @@ -50,10 +50,11 @@ class LookupModule(LookupBase): key = params[0] paramvals = { - 'file' : 'ansible.csv', + 'col' : "1", # column to return 'default' : None, 'delimiter' : "TAB", - 'col' : "1", # column to return + 'file' : 'ansible.csv', + 'encoding' : 'utf-8', } # parameters specified? @@ -69,7 +70,7 @@ class LookupModule(LookupBase): paramvals['delimiter'] = "\t" lookupfile = self._loader.path_dwim_relative(basedir, 'files', paramvals['file']) - var = self.read_csv(lookupfile, key, str(paramvals['delimiter']), paramvals['default'], paramvals['col']) + var = self.read_csv(lookupfile, key, str(paramvals['delimiter']), paramvals['encoding'], paramvals['default'], paramvals['col']) if var is not None: if type(var) is list: for v in var: