VMware: new module : vmware_about_facts (#43146)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
551501f326
commit
cc3dadf16e
3 changed files with 215 additions and 0 deletions
124
lib/ansible/modules/cloud/vmware/vmware_about_facts.py
Normal file
124
lib/ansible/modules/cloud/vmware/vmware_about_facts.py
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
#!/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_about_facts
|
||||||
|
short_description: Provides information about VMware server to which user is connecting to
|
||||||
|
description:
|
||||||
|
- This module can be used to gather information about VMware server to which user is trying to connect.
|
||||||
|
version_added: 2.7
|
||||||
|
author:
|
||||||
|
- Abhijeet Kasurde (@Akasurde)
|
||||||
|
notes:
|
||||||
|
- Tested on vSphere 6.5
|
||||||
|
requirements:
|
||||||
|
- python >= 2.6
|
||||||
|
- PyVmomi
|
||||||
|
extends_documentation_fragment: vmware.documentation
|
||||||
|
'''
|
||||||
|
|
||||||
|
EXAMPLES = r'''
|
||||||
|
- name: Provide information about vCenter
|
||||||
|
vmware_about_facts:
|
||||||
|
hostname: '{{ vcenter_hostname }}'
|
||||||
|
username: '{{ vcenter_username }}'
|
||||||
|
password: '{{ vcenter_password }}'
|
||||||
|
register: vcenter_about_info
|
||||||
|
|
||||||
|
- name: Provide information about a standalone ESXi server
|
||||||
|
vmware_about_facts:
|
||||||
|
hostname: '{{ esxi_hostname }}'
|
||||||
|
username: '{{ esxi_username }}'
|
||||||
|
password: '{{ esxu_password }}'
|
||||||
|
register: esxi_about_info
|
||||||
|
'''
|
||||||
|
|
||||||
|
RETURN = r'''
|
||||||
|
about_facts:
|
||||||
|
description:
|
||||||
|
- dict about VMware server
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample:
|
||||||
|
{
|
||||||
|
"api_type": "VirtualCenter",
|
||||||
|
"api_version": "6.5",
|
||||||
|
"build": "5973321",
|
||||||
|
"instance_uuid": "dbed6e0c-bd88-4ef6-b594-21283e1c677f",
|
||||||
|
"license_product_name": "VMware VirtualCenter Server",
|
||||||
|
"license_product_version": "6.0",
|
||||||
|
"locale_build": "000",
|
||||||
|
"locale_version": "INTL",
|
||||||
|
"os_type": "darwin-amd64",
|
||||||
|
"product_full_name": "VMware vCenter Server 6.5.0 build-5973321",
|
||||||
|
"product_line_id": "vpx",
|
||||||
|
"product_name": "VMware vCenter Server (govmomi simulator)",
|
||||||
|
"vendor": "VMware, Inc.",
|
||||||
|
"version": "6.5.0"
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
from ansible.module_utils.vmware import vmware_argument_spec, PyVmomi
|
||||||
|
|
||||||
|
|
||||||
|
class VmwareAboutManager(PyVmomi):
|
||||||
|
def __init__(self, module):
|
||||||
|
super(VmwareAboutManager, self).__init__(module)
|
||||||
|
|
||||||
|
def gather_about_facts(self):
|
||||||
|
|
||||||
|
if not self.content:
|
||||||
|
self.module.exit_json(changed=False, about_facts=dict())
|
||||||
|
|
||||||
|
about = self.content.about
|
||||||
|
|
||||||
|
self.module.exit_json(
|
||||||
|
changed=False,
|
||||||
|
about_facts=dict(
|
||||||
|
product_name=about.name,
|
||||||
|
product_full_name=about.fullName,
|
||||||
|
vendor=about.vendor,
|
||||||
|
version=about.version,
|
||||||
|
build=about.build,
|
||||||
|
locale_version=about.localeVersion,
|
||||||
|
locale_build=about.localeBuild,
|
||||||
|
os_type=about.osType,
|
||||||
|
product_line_id=about.productLineId,
|
||||||
|
api_type=about.apiType,
|
||||||
|
api_version=about.apiVersion,
|
||||||
|
instance_uuid=about.instanceUuid,
|
||||||
|
license_product_name=about.licenseProductName,
|
||||||
|
license_product_version=about.licenseProductVersion,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
argument_spec = vmware_argument_spec()
|
||||||
|
|
||||||
|
module = AnsibleModule(
|
||||||
|
argument_spec=argument_spec,
|
||||||
|
supports_check_mode=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
vmware_about_facts_mgr = VmwareAboutManager(module)
|
||||||
|
vmware_about_facts_mgr.gather_about_facts()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
2
test/integration/targets/vmware_about_facts/aliases
Normal file
2
test/integration/targets/vmware_about_facts/aliases
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
shippable/vcenter/group1
|
||||||
|
cloud/vcenter
|
89
test/integration/targets/vmware_about_facts/tasks/main.yml
Normal file
89
test/integration/targets/vmware_about_facts/tasks/main.yml
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
# Test code for the vmware_about_facts module.
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
- name: store the vcenter container ip
|
||||||
|
set_fact:
|
||||||
|
vcsim: "{{ lookup('env', 'vcenter_host') }}"
|
||||||
|
|
||||||
|
- debug: var=vcsim
|
||||||
|
|
||||||
|
- name: Wait for Flask controller to come up online
|
||||||
|
wait_for:
|
||||||
|
host: "{{ vcsim }}"
|
||||||
|
port: 5000
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: kill vcsim
|
||||||
|
uri:
|
||||||
|
url: http://{{ vcsim }}:5000/killall
|
||||||
|
|
||||||
|
- name: start vcsim
|
||||||
|
uri:
|
||||||
|
url: http://{{ vcsim }}:5000/spawn?cluster=2
|
||||||
|
register: vcsim_instance
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
var: vcsim_instance
|
||||||
|
|
||||||
|
- name: Wait for vcsim server to come up online
|
||||||
|
wait_for:
|
||||||
|
host: "{{ vcsim }}"
|
||||||
|
port: 443
|
||||||
|
state: started
|
||||||
|
|
||||||
|
|
||||||
|
- name: Get Details about VMware vCenter Server
|
||||||
|
vmware_about_facts:
|
||||||
|
hostname: "{{ vcsim }}"
|
||||||
|
username: "{{ vcsim_instance.json.username }}"
|
||||||
|
password: "{{ vcsim_instance.json.password }}"
|
||||||
|
validate_certs: no
|
||||||
|
register: about
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- about.about_facts["{{ item }}"] is defined
|
||||||
|
with_items:
|
||||||
|
- api_type
|
||||||
|
- api_version
|
||||||
|
- build
|
||||||
|
- instance_uuid
|
||||||
|
- license_product_name
|
||||||
|
- license_product_version
|
||||||
|
- locale_build
|
||||||
|
- locale_version
|
||||||
|
- os_type
|
||||||
|
- product_full_name
|
||||||
|
- product_line_id
|
||||||
|
- product_name
|
||||||
|
- vendor
|
||||||
|
- version
|
||||||
|
|
||||||
|
- name: Get Details about VMware vCenter Server in check mode
|
||||||
|
vmware_about_facts:
|
||||||
|
hostname: "{{ vcsim }}"
|
||||||
|
username: "{{ vcsim_instance.json.username }}"
|
||||||
|
password: "{{ vcsim_instance.json.password }}"
|
||||||
|
validate_certs: no
|
||||||
|
register: about
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- about.about_facts["{{ item }}"] is defined
|
||||||
|
with_items:
|
||||||
|
- api_type
|
||||||
|
- api_version
|
||||||
|
- build
|
||||||
|
- instance_uuid
|
||||||
|
- license_product_name
|
||||||
|
- license_product_version
|
||||||
|
- locale_build
|
||||||
|
- locale_version
|
||||||
|
- os_type
|
||||||
|
- product_full_name
|
||||||
|
- product_line_id
|
||||||
|
- product_name
|
||||||
|
- vendor
|
||||||
|
- version
|
Loading…
Reference in a new issue