Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
Apparently there just isn't an equivalent of additionalProperties in Ansible. The way around this is to break the dictionary argument into a list of key/value pairs: argument_specs: main: ...
Answer
#2: Post edited
- Apparently there just isn't an equivalent of `additionalProperties` in Ansible.
- The way around this is to break the dictionary argument into a list of key/value pairs:
- ```yaml
- argument_specs:
- main:
- options:
- dictionary_argument:
- description: A map from string to integers.
- type: list
- required: true
- elements: dict
- options:
- key:
- type: str
- required: true
- value:
- type: int
- required: true
- ```
Just keep in mind that by doing this you loose some of dictionaries' implicit restriction of unique keys. If this is important, you will have to verify this manually in a task:- ```yaml
- - name: Argument validation
- vars:
- original_length: "{{ dictionary_argument | length }}"
- unique_length: "{{ dictionary_argument | unique(attribute='key') | length }}"
- ansible.builtin.assert:
- that:
- - original_length == unique_length
- ```
- Apparently there just isn't an equivalent of `additionalProperties` in Ansible.
- The way around this is to break the dictionary argument into a list of key/value pairs:
- ```yaml
- argument_specs:
- main:
- options:
- dictionary_argument:
- description: A map from string to integers.
- type: list
- required: true
- elements: dict
- options:
- key:
- type: str
- required: true
- value:
- type: int
- required: true
- ```
- Just keep in mind that by doing this you loose dictionaries' implicit restriction of unique keys. If this is important, you will have to verify this manually in a task:
- ```yaml
- - name: Argument validation
- vars:
- original_length: "{{ dictionary_argument | length }}"
- unique_length: "{{ dictionary_argument | unique(attribute='key') | length }}"
- ansible.builtin.assert:
- that:
- - original_length == unique_length
- ```
#1: Initial revision
Apparently there just isn't an equivalent of `additionalProperties` in Ansible. The way around this is to break the dictionary argument into a list of key/value pairs: ```yaml argument_specs: main: options: dictionary_argument: description: A map from string to integers. type: list required: true elements: dict options: key: type: str required: true value: type: int required: true ``` Just keep in mind that by doing this you loose some of dictionaries' implicit restriction of unique keys. If this is important, you will have to verify this manually in a task: ```yaml - name: Argument validation vars: original_length: "{{ dictionary_argument | length }}" unique_length: "{{ dictionary_argument | unique(attribute='key') | length }}" ansible.builtin.assert: that: - original_length == unique_length ```