Adding hosts bulk deletion feature (#14462)

* Adding hosts bulk deletion feature

Signed-off-by: Avi Layani <alayani@redhat.com>

* fix the type of the argument

Signed-off-by: Avi Layani <alayani@redhat.com>

* fixing activity_entry tracking

Signed-off-by: Avi Layani <alayani@redhat.com>

* Revert "fixing activity_entry tracking"

This reverts commit c8eab52c2ccc5abe215d56d1704ba1157e5fbbd0.
Since the bulk_delete is not related to an inventory, only hosts which
can be from different inventories.

* get only needed vars to reduce memory consumption

Signed-off-by: Avi Layani <alayani@redhat.com>

* filtering the data to reduce memory increase the number of queries

Signed-off-by: Avi Layani <alayani@redhat.com>

* update the activity stream for inventories

Signed-off-by: Avi Layani <alayani@redhat.com>

* fix the changes dict initialiazation

Signed-off-by: Avi Layani <alayani@redhat.com>

---------

Signed-off-by: Avi Layani <alayani@redhat.com>
This commit is contained in:
Avi Layani
2023-12-13 18:28:31 +02:00
committed by GitHub
parent 0d825a744b
commit df24cb692b
15 changed files with 498 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
---
- name: "Generate a random string for test"
set_fact:
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
when: "test_id is not defined"
- name: "Generate a unique name"
set_fact:
bulk_inv_name: "AWX-Collection-tests-bulk_host_create-{{ test_id }}"
- name: "Get our collection package"
controller_meta:
register: "controller_meta"
- name: "Generate the name of our plugin"
set_fact:
plugin_name: "{{ controller_meta.prefix }}.controller_api"
- name: "Create an inventory"
inventory:
name: "{{ bulk_inv_name }}"
organization: "Default"
state: "present"
register: "inventory_result"
- name: "Bulk Host Create"
bulk_host_create:
hosts:
- name: "123.456.789.123"
description: "myhost1"
variables:
food: "carrot"
color: "orange"
- name: "example.dns.gg"
description: "myhost2"
enabled: "false"
inventory: "{{ bulk_inv_name }}"
register: "result"
- assert:
that:
- "result is not failed"
- name: "Get our collection package"
controller_meta:
register: "controller_meta"
- name: "Generate the name of our plugin"
set_fact:
plugin_name: "{{ controller_meta.prefix }}.controller_api"
- name: "Setting the inventory hosts endpoint"
set_fact:
endpoint: "inventories/{{ inventory_result.id }}/hosts/"
- name: "Get hosts information from inventory"
set_fact:
hosts_created: "{{ query(plugin_name, endpoint, return_objects=True) }}"
host_id_list: []
- name: "Extract host IDs from hosts information"
set_fact:
host_id_list: "{{ host_id_list + [item.id] }}"
loop: "{{ hosts_created }}"
- name: "Bulk Host Delete"
bulk_host_delete:
hosts: "{{ host_id_list }}"
register: "result"
- assert:
that:
- "result is not failed"
# cleanup
- name: "Delete inventory"
inventory:
name: "{{ bulk_inv_name }}"
organization: "Default"
state: "absent"