1b38b7c500
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
294 lines
9.4 KiB
Python
294 lines
9.4 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright (c) 2016 IBM
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
DOCUMENTATION = '''
|
|
module: port_info
|
|
short_description: Retrieve information about ports within OpenStack.
|
|
author: OpenStack Ansible SIG
|
|
description:
|
|
- Retrieve information about ports from OpenStack.
|
|
options:
|
|
name:
|
|
description:
|
|
- Unique name or ID of a port.
|
|
type: str
|
|
aliases: ['port']
|
|
filters:
|
|
description:
|
|
- A dictionary of meta data to use for further filtering. Elements
|
|
of this dictionary will be matched passed to the API as query
|
|
parameter filters.
|
|
type: dict
|
|
extends_documentation_fragment:
|
|
- openstack.cloud.openstack
|
|
'''
|
|
|
|
EXAMPLES = '''
|
|
# Gather information about all ports
|
|
- openstack.cloud.port_info:
|
|
cloud: mycloud
|
|
register: result
|
|
|
|
- debug:
|
|
msg: "{{ result.ports}}"
|
|
|
|
# Gather information about a single port
|
|
- openstack.cloud.port_info:
|
|
cloud: mycloud
|
|
name: 6140317d-e676-31e1-8a4a-b1913814a471
|
|
|
|
# Gather information about all ports that have device_id set to a specific
|
|
# value and with a status of ACTIVE.
|
|
- openstack.cloud.port_info:
|
|
cloud: mycloud
|
|
filters:
|
|
device_id: 1038a010-3a37-4a9d-82ea-652f1da36597
|
|
status: ACTIVE
|
|
'''
|
|
|
|
RETURN = '''
|
|
ports:
|
|
description: |
|
|
List of port dictionaries. A subset of the dictionary keys listed below
|
|
may be returned, depending on your cloud provider.
|
|
returned: always
|
|
type: list
|
|
elements: dict
|
|
contains:
|
|
allowed_address_pairs:
|
|
description: Allowed address pairs.
|
|
returned: success
|
|
type: list
|
|
sample: []
|
|
binding_host_id:
|
|
description: |
|
|
The ID of the host where the port is allocated. In some cases,
|
|
different implementations can run on different hosts.
|
|
returned: success
|
|
type: str
|
|
sample: "b4bd682d-234a-4091-aa5b-4b025a6a7759"
|
|
binding_profile:
|
|
description: |
|
|
A dictionary the enables the application running on the
|
|
specified host to pass and receive vif port-specific
|
|
information to the plug-in.
|
|
returned: success
|
|
type: dict
|
|
sample: {}
|
|
binding_vif_details:
|
|
description: |
|
|
A dictionary that enables the application to pass
|
|
information about functions that the Networking API provides.
|
|
returned: success
|
|
type: dict
|
|
binding_vif_type:
|
|
description: The VIF type for the port.
|
|
returned: success
|
|
type: dict
|
|
binding_vnic_type:
|
|
description: |
|
|
The virtual network interface card (vNIC) type that is
|
|
bound to the neutron port.
|
|
returned: success
|
|
type: str
|
|
sample: "normal"
|
|
created_at:
|
|
description: Timestamp when the port was created.
|
|
returned: success
|
|
type: str
|
|
sample: "2022-02-03T13:28:25Z"
|
|
data_plane_status:
|
|
description: Status of the underlying data plane of a port.
|
|
returned: success
|
|
type: str
|
|
description:
|
|
description: The port description.
|
|
returned: success
|
|
type: str
|
|
device_id:
|
|
description: Device ID of this port.
|
|
returned: success
|
|
type: str
|
|
sample: "b4bd682d-234a-4091-aa5b-4b025a6a7759"
|
|
device_owner:
|
|
description: Device owner of this port, e.g. C(network:dhcp).
|
|
returned: success
|
|
type: str
|
|
sample: "network:router_interface"
|
|
device_profile:
|
|
description: |
|
|
Device profile of this port, refers to Cyborg device-profiles:
|
|
https://docs.openstack.org/api-ref/accelerator/v2/index.html#
|
|
device-profiles.
|
|
returned: success
|
|
type: str
|
|
dns_assignment:
|
|
description: DNS assignment for the port.
|
|
returned: success
|
|
type: list
|
|
dns_domain:
|
|
description: DNS domain assigned to the port.
|
|
returned: success
|
|
type: str
|
|
dns_name:
|
|
description: DNS name for the port.
|
|
returned: success
|
|
type: str
|
|
extra_dhcp_opts:
|
|
description: |
|
|
A set of zero or more extra DHCP option pairs.
|
|
An option pair consists of an option value and name.
|
|
returned: success
|
|
type: list
|
|
sample: []
|
|
fixed_ips:
|
|
description: |
|
|
IP addresses for the port. Includes the IP address and subnet
|
|
ID.
|
|
returned: success
|
|
type: list
|
|
id:
|
|
description: The port ID.
|
|
returned: success
|
|
type: str
|
|
sample: "3ec25c97-7052-4ab8-a8ba-92faf84148de"
|
|
ip_allocation:
|
|
description: |
|
|
The ip_allocation indicates when ports use deferred,
|
|
immediate or no IP allocation.
|
|
returned: success
|
|
type: str
|
|
is_admin_state_up:
|
|
description: |
|
|
The administrative state of the port, which is up C(True) or
|
|
down C(False).
|
|
returned: success
|
|
type: bool
|
|
sample: true
|
|
is_port_security_enabled:
|
|
description: |
|
|
The port security status, which is enabled C(True) or disabled
|
|
C(False).
|
|
returned: success
|
|
type: bool
|
|
sample: false
|
|
mac_address:
|
|
description: The MAC address of an allowed address pair.
|
|
returned: success
|
|
type: str
|
|
sample: "00:00:5E:00:53:42"
|
|
name:
|
|
description: The port name.
|
|
returned: success
|
|
type: str
|
|
sample: "port_name"
|
|
network_id:
|
|
description: The ID of the attached network.
|
|
returned: success
|
|
type: str
|
|
sample: "dd1ede4f-3952-4131-aab6-3b8902268c7d"
|
|
numa_affinity_policy:
|
|
description: |
|
|
The NUMA affinity policy defined for this port.
|
|
returned: success
|
|
type: str
|
|
sample: "required"
|
|
project_id:
|
|
description: The ID of the project who owns the network.
|
|
returned: success
|
|
type: str
|
|
sample: "aa1ede4f-3952-4131-aab6-3b8902268c7d"
|
|
propagate_uplink_status:
|
|
description: Whether to propagate uplink status of the port.
|
|
returned: success
|
|
type: bool
|
|
sample: false
|
|
qos_network_policy_id:
|
|
description: |
|
|
The ID of the QoS policy attached to the network where the
|
|
port is bound.
|
|
returned: success
|
|
type: str
|
|
sample: "1e4f3958-c0c9-4dec-82fa-ed2dc1c5cb34"
|
|
qos_policy_id:
|
|
description: The ID of the QoS policy attached to the port.
|
|
returned: success
|
|
type: str
|
|
sample: "b20bb47f-5d6d-45a6-8fe7-2c1b44f0db73"
|
|
resource_request:
|
|
description: |
|
|
The port-resource-request exposes Placement resources
|
|
(i.e.: minimum-bandwidth) and traits (i.e.: vnic-type, physnet)
|
|
requested by a port to Nova and Placement.
|
|
returned: success
|
|
type: str
|
|
revision_number:
|
|
description: The revision number of the resource.
|
|
returned: success
|
|
type: int
|
|
sample: 0
|
|
security_group_ids:
|
|
description: The IDs of any attached security groups.
|
|
returned: success
|
|
type: list
|
|
status:
|
|
description: The port status. Value is C(ACTIVE) or C(DOWN).
|
|
returned: success
|
|
type: str
|
|
sample: "ACTIVE"
|
|
tags:
|
|
description: The list of tags on the resource.
|
|
returned: success
|
|
type: list
|
|
sample: []
|
|
tenant_id:
|
|
description: Same as I(project_id). Deprecated.
|
|
returned: success
|
|
type: str
|
|
sample: "51fce036d7984ba6af4f6c849f65ef00"
|
|
trunk_details:
|
|
description: |
|
|
The trunk referring to this parent port and its subports.
|
|
Present for trunk parent ports if C(trunk-details) extension
|
|
is loaded.
|
|
returned: success
|
|
type: dict
|
|
updated_at:
|
|
description: Timestamp when the port was last updated.
|
|
returned: success
|
|
type: str
|
|
sample: "2022-02-03T13:28:25Z"
|
|
'''
|
|
|
|
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule
|
|
|
|
|
|
class PortInfoModule(OpenStackModule):
|
|
argument_spec = dict(
|
|
name=dict(aliases=['port']),
|
|
filters=dict(type='dict'),
|
|
)
|
|
module_kwargs = dict(
|
|
supports_check_mode=True
|
|
)
|
|
|
|
def run(self):
|
|
ports = [p.to_dict(computed=False) for p in
|
|
self.conn.search_ports(
|
|
name_or_id=self.params['name'],
|
|
filters=self.params['filters'])]
|
|
|
|
self.exit_json(changed=False, ports=ports)
|
|
|
|
|
|
def main():
|
|
module = PortInfoModule()
|
|
module()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|