
With Ansible OpenStack collection 2.0.0 we break backward compatibility to older releases, mainly due to breaking changes coming with openstacksdk >=0.99.0. For example, results will change for most Ansible modules in this collection. We take this opportunity to drop the symbolic links with prefix os_ in plugins/modules and the plugin routing in meta/runtime.yml. This means users have to call modules of the Ansible OpenStack collection using their FQCN (Fully Qualified Collection Name) such as openstack.cloud.server. Short module names such as os_server will now raise an Ansible error. This also decreases the likelihood of incompatible Ansible code going undetected. Symbolic links were introduced to keep our collection backward compatible to user code which was written for old(er) Ansible releases which did not have support for collections and where OpenStack modules where named with a prefix os_ such as os_server which is nowadays known and stored as openstack.cloud.server. In Ansible aka ansible-base 2.10, a internal routing table lib/ansible/config/ansible_builtin_runtime.yml [1] was introduced which Ansible uses to resolve deprecated module names missing the FQCN (Fully Qualified Collection Name). Additionally, collections can define their own plugin routing table in meta/runtime.yml [2] which we did. In ansible-base 2.10 and ansible-core 2.11 or later, if a user uses a short module name and the collections keyword is not used, Ansible will first look in the internal routing table, get an FQCN, and then looks in the collection for that FQCN. If there is another routing entry for that new name in that collection's meta/runtime.yml, Ansible will continue with that redirect. If it does not find another redirect, Ansible will look for the plugin itself, so it will not find a redirect in the collection before looking at its internal redirects. Except if the user uses a FQCN, then it looks directly in that collection. Ansible 2.9 and 2.8 do not have any notion of these redirects with a plugin routing table, backward compatibility with deprecated os_* module names is solely achieved with symbolic links. Ansible releases older than 2.11 are EOL [3], so usage of os_* symlinks should reduce soon. [1] https://github.com/ansible/ansible/blob/devel/lib/ansible/config/ansible_builtin_runtime.yml [2] https://github.com/openstack/ansible-collections-openstack/blob/master/meta/runtime.yml [3] https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html Change-Id: I28cc05c95419b72552899c926721eb87fb6f0868
403 lines
13 KiB
Python
403 lines
13 KiB
Python
#!/usr/bin/python
|
|
|
|
# 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 = '''
|
|
---
|
|
module: image_info
|
|
short_description: Retrieve information about an image within OpenStack.
|
|
author: OpenStack Ansible SIG
|
|
description:
|
|
- Retrieve information about a image image from OpenStack.
|
|
options:
|
|
image:
|
|
description:
|
|
- Name or ID of the image
|
|
required: false
|
|
type: str
|
|
filters:
|
|
description:
|
|
- Dict of properties of the images used for query
|
|
type: dict
|
|
required: false
|
|
aliases: ['properties']
|
|
requirements:
|
|
- "python >= 3.6"
|
|
- "openstacksdk"
|
|
|
|
extends_documentation_fragment:
|
|
- openstack.cloud.openstack
|
|
'''
|
|
|
|
EXAMPLES = '''
|
|
- name: Gather information about a previously created image named image1
|
|
openstack.cloud.image_info:
|
|
auth:
|
|
auth_url: https://identity.example.com
|
|
username: user
|
|
password: password
|
|
project_name: someproject
|
|
image: image1
|
|
register: result
|
|
|
|
- name: Show openstack information
|
|
debug:
|
|
msg: "{{ result.image }}"
|
|
|
|
# Show all available Openstack images
|
|
- name: Retrieve all available Openstack images
|
|
openstack.cloud.image_info:
|
|
register: result
|
|
|
|
- name: Show images
|
|
debug:
|
|
msg: "{{ result.image }}"
|
|
|
|
# Show images matching requested properties
|
|
- name: Retrieve images having properties with desired values
|
|
openstack.cloud.image_facts:
|
|
filters:
|
|
some_property: some_value
|
|
OtherProp: OtherVal
|
|
|
|
- name: Show images
|
|
debug:
|
|
msg: "{{ result.image }}"
|
|
'''
|
|
|
|
RETURN = '''
|
|
images:
|
|
description: has all the openstack information about the image
|
|
returned: always, but can be null
|
|
type: complex
|
|
contains:
|
|
id:
|
|
description: Unique UUID.
|
|
returned: success
|
|
type: str
|
|
name:
|
|
description: Name given to the image.
|
|
returned: success
|
|
type: str
|
|
status:
|
|
description: Image status.
|
|
returned: success
|
|
type: str
|
|
architecture:
|
|
description: >
|
|
The CPU architecture that must be supported by
|
|
the hypervisor.
|
|
returned: success
|
|
type: str
|
|
created_at:
|
|
description: Image created at timestamp.
|
|
returned: success
|
|
type: str
|
|
container_format:
|
|
description: Container format of the image.
|
|
returned: success
|
|
type: str
|
|
direct_url:
|
|
description: URL to access the image file kept in external store.
|
|
returned: success
|
|
type: str
|
|
min_ram:
|
|
description: Min amount of RAM required for this image.
|
|
returned: success
|
|
type: int
|
|
disk_format:
|
|
description: Disk format of the image.
|
|
returned: success
|
|
type: str
|
|
file:
|
|
description: The URL for the virtual machine image file.
|
|
returned: success
|
|
type: str
|
|
has_auto_disk_config:
|
|
description: >
|
|
If root partition on disk is automatically resized
|
|
before the instance boots.
|
|
returned: success
|
|
type: bool
|
|
hash_algo:
|
|
description: >
|
|
The algorithm used to compute a secure hash of the
|
|
image data.
|
|
returned: success
|
|
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.
|
|
returned: success
|
|
type: str
|
|
hw_cpu_cores:
|
|
description: >
|
|
Used to pin the virtual CPUs (vCPUs) of instances to
|
|
the host's physical CPU cores (pCPUs).
|
|
returned: success
|
|
type: str
|
|
hw_cpu_policy:
|
|
description: The hexdigest of the secure hash of the image data.
|
|
returned: success
|
|
type: str
|
|
hw_cpu_sockets:
|
|
description: Preferred number of sockets to expose to the guest.
|
|
returned: success
|
|
type: str
|
|
hw_cpu_thread_policy:
|
|
description: >
|
|
Defines how hardware CPU threads in a simultaneous
|
|
multithreading-based (SMT) architecture be used.
|
|
returned: success
|
|
type: str
|
|
hw_cpu_threads:
|
|
description: >
|
|
The preferred number of threads to expose to the guest.
|
|
returned: success
|
|
type: str
|
|
hw_disk_bus:
|
|
description: >
|
|
Specifies the type of disk controller to attach disk
|
|
devices to.
|
|
returned: success
|
|
type: str
|
|
hw_machine_type:
|
|
description: >
|
|
Enables booting an ARM system using the
|
|
specified machine type.
|
|
returned: success
|
|
type: str
|
|
hw_qemu_guest_agent:
|
|
description: >
|
|
A string boolean, which if "true", QEMU guest agent
|
|
will be exposed to the instance.
|
|
returned: success
|
|
type: str
|
|
hw_rng_model:
|
|
description: Adds a random-number generator device to the image's instances.
|
|
returned: success
|
|
type: str
|
|
hw_scsi_model:
|
|
description: >
|
|
Enables the use of VirtIO SCSI (virtio-scsi) to
|
|
provide block device access for compute instances.
|
|
returned: success
|
|
type: str
|
|
hw_video_model:
|
|
description: The video image driver used.
|
|
returned: success
|
|
type: str
|
|
hw_video_ram:
|
|
description: Maximum RAM for the video image.
|
|
returned: success
|
|
type: str
|
|
hw_vif_model:
|
|
description: Specifies the model of virtual network interface device to use.
|
|
returned: success
|
|
type: str
|
|
hw_watchdog_action:
|
|
description: >
|
|
Enables a virtual hardware watchdog device that
|
|
carries out the specified action if the server hangs.
|
|
returned: success
|
|
type: str
|
|
hypervisor_type:
|
|
description: The hypervisor type.
|
|
returned: success
|
|
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.
|
|
returned: success
|
|
type: str
|
|
instance_uuid:
|
|
description: >
|
|
For snapshot images, this is the UUID of the server
|
|
used to create this image.
|
|
returned: success
|
|
type: str
|
|
is_hidden:
|
|
description: Controls whether an image is displayed in the default image-list response
|
|
returned: success
|
|
type: bool
|
|
is_hw_boot_menu_enabled:
|
|
description: Enables the BIOS bootmenu.
|
|
returned: success
|
|
type: bool
|
|
is_hw_vif_multiqueue_enabled:
|
|
description: >
|
|
Enables the virtio-net multiqueue
|
|
feature.
|
|
returned: success
|
|
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.
|
|
returned: success
|
|
type: str
|
|
locations:
|
|
description: A list of URLs to access the image file in external store.
|
|
returned: success
|
|
type: str
|
|
metadata:
|
|
description: The location metadata.
|
|
returned: success
|
|
type: str
|
|
needs_config_drive:
|
|
description: Specifies whether the image needs a config drive.
|
|
returned: success
|
|
type: bool
|
|
needs_secure_boot:
|
|
description: Whether Secure Boot is needed.
|
|
returned: success
|
|
type: bool
|
|
os_admin_user:
|
|
description: The operating system admin username.
|
|
returned: success
|
|
type: str
|
|
os_command_line:
|
|
description: The kernel command line to be used by libvirt driver.
|
|
returned: success
|
|
type: str
|
|
os_distro:
|
|
description: >
|
|
The common name of the operating system distribution
|
|
in lowercase.
|
|
returned: success
|
|
type: str
|
|
os_require_quiesce:
|
|
description: >
|
|
If true, require quiesce on snapshot via
|
|
QEMU guest agent.
|
|
returned: success
|
|
type: str
|
|
os_shutdown_timeout:
|
|
description: Time for graceful shutdown.
|
|
returned: success
|
|
type: str
|
|
os_type:
|
|
description: The operating system installed on the image.
|
|
returned: success
|
|
type: str
|
|
os_version:
|
|
description: >
|
|
The operating system version as specified by
|
|
the distributor.
|
|
returned: success
|
|
type: str
|
|
owner_id:
|
|
description: The ID of the owner, or project, of the image.
|
|
returned: success
|
|
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.
|
|
returned: success
|
|
type: str
|
|
schema:
|
|
description: URL for the schema describing a virtual machine image.
|
|
returned: success
|
|
type: str
|
|
store:
|
|
description: >
|
|
Glance will attempt to store the disk
|
|
image data in the backing store indicated by the value of the
|
|
header.
|
|
returned: success
|
|
type: str
|
|
updated_at:
|
|
description: Image updated at timestamp.
|
|
returned: success
|
|
type: str
|
|
url:
|
|
description: URL to access the image file kept in external store.
|
|
returned: success
|
|
type: str
|
|
virtual_size:
|
|
description: The virtual size of the image.
|
|
returned: success
|
|
type: str
|
|
vm_mode:
|
|
description: The virtual machine mode.
|
|
returned: success
|
|
type: str
|
|
vmware_adaptertype:
|
|
description: >
|
|
The virtual SCSI or IDE controller used by the
|
|
hypervisor.
|
|
returned: success
|
|
type: str
|
|
vmware_ostype:
|
|
description: Operating system installed in the image.
|
|
returned: success
|
|
type: str
|
|
filters:
|
|
description: Additional properties associated with the image.
|
|
returned: success
|
|
type: dict
|
|
min_disk:
|
|
description: Min amount of disk space required for this image.
|
|
returned: success
|
|
type: int
|
|
is_protected:
|
|
description: Image protected flag.
|
|
returned: success
|
|
type: bool
|
|
checksum:
|
|
description: Checksum for the image.
|
|
returned: success
|
|
type: str
|
|
owner:
|
|
description: Owner for the image.
|
|
returned: success
|
|
type: str
|
|
visibility:
|
|
description: Indicates who has access to the image.
|
|
returned: success
|
|
type: str
|
|
size:
|
|
description: Size of the image.
|
|
returned: success
|
|
type: int
|
|
tags:
|
|
description: List of tags assigned to the image
|
|
returned: success
|
|
type: list
|
|
'''
|
|
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule
|
|
|
|
|
|
class ImageInfoModule(OpenStackModule):
|
|
|
|
argument_spec = dict(
|
|
image=dict(type='str', required=False),
|
|
filters=dict(type='dict', required=False, aliases=['properties']),
|
|
)
|
|
module_kwargs = dict(
|
|
supports_check_mode=True
|
|
)
|
|
|
|
def run(self):
|
|
args = {
|
|
'name_or_id': self.params['image'],
|
|
'filters': self.params['filters'],
|
|
}
|
|
args = {k: v for k, v in args.items() if v is not None}
|
|
images = [image.to_dict(computed=False) for image in
|
|
self.conn.search_images(**args)]
|
|
self.exit(changed=False, images=images)
|
|
|
|
|
|
def main():
|
|
module = ImageInfoModule()
|
|
module()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|