--- - name: Create project openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project description: dummy description domain: default is_enabled: True register: project - name: Assert return values of project module assert: that: - project is changed # allow new fields to be introduced but prevent fields from being removed - expected_fields|difference(project.project.keys())|length == 0 - name: Fetch project openstack.cloud.project_info: cloud: "{{ cloud }}" name: ansible_project register: project - name: Assert project assert: that: - project.projects | length == 1 - project.projects.0.name == 'ansible_project' - project.projects.0.description == 'dummy description' - name: Create project again openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project description: dummy description domain: default is_enabled: True register: project - name: Assert return values of project module assert: that: - project is not changed # allow new fields to be introduced but prevent fields from being removed - expected_fields|difference(project.project.keys())|length == 0 - name: Update project openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project description: new description extra_specs: tags: - example_tag register: project - name: Assert project changed assert: that: - project is changed - project.project.description == 'new description' - name: Fetch all projects openstack.cloud.project_info: cloud: "{{ cloud }}" register: projects - name: Assert return values of project_info module assert: that: - projects.projects | length > 0 # allow new fields to be introduced but prevent fields from being removed - expected_fields|difference(projects.projects.0.keys())|length == 0 - name: Fetch project by name openstack.cloud.project_info: cloud: "{{ cloud }}" name: 'ansible_project' register: projects - name: Assert return values of project_info module assert: that: - projects.projects | length == 1 - projects.projects.0.name == 'ansible_project' - name: Fetch projects with filter openstack.cloud.project_info: cloud: "{{ cloud }}" filters: name: 'ansible_project' register: projects - name: Assert return values of project_info module assert: that: - projects.projects | length == 1 - projects.projects.0.name == 'ansible_project' - name: Fetch project by name and domain openstack.cloud.project_info: cloud: "{{ cloud }}" name: 'ansible_project' domain: 'default' register: projects - name: Assert return values of project_info module assert: that: - projects.projects | length == 1 - projects.projects.0.name == 'ansible_project' - name: Delete project openstack.cloud.project: cloud: "{{ cloud }}" state: absent name: ansible_project register: project - name: Assert project changed assert: that: project is changed - name: Get project openstack.cloud.project_info: cloud: "{{ cloud }}" name: ansible_project register: project_info - name: Assert project deleted assert: that: - project_info.projects | length == 0 - name: Delete project again openstack.cloud.project: cloud: "{{ cloud }}" state: absent name: ansible_project register: project - name: Assert project not changed assert: that: project is not changed - name: Create project with extra_specs openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project extra_specs: is_enabled: False register: project - name: Assert return values of project module assert: that: - project.project.is_enabled == False - name: Update project with extra_specs openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project extra_specs: is_enabled: True register: project - name: Assert return values of project module assert: that: - project.project.is_enabled == True - name: Update project to add new extra_specs openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project extra_specs: is_enabled: True another_tag: True register: project - name: Assert return values of project module assert: that: - project.project.is_enabled == True - project.project.another_tag == True - name: Update project to change existing extra_specs openstack.cloud.project: cloud: "{{ cloud }}" state: present name: ansible_project extra_specs: is_enabled: True another_tag: False register: project - name: Assert return values of project module assert: that: - project.project.is_enabled == True - project.project.another_tag == False - name: Delete project openstack.cloud.project: cloud: "{{ cloud }}" state: absent name: ansible_project