ansible-collections-openstack/plugins/modules/image_info.py
Jakob Meng 1b38b7c500 Properly documented openstacksdk version requirements
With "extends_documentation_fragment: ['openstack.cloud.openstack']"
it is not necessary to list required Python libraries in section
'requirements' of DOCUMENTATION docstring in modules. Ansible will
merge requirements from doc fragments and DOCUMENTATION docstring
which previously resulted in duplicates such as in server module [0]:

* openstacksdk
* openstacksdk >= 0.36, < 0.99.0
* python >= 3.6

When removing the 'requirements' section from server module, then
Ansible will list openstacksdk once only:

* openstacksdk >= 0.36, < 0.99.0
* python >= 3.6

To see what documentation Ansible will produce for server module run:

  ansible-doc --type module openstack.cloud.server

[0] https://docs.ansible.com/ansible/latest/collections/openstack/\
    cloud/server_module.html

Change-Id: I727ed95ee480bb644b5a533f6a9526973677064c
2023-01-16 13:51:01 +01:00

303 lines
9.0 KiB
Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
DOCUMENTATION = r'''
---
module: image_info
short_description: Fetch images from OpenStack image (Glance) service.
author: OpenStack Ansible SIG
description:
- Fetch images from OpenStack image (Glance) service.
options:
name:
description:
- Name or ID of the image
type: str
aliases: ['image']
filters:
description:
- Dict of properties of the images used for query
type: dict
aliases: ['properties']
extends_documentation_fragment:
- openstack.cloud.openstack
'''
EXAMPLES = r'''
- name: Gather previously created image named image1
openstack.cloud.image_info:
cloud: devstack-admin
image: image1
- name: List all images
openstack.cloud.image_info:
- name: Retrieve and filter images
openstack.cloud.image_info:
filters:
is_protected: False
'''
RETURN = r'''
images:
description: List of dictionaries describing matching images.
returned: always
type: list
elements: dict
contains:
id:
description: Unique UUID.
type: str
name:
description: Name given to the image.
type: str
status:
description: Image status.
type: str
architecture:
description: The CPU architecture that must be supported by
the hypervisor.
type: str
created_at:
description: Image created at timestamp.
type: str
container_format:
description: Container format of the image.
type: str
direct_url:
description: URL to access the image file kept in external store.
type: str
min_ram:
description: Min amount of RAM required for this image.
type: int
disk_format:
description: Disk format of the image.
type: str
file:
description: The URL for the virtual machine image file.
type: str
has_auto_disk_config:
description: If root partition on disk is automatically resized
before the instance boots.
type: bool
hash_algo:
description: The algorithm used to compute a secure hash of the
image data.
type: str
hash_value:
description: The hexdigest of the secure hash of the image data
computed using the algorithm whose name is the value of the
os_hash_algo property.
type: str
hw_cpu_cores:
description: Used to pin the virtual CPUs (vCPUs) of instances to
the host's physical CPU cores (pCPUs).
type: str
hw_cpu_policy:
description: The hexdigest of the secure hash of the image data.
type: str
hw_cpu_sockets:
description: Preferred number of sockets to expose to the guest.
type: str
hw_cpu_thread_policy:
description: Defines how hardware CPU threads in a simultaneous
multithreading-based (SMT) architecture be used.
type: str
hw_cpu_threads:
description: The preferred number of threads to expose to the guest.
type: str
hw_disk_bus:
description: Specifies the type of disk controller to attach disk
devices to.
type: str
hw_machine_type:
description: Enables booting an ARM system using the
specified machine type.
type: str
hw_qemu_guest_agent:
description: "A string boolean, which if 'true', QEMU guest agent
will be exposed to the instance."
type: str
hw_rng_model:
description: "Adds a random-number generator device to the image's
instances."
type: str
hw_scsi_model:
description: Enables the use of VirtIO SCSI (virtio-scsi) to
provide block device access for compute instances.
type: str
hw_video_model:
description: The video image driver used.
type: str
hw_video_ram:
description: Maximum RAM for the video image.
type: str
hw_vif_model:
description: Specifies the model of virtual network interface device to
use.
type: str
hw_watchdog_action:
description: Enables a virtual hardware watchdog device that
carries out the specified action if the server hangs.
type: str
hypervisor_type:
description: The hypervisor type.
type: str
instance_type_rxtx_factor:
description: Optional property allows created servers to have a
different bandwidth cap than that defined in the network
they are attached to.
type: str
instance_uuid:
description: For snapshot images, this is the UUID of the server
used to create this image.
type: str
is_hidden:
description: Controls whether an image is displayed in the default
image-list response
type: bool
is_hw_boot_menu_enabled:
description: Enables the BIOS bootmenu.
type: bool
is_hw_vif_multiqueue_enabled:
description: Enables the virtio-net multiqueue feature.
type: bool
kernel_id:
description: The ID of an image stored in the Image service that
should be used as the kernel when booting an AMI-style
image.
type: str
locations:
description: A list of URLs to access the image file in external store.
type: str
metadata:
description: The location metadata.
type: str
needs_config_drive:
description: Specifies whether the image needs a config drive.
type: bool
needs_secure_boot:
description: Whether Secure Boot is needed.
type: bool
os_admin_user:
description: The operating system admin username.
type: str
os_command_line:
description: The kernel command line to be used by libvirt driver.
type: str
os_distro:
description: The common name of the operating system distribution
in lowercase.
type: str
os_require_quiesce:
description: If true, require quiesce on snapshot via
QEMU guest agent.
type: str
os_shutdown_timeout:
description: Time for graceful shutdown.
type: str
os_type:
description: The operating system installed on the image.
type: str
os_version:
description: The operating system version as specified by
the distributor.
type: str
owner_id:
description: The ID of the owner, or project, of the image.
type: str
ramdisk_id:
description: The ID of image stored in the Image service that should
be used as the ramdisk when booting an AMI-style image.
type: str
schema:
description: URL for the schema describing a virtual machine image.
type: str
store:
description: Glance will attempt to store the disk image data in the
backing store indicated by the value of the header.
type: str
updated_at:
description: Image updated at timestamp.
type: str
url:
description: URL to access the image file kept in external store.
type: str
virtual_size:
description: The virtual size of the image.
type: str
vm_mode:
description: The virtual machine mode.
type: str
vmware_adaptertype:
description: The virtual SCSI or IDE controller used by the
hypervisor.
type: str
vmware_ostype:
description: Operating system installed in the image.
type: str
filters:
description: Additional properties associated with the image.
type: dict
min_disk:
description: Min amount of disk space required for this image.
type: int
is_protected:
description: Image protected flag.
type: bool
checksum:
description: Checksum for the image.
type: str
owner:
description: Owner for the image.
type: str
visibility:
description: Indicates who has access to the image.
type: str
size:
description: Size of the image.
type: int
tags:
description: List of tags assigned to the image
type: list
'''
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule
class ImageInfoModule(OpenStackModule):
argument_spec = dict(
filters=dict(type='dict', aliases=['properties']),
name=dict(aliases=['image']),
)
module_kwargs = dict(
supports_check_mode=True
)
def run(self):
kwargs = dict((k, self.params[k])
for k in ['filters']
if self.params[k] is not None)
name_or_id = self.params['name']
if name_or_id is not None:
kwargs['name_or_id'] = name_or_id
self.exit(changed=False,
images=[i.to_dict(computed=False)
for i in self.conn.search_images(**kwargs)])
def main():
module = ImageInfoModule()
module()
if __name__ == '__main__':
main()