Refactored project{,_info} modules

Change-Id: I863d08c42b4c708444b74e3d47f0ca70a8ff94fd
This commit is contained in:
Jakob Meng
2023-01-04 19:53:15 +01:00
parent 0071fdcd97
commit eaa26c6b9c
12 changed files with 434 additions and 440 deletions

View File

@@ -21,8 +21,8 @@
- name: Verify demo project
assert:
that:
- projects.openstack_projects|length == 1
- projects.openstack_projects.0.name == "demo"
- projects.projects|length == 1
- projects.projects.0.name == "demo"
- name: Grant access to flavor
openstack.cloud.compute_flavor_access:
@@ -47,7 +47,7 @@
assert:
that:
- (flavor_show.stdout | from_json).name == 'ansible_flavor'
- projects.openstack_projects.0.id in (flavor_show.stdout | from_json).access_project_ids
- projects.projects.0.id in (flavor_show.stdout | from_json).access_project_ids
- name: Grant access to flavor again
openstack.cloud.compute_flavor_access:

View File

@@ -239,8 +239,8 @@
state: present
name: image_owner_project
description: Project owning test image
domain_id: default
enabled: True
domain: default
is_enabled: True
register: owner_project
- name: Create raw image (owner by project name)
@@ -309,7 +309,7 @@
cloud: "{{ cloud }}"
state: absent
name: image_owner_project
domain_id: default
domain: default
- name: Delete test image file
file:

View File

@@ -5,8 +5,8 @@
state: present
name: ansible_source_project
description: Source project for network RBAC test
domain_id: default
enabled: True
domain: default
is_enabled: True
register: source_project
- name: Create network

View File

@@ -1,4 +1,4 @@
project_fields:
expected_fields:
- description
- domain_id
- id

View File

@@ -1,155 +1,181 @@
---
- name: Ensure project doesn't exist before tests
- name: Create project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
state: present
name: ansible_project
description: dummy description
domain: default
is_enabled: True
register: project
- block:
- name: Create project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: ansible_project
description: dummy description
domain: default
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: Assert project changed
assert:
that: project is changed
- name: Fetch project
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: ansible_project
register: project
- name: Assert project fields
assert:
that: item in project['project']
loop: "{{ project_fields }}"
- name: Assert project
assert:
that:
- project.projects | length == 1
- project.projects.0.name == 'ansible_project'
- project.projects.0.description == 'dummy description'
- name: Get project
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: ansible_project
register: project_info
- 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 project
assert:
that:
- project_info.openstack_projects | length == 1
- project_info.openstack_projects[0]['name'] == 'ansible_project'
- project_info.openstack_projects[0]['description'] == 'dummy description'
- 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
- block:
- name: Create identical project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: ansible_project
description: dummy description
domain: default
enabled: True
register: project
- 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 not changed
assert:
that: project is not changed
- name: Assert project changed
assert:
that:
- project is changed
- project.project.description == 'new description'
- name: Assert project fields
assert:
that: item in project['project']
loop: "{{ project_fields }}"
- 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
- block:
- name: Update project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: ansible_project
description: new description
properties:
tags:
- example_tag
register: project
- name: Fetch project by name
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: 'ansible_project'
register: projects
- name: Assert project changed
assert:
that: project is changed
- name: Assert return values of project_info module
assert:
that:
- projects.projects | length == 1
- projects.projects.0.name == 'ansible_project'
- name: Assert project fields
assert:
that: item in project['project']
loop: "{{ project_fields }}"
- name: Fetch projects with filter
openstack.cloud.project_info:
cloud: "{{ cloud }}"
filters:
name: 'ansible_project'
register: projects
- name: Get project
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: ansible_project
register: project_info
- name: Assert return values of project_info module
assert:
that:
- projects.projects | length == 1
- projects.projects.0.name == 'ansible_project'
- name: Assert project
assert:
that:
- project_info.openstack_projects | length == 1
- project_info.openstack_projects[0]['description'] == 'new description'
- name: Fetch project by name and domain
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: 'ansible_project'
domain: 'default'
register: projects
- block:
- name: Delete project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
name: ansible_project
register: project
- name: Assert return values of project_info module
assert:
that:
- projects.projects | length == 1
- projects.projects.0.name == 'ansible_project'
- name: Assert project changed
assert:
that: project is changed
- name: Delete project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
name: ansible_project
register: project
- name: Get project
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: ansible_project
register: project_info
- name: Assert project changed
assert:
that: project is changed
- name: Assert project deleted
assert:
that:
- project_info.openstack_projects | length == 0
- 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
- block:
- name: Delete non existant project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
name: ansible_project
register: project
- 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: Assert project not changed
assert:
that: project is not changed
- block:
- name: Create project with properties
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: ansible_project
description: dummy description
domain: default
enabled: True
properties:
dummy_key: dummy_value
register: project
- name: Create project with extra_specs
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: ansible_project
extra_specs:
is_enabled: False
register: project
- block:
- name: Update project with properties
openstack.cloud.project:
cloud: "{{ cloud }}"
state: present
name: ansible_project
description: dummy description
domain: default
enabled: True
properties:
dummy_key: other_dummy_value
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: Delete project
openstack.cloud.project:
cloud: "{{ cloud }}"
state: absent
name: ansible_project

View File

@@ -1,46 +0,0 @@
---
- name: List admin project
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: 'admin'
register: project_admin
- name: List admin project with filter
openstack.cloud.project_info:
cloud: "{{ cloud }}"
filters:
name: 'admin'
- name: Check output of list admin project
assert:
that:
- project_admin.openstack_projects | length == 1
- name: List all projects
openstack.cloud.project_info:
cloud: "{{ cloud }}"
register: all_projects
- name: Check output of list all projects
assert:
that:
- all_projects.openstack_projects | length > 0
- name: List admin project with domain
openstack.cloud.project_info:
cloud: "{{ cloud }}"
name: 'admin'
domain: 'default'
register: project_domain
- name: Check output of list admin project with admin domain
assert:
that:
- project_domain.openstack_projects | length == 1
- name: Assert fields on SDK 1.*
assert:
that:
- '["description", "domain_id", "is_domain", "is_enabled", "options",
"parent_id", "id", "name", "tags"] |
difference(project_admin.openstack_projects.0.keys()) | length == 0'

View File

@@ -5,9 +5,8 @@
state: present
name: ansible_project
description: dummy description
domain_id: default
enabled: True
register: project
domain: default
is_enabled: True
- name: Grant an admin role on the user admin in the project ansible_project
openstack.cloud.role_assignment:

View File

@@ -5,8 +5,8 @@
state: present
name: "shared_net_test_1"
description: "Project that contains the subnet to be shared"
domain_id: default
enabled: True
domain: default
is_enabled: True
register: project_1
- name: Create the network to be shared
@@ -37,8 +37,8 @@
state: present
name: "shared_net_test_2"
description: "Project that contains the subnet to be shared"
domain_id: default
enabled: True
domain: default
is_enabled: True
register: project_2
- name: Share the network with the second project

View File

@@ -23,8 +23,8 @@
- name: Verify demo project
assert:
that:
- projects.openstack_projects|length == 1
- projects.openstack_projects.0.name == "demo"
- projects.projects|length == 1
- projects.projects.0.name == "demo"
- name: Grant access to volume type
openstack.cloud.volume_type_access:
@@ -49,7 +49,7 @@
assert:
that:
- (volume_type.stdout | from_json).name == 'ansible_volume_type'
- projects.openstack_projects.0.id in (volume_type.stdout | from_json).access_project_ids
- projects.projects.0.id in (volume_type.stdout | from_json).access_project_ids
- name: Grant access to volume type again
openstack.cloud.volume_type_access:

View File

@@ -42,7 +42,6 @@
- { role: object_container, tags: object_container }
- { role: port, tags: port }
- { role: project, tags: project }
- { role: project_info, tags: project_info }
- { role: recordset, tags: recordset }
- { role: role_assignment, tags: role_assignment }
- { role: router, tags: router }