diff options
Diffstat (limited to 'lib/ansible/modules/cloud/vmware/_vmware_host_vmhba_facts.py')
-rw-r--r-- | lib/ansible/modules/cloud/vmware/_vmware_host_vmhba_facts.py | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/lib/ansible/modules/cloud/vmware/_vmware_host_vmhba_facts.py b/lib/ansible/modules/cloud/vmware/_vmware_host_vmhba_facts.py deleted file mode 100644 index 84cc19d317..0000000000 --- a/lib/ansible/modules/cloud/vmware/_vmware_host_vmhba_facts.py +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# Copyright: (c) 2018, Christian Kotte <christian.kotte@gmx.de> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - - -ANSIBLE_METADATA = { - 'metadata_version': '1.1', - 'status': ['deprecated'], - 'supported_by': 'community' -} - -DOCUMENTATION = r''' ---- -module: vmware_host_vmhba_facts -deprecated: - removed_in: '2.13' - why: Deprecated in favour of C(_info) module. - alternative: Use M(vmware_host_vmhba_info) instead. -short_description: Gathers facts about vmhbas available on the given ESXi host -description: -- This module can be used to gather facts about vmhbas available on the given ESXi host. -- If C(cluster_name) is provided, then vmhba facts about all hosts from given cluster will be returned. -- If C(esxi_hostname) is provided, then vmhba facts about given host system will be returned. -version_added: '2.8' -author: -- Christian Kotte (@ckotte) -notes: -- Tested on vSphere 6.5 -requirements: -- python >= 2.6 -- PyVmomi -options: - esxi_hostname: - description: - - Name of the host system to work with. - - Vmhba facts about this ESXi server will be returned. - - This parameter is required if C(cluster_name) is not specified. - type: str - cluster_name: - description: - - Name of the cluster from which all host systems will be used. - - Vmhba facts about each ESXi server will be returned for the given cluster. - - This parameter is required if C(esxi_hostname) is not specified. - type: str -extends_documentation_fragment: vmware.documentation -''' - -EXAMPLES = r''' -- name: Gather facts about vmhbas of all ESXi Host in the given Cluster - vmware_host_vmhba_facts: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' - cluster_name: '{{ cluster_name }}' - delegate_to: localhost - register: cluster_host_vmhbas - -- name: Gather facts about vmhbas of an ESXi Host - vmware_host_vmhba_facts: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' - esxi_hostname: '{{ esxi_hostname }}' - delegate_to: localhost - register: host_vmhbas -''' - -RETURN = r''' -hosts_vmhbas_facts: - description: - - dict with hostname as key and dict with vmhbas facts as value. - returned: hosts_vmhbas_facts - type: dict - sample: - { - "10.76.33.204": { - "vmhba_details": [ - { - "adapter": "HPE Smart Array P440ar", - "bus": 3, - "device": "vmhba0", - "driver": "nhpsa", - "location": "0000:03:00.0", - "model": "Smart Array P440ar", - "node_wwn": "50:01:43:80:37:18:9e:a0", - "status": "unknown", - "type": "SAS" - }, - { - "adapter": "QLogic Corp ISP2532-based 8Gb Fibre Channel to PCI Express HBA", - "bus": 5, - "device": "vmhba1", - "driver": "qlnativefc", - "location": "0000:05:00.0", - "model": "ISP2532-based 8Gb Fibre Channel to PCI Express HBA", - "node_wwn": "57:64:96:32:15:90:23:95:82", - "port_type": "unknown", - "port_wwn": "57:64:96:32:15:90:23:95:82", - "speed": 8, - "status": "online", - "type": "Fibre Channel" - }, - { - "adapter": "QLogic Corp ISP2532-based 8Gb Fibre Channel to PCI Express HBA", - "bus": 8, - "device": "vmhba2", - "driver": "qlnativefc", - "location": "0000:08:00.0", - "model": "ISP2532-based 8Gb Fibre Channel to PCI Express HBA", - "node_wwn": "57:64:96:32:15:90:23:95:21", - "port_type": "unknown", - "port_wwn": "57:64:96:32:15:90:23:95:21", - "speed": 8, - "status": "online", - "type": "Fibre Channel" - } - ], - } - } -''' - -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.vmware import vmware_argument_spec, PyVmomi - - -class HostVmhbaMgr(PyVmomi): - """Class to manage vmhba facts""" - def __init__(self, module): - super(HostVmhbaMgr, self).__init__(module) - cluster_name = self.params.get('cluster_name', None) - esxi_host_name = self.params.get('esxi_hostname', None) - self.hosts = self.get_all_host_objs(cluster_name=cluster_name, esxi_host_name=esxi_host_name) - if not self.hosts: - self.module.fail_json(msg="Failed to find host system.") - - def gather_host_vmhba_facts(self): - """Gather vmhba facts""" - hosts_vmhba_facts = {} - for host in self.hosts: - host_vmhba_facts = dict() - host_st_system = host.configManager.storageSystem - if host_st_system: - device_info = host_st_system.storageDeviceInfo - host_vmhba_facts['vmhba_details'] = [] - for hba in device_info.hostBusAdapter: - hba_facts = dict() - if hba.pci: - hba_facts['location'] = hba.pci - for pci_device in host.hardware.pciDevice: - if pci_device.id == hba.pci: - hba_facts['adapter'] = pci_device.vendorName + ' ' + pci_device.deviceName - break - else: - hba_facts['location'] = 'PCI' - hba_facts['device'] = hba.device - # contains type as string in format of 'key-vim.host.FibreChannelHba-vmhba1' - hba_type = hba.key.split(".")[-1].split("-")[0] - if hba_type == 'SerialAttachedHba': - hba_facts['type'] = 'SAS' - elif hba_type == 'FibreChannelHba': - hba_facts['type'] = 'Fibre Channel' - else: - hba_facts['type'] = hba_type - hba_facts['bus'] = hba.bus - hba_facts['status'] = hba.status - hba_facts['model'] = hba.model - hba_facts['driver'] = hba.driver - try: - hba_facts['node_wwn'] = self.format_number(hba.nodeWorldWideName) - except AttributeError: - pass - try: - hba_facts['port_wwn'] = self.format_number(hba.portWorldWideName) - except AttributeError: - pass - try: - hba_facts['port_type'] = hba.portType - except AttributeError: - pass - try: - hba_facts['speed'] = hba.speed - except AttributeError: - pass - host_vmhba_facts['vmhba_details'].append(hba_facts) - - hosts_vmhba_facts[host.name] = host_vmhba_facts - return hosts_vmhba_facts - - @staticmethod - def format_number(number): - """Format number""" - string = str(number) - return ':'.join(a + b for a, b in zip(string[::2], string[1::2])) - - -def main(): - """Main""" - argument_spec = vmware_argument_spec() - argument_spec.update( - cluster_name=dict(type='str', required=False), - esxi_hostname=dict(type='str', required=False), - ) - - module = AnsibleModule( - argument_spec=argument_spec, - required_one_of=[ - ['cluster_name', 'esxi_hostname'], - ], - supports_check_mode=True, - ) - - host_vmhba_mgr = HostVmhbaMgr(module) - module.exit_json(changed=False, hosts_vmhbas_facts=host_vmhba_mgr.gather_host_vmhba_facts()) - - -if __name__ == "__main__": - main() |