diff options
author | pratikgadiya12 <pratikgadiya12@users.noreply.github.com> | 2019-08-27 00:15:34 +0530 |
---|---|---|
committer | Gonéri Le Bouder <goneri@lebouder.net> | 2019-08-26 14:45:34 -0400 |
commit | 8ee7d9f5981744a3c8d04cd58849a1bc49d96016 (patch) | |
tree | 294ed2789a21606ad47bb30cbfcde89598361b16 /lib/ansible/modules/cloud/vmware/vmware_host_package_info.py | |
parent | 47c2ff4c26c93578f4a7f1581624852592a7c31c (diff) | |
download | ansible-8ee7d9f5981744a3c8d04cd58849a1bc49d96016.tar.gz |
VMWare - Rename _facts to _info (#57474)
Deprecate vmware's _facts modules and add new modules.
Fixes: #57278
Diffstat (limited to 'lib/ansible/modules/cloud/vmware/vmware_host_package_info.py')
-rw-r--r-- | lib/ansible/modules/cloud/vmware/vmware_host_package_info.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/lib/ansible/modules/cloud/vmware/vmware_host_package_info.py b/lib/ansible/modules/cloud/vmware/vmware_host_package_info.py new file mode 100644 index 0000000000..b796b5d64e --- /dev/null +++ b/lib/ansible/modules/cloud/vmware/vmware_host_package_info.py @@ -0,0 +1,128 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Copyright: (c) 2018, Abhijeet Kasurde <akasurde@redhat.com> +# 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': ['preview'], + 'supported_by': 'community' +} + +DOCUMENTATION = r''' +--- +module: vmware_host_package_info +short_description: Gathers info about available packages on an ESXi host +description: +- This module can be used to gather information about available packages and their status on an ESXi host. +version_added: '2.9' +author: +- Abhijeet Kasurde (@Akasurde) +notes: +- Tested on vSphere 6.5 +requirements: +- python >= 2.6 +- PyVmomi +options: + cluster_name: + description: + - Name of the cluster. + - Package information about each ESXi server will be returned for given cluster. + - If C(esxi_hostname) is not given, this parameter is required. + type: str + esxi_hostname: + description: + - ESXi hostname. + - Package information about this ESXi server will be returned. + - If C(cluster_name) is not given, this parameter is required. + type: str +extends_documentation_fragment: vmware.documentation +''' + +EXAMPLES = r''' +- name: Gather info about all ESXi Host in given Cluster + vmware_host_package_info: + hostname: '{{ vcenter_hostname }}' + username: '{{ vcenter_username }}' + password: '{{ vcenter_password }}' + cluster_name: cluster_name + delegate_to: localhost + register: cluster_host_packages + +- name: Gather info about ESXi Host + vmware_host_package_info: + hostname: '{{ vcenter_hostname }}' + username: '{{ vcenter_username }}' + password: '{{ vcenter_password }}' + esxi_hostname: '{{ esxi_hostname }}' + delegate_to: localhost + register: host_packages +''' + +RETURN = r''' +hosts_package_info: + description: + - dict with hostname as key and dict with package information as value + returned: hosts_package_info + type: dict + sample: { "hosts_package_info": { "localhost.localdomain": []}} +''' + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.vmware import vmware_argument_spec, PyVmomi + + +class VmwarePackageManager(PyVmomi): + def __init__(self, module): + super(VmwarePackageManager, 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) + + def gather_package_info(self): + hosts_info = {} + for host in self.hosts: + host_package_info = [] + host_pkg_mgr = host.configManager.imageConfigManager + if host_pkg_mgr: + pkgs = host_pkg_mgr.FetchSoftwarePackages() + for pkg in pkgs: + host_package_info.append(dict( + name=pkg.name, + version=pkg.version, + vendor=pkg.vendor, + summary=pkg.summary, + description=pkg.description, + acceptance_level=pkg.acceptanceLevel, + maintenance_mode_required=pkg.maintenanceModeRequired, + creation_date=pkg.creationDate, + )) + hosts_info[host.name] = host_package_info + return hosts_info + + +def 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, + ) + + vmware_host_package_config = VmwarePackageManager(module) + module.exit_json(changed=False, hosts_package_info=vmware_host_package_config.gather_package_info()) + + +if __name__ == "__main__": + main() |