
    Vh/                     R    d Z dZdZddlmZ  G d de      Zd Zedk(  r e        y	y	)
a  
---
module: resources
short_description: List OpenStack cloud resources
author: OpenStack Ansible SIG
description:
  - List OpenStack cloud resources.
options:
  service:
    description:
      - OpenStack service which this resource is part of.
      - Examples are C(block_storage), C(compute) or C(network).
      - "I(service) must be a C(lowercase) name of a OpenStack service as
         used in openstacksdk. For a list of available services visit
         U(https://opendev.org/openstack/openstacksdk): Most subdirectories
         in the C(openstack) directory correspond to a OpenStack service,
         except C(cloud), C(common) and other auxiliary directories."
    required: true
    type: str
  parameters:
    description:
      - Query parameters passed to OpenStack API for results filtering.
      - I(attributes) is a set of key-value pairs where each key is a attribute
        name such as C(id) and value holds its corresponding attribute value
        such C(ddad2d86-02a6-444d-80ae-1cc2fb023784).
      - For a complete list of valid query parameters open any resource class
        inside openstacksdk such as file C(openstack/compute/v2/server.py) in
        U(https://opendev.org/openstack/openstacksdk/) and consult variable
        C(_query_mapping).
    type: dict
  type:
    description:
      - Typename of the resource.
      - Examples are C(ip), C(network), C(router) or C(server).
      - "I(type) must be a C(lowercase) name of a openstacksdk resource class.
         Resource classes are defined in openstacksdk's service folders. For
         example, visit U(https://opendev.org/openstack/openstacksdk), change
         to C(openstack) directory, change to any service directory such as
         C(compute), choose a api version directory such as C(v2) and find all
         available resource classes such as C(Server) inside C(*.py) files."
    required: true
    type: str
notes:
  - "This module does not support all OpenStack cloud resources. Resource
     handling must follow openstacksdk's CRUD structure using and providing
     a C(<service>.<type>s) function. The module will fail if this function
     cannot be found."
extends_documentation_fragment:
  - openstack.cloud.openstack
z
resources:
  description: Dictionary describing the identified OpenStack cloud resources.
  returned: always
  type: list
  elements: dict
a!  
- name: List images
  openstack.cloud.resources:
    cloud: devstack-admin
    service: image
    type: image
  register: images

- name: Identify CirrOS image id
  set_fact:
    image_id: "{{
      images.resources|community.general.json_query(query)|first }}"
  vars:
    query: "[?starts_with(name, 'cirros')].id"

- name: List compute flavors
  openstack.cloud.resources:
    cloud: devstack-admin
    service: compute
    type: flavor
  register: flavors

- name: Identify m1.tiny flavor id
  set_fact:
    flavor_id: "{{
      flavors.resources|community.general.json_query(query)|first }}"
  vars:
    query: "[?name == 'm1.tiny'].id"

- name: List public network
  openstack.cloud.resources:
    cloud: devstack-admin
    service: network
    type: network
    parameters:
      name: public
    )OpenStackModulec                   d    e Zd Z e ed       ed       ed            Z ed      Zd Zy)	ResourcesModuledict)typeT)required)
parametersservicer   )supports_check_modec           	      N   | j                   d   }| j                   d   }t        | j                  |      }t        |dj                  |            }| j                   d   }|r |di |n |       }| j	                  d|D cg c]  }|j                  d       c}       y c c}w )	Nr
   r   z{0}sr	   F)computed)changed	resources )paramsgetattrconnformat	exit_jsonto_dict)selfservice_name	type_namesessionlist_functionr	   r   rs           m/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/openstack/cloud/plugins/modules/resources.pyrunzResourcesModule.runw   s    {{9-KK'	$))\2y)AB[[.
+5M'J'=? 	 	:CDQqyy%y0D 	 	FDs    B"
N)__name__
__module____qualname__r   argument_specmodule_kwargsr   r       r   r   r   l   s9    V$d#4 M  MFr$   r   c                  &    t               }  |         y )N)r   )modules    r   mainr'      s    F
Hr$   __main__N)DOCUMENTATIONRETURNEXAMPLESBansible_collections.openstack.cloud.plugins.module_utils.openstackr   r   r'   r   r   r$   r   <module>r-      sI   1f
$L _Fo F6
 zF r$   