23ae3aa32a
* read_csv: new module to read CSV files * Add a doc reference to the csvfile lookup plugin * Enable the use of custom dialect options * Improve error handling * Fix PEP8 * Fix more PEP8 * Simplify custom dialect code * Add integration tests * Fixes for CI * Fix for python 2.6
142 lines
3.8 KiB
YAML
142 lines
3.8 KiB
YAML
# Create basic CSV file
|
|
- name: Create unique CSV file
|
|
copy:
|
|
content: |
|
|
name,uid,gid,gecos
|
|
dag,500,500,Dag Wieërs
|
|
jeroen,501,500,Jeroen Hoekx
|
|
dest: users_unique.csv
|
|
|
|
# Read a CSV file and access user 'dag'
|
|
- name: Read users from CSV file and return a dictionary
|
|
read_csv:
|
|
path: users_unique.csv
|
|
key: name
|
|
register: users_unique
|
|
|
|
- assert:
|
|
that:
|
|
- users_unique.dict.dag.name == 'dag'
|
|
- users_unique.dict.dag.gecos == 'Dag Wieërs'
|
|
- users_unique.dict.dag.uid == '500'
|
|
- users_unique.dict.dag.gid == '500'
|
|
- users_unique.dict.jeroen.name == 'jeroen'
|
|
- users_unique.dict.jeroen.gecos == 'Jeroen Hoekx'
|
|
- users_unique.dict.jeroen.uid == '501'
|
|
- users_unique.dict.jeroen.gid == '500'
|
|
|
|
# Read a CSV file and access the first item
|
|
- name: Read users from CSV file and return a list
|
|
read_csv:
|
|
path: users_unique.csv
|
|
register: users_unique
|
|
|
|
- assert:
|
|
that:
|
|
- users_unique.list.0.name == 'dag'
|
|
- users_unique.list.0.gecos == 'Dag Wieërs'
|
|
- users_unique.list.0.uid == '500'
|
|
- users_unique.list.0.gid == '500'
|
|
- users_unique.list.1.name == 'jeroen'
|
|
- users_unique.list.1.gecos == 'Jeroen Hoekx'
|
|
- users_unique.list.1.uid == '501'
|
|
- users_unique.list.1.gid == '500'
|
|
|
|
|
|
# Create basic CSV file using semi-colon
|
|
- name: Create non-unique CSV file using semi-colon
|
|
copy:
|
|
content: |
|
|
name;uid;gid;gecos
|
|
dag;500;500;Dag Wieërs
|
|
jeroen;501;500;Jeroen Hoekx
|
|
dag;502;500;Dag Wieers
|
|
dest: users_nonunique.csv
|
|
|
|
# Read a CSV file and access user 'dag'
|
|
- name: Read users from CSV file and return a dictionary
|
|
read_csv:
|
|
path: users_nonunique.csv
|
|
key: name
|
|
unique: no
|
|
delimiter: ';'
|
|
register: users_nonunique
|
|
delegate_to: localhost
|
|
|
|
- assert:
|
|
that:
|
|
- users_nonunique.dict.dag.name == 'dag'
|
|
- users_nonunique.dict.dag.gecos == 'Dag Wieers'
|
|
- users_nonunique.dict.dag.uid == '502'
|
|
- users_nonunique.dict.dag.gid == '500'
|
|
- users_nonunique.dict.jeroen.name == 'jeroen'
|
|
- users_nonunique.dict.jeroen.gecos == 'Jeroen Hoekx'
|
|
- users_nonunique.dict.jeroen.uid == '501'
|
|
- users_nonunique.dict.jeroen.gid == '500'
|
|
|
|
|
|
# Read a CSV file using an non-existing dialect
|
|
- name: Read users from CSV file and return a dictionary
|
|
read_csv:
|
|
path: users_nonunique.csv
|
|
dialect: placebo
|
|
register: users_placebo
|
|
ignore_errors: yes
|
|
|
|
- assert:
|
|
that:
|
|
- users_placebo is failed
|
|
- users_placebo.msg == "Dialect 'placebo' is not supported by your version of python."
|
|
|
|
|
|
# Create basic CSV file without header
|
|
- name: Create unique CSV file without header
|
|
copy:
|
|
content: |
|
|
dag,500,500,Dag Wieërs
|
|
jeroen,501,500,Jeroen Hoekx
|
|
dest: users_noheader.csv
|
|
delegate_to: localhost
|
|
|
|
# Read a CSV file and access user 'dag'
|
|
- name: Read users from CSV file and return a dictionary
|
|
read_csv:
|
|
path: users_noheader.csv
|
|
key: name
|
|
fieldnames: name,uid,gid,gecos
|
|
register: users_noheader
|
|
|
|
- assert:
|
|
that:
|
|
- users_noheader.dict.dag.name == 'dag'
|
|
- users_noheader.dict.dag.gecos == 'Dag Wieërs'
|
|
- users_noheader.dict.dag.uid == '500'
|
|
- users_noheader.dict.dag.gid == '500'
|
|
- users_noheader.dict.jeroen.name == 'jeroen'
|
|
- users_noheader.dict.jeroen.gecos == 'Jeroen Hoekx'
|
|
- users_noheader.dict.jeroen.uid == '501'
|
|
- users_noheader.dict.jeroen.gid == '500'
|
|
|
|
|
|
# Create broken file
|
|
- name: Create unique CSV file
|
|
copy:
|
|
content: |
|
|
name,uid,gid,gecos
|
|
dag,500,500,Dag Wieërs
|
|
jeroen,501,500,"Jeroen"Hoekx"
|
|
dest: users_broken.csv
|
|
|
|
# Read a broken CSV file using strict
|
|
- name: Read users from a broken CSV file
|
|
read_csv:
|
|
path: users_broken.csv
|
|
key: name
|
|
strict: yes
|
|
register: users_broken
|
|
ignore_errors: yes
|
|
|
|
- assert:
|
|
that:
|
|
- users_broken is failed
|
|
- "'Unable to process file' in users_broken.msg"
|