2020-03-09 09:11:07 +00:00
#!/usr/bin/python
2021-08-08 08:40:22 +00:00
# -*- coding: utf-8 -*-
2020-03-09 09:11:07 +00:00
2022-08-05 10:28:29 +00:00
# Copyright (c) 2016-2017, Hewlett Packard Enterprise Development LP
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
2020-03-09 09:11:07 +00:00
from __future__ import ( absolute_import , division , print_function )
__metaclass__ = type
2024-12-25 21:56:20 +00:00
DOCUMENTATION = r """
2020-03-09 09:11:07 +00:00
module : oneview_enclosure_info
short_description : Retrieve information about one or more Enclosures
description :
2024-12-25 21:56:20 +00:00
- Retrieve information about one or more of the Enclosures from OneView .
2020-03-09 09:11:07 +00:00
requirements :
2024-12-25 21:56:20 +00:00
- hpOneView > = 2.0 .1
2020-03-09 09:11:07 +00:00
author :
2024-12-25 21:56:20 +00:00
- Felipe Bulsoni ( @fgbulsoni )
- Thiago Miotto ( @tmiotto )
- Adriane Cardozo ( @adriane - cardozo )
2023-02-20 16:49:31 +00:00
attributes :
2024-12-25 21:56:20 +00:00
check_mode :
version_added : 3.3 .0
# This was backported to 2.5.4 and 1.3.11 as well, since this was a bugfix
2020-03-09 09:11:07 +00:00
options :
2024-12-25 21:56:20 +00:00
name :
description :
- Enclosure name .
type : str
options :
description :
- ' List with options to gather additional information about an Enclosure and related resources. Options allowed: V(script), V(environmentalConfiguration),
and V ( utilization ) . For the option V ( utilization ) , you can provide specific parameters . '
type : list
elements : raw
2020-03-09 09:11:07 +00:00
extends_documentation_fragment :
2022-11-06 20:16:43 +00:00
- community . general . oneview
- community . general . oneview . factsparams
- community . general . attributes
- community . general . attributes . info_module
2024-12-25 21:56:20 +00:00
"""
2020-03-09 09:11:07 +00:00
2024-12-25 21:56:20 +00:00
EXAMPLES = r """
2020-03-09 09:11:07 +00:00
- name : Gather information about all Enclosures
2020-07-13 19:50:31 +00:00
community . general . oneview_enclosure_info :
2020-03-09 09:11:07 +00:00
hostname : 172.16 .101 .48
username : administrator
password : my_password
api_version : 500
no_log : true
delegate_to : localhost
register : result
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosures
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosures }} "
- name : Gather paginated , filtered and sorted information about Enclosures
2020-07-13 19:50:31 +00:00
community . general . oneview_enclosure_info :
2020-03-09 09:11:07 +00:00
params :
start : 0
count : 3
sort : name : descending
filter : status = OK
hostname : 172.16 .101 .48
username : administrator
password : my_password
api_version : 500
no_log : true
delegate_to : localhost
register : result
2021-10-18 11:53:14 +00:00
2023-10-25 21:01:32 +00:00
- name : Print fetched information about paginated , filtered and sorted list of Enclosures
2021-10-18 11:53:14 +00:00
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosures }} "
- name : Gather information about an Enclosure by name
2020-07-13 19:50:31 +00:00
community . general . oneview_enclosure_info :
2020-03-09 09:11:07 +00:00
name : Enclosure - Name
hostname : 172.16 .101 .48
username : administrator
password : my_password
api_version : 500
no_log : true
delegate_to : localhost
register : result
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure found by name
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosures }} "
- name : Gather information about an Enclosure by name with options
2020-07-13 19:50:31 +00:00
community . general . oneview_enclosure_info :
2020-03-09 09:11:07 +00:00
name : Test - Enclosure
options :
2024-12-25 21:56:20 +00:00
- script # optional
- environmentalConfiguration # optional
- utilization # optional
2020-03-09 09:11:07 +00:00
hostname : 172.16 .101 .48
username : administrator
password : my_password
api_version : 500
no_log : true
delegate_to : localhost
register : result
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure found by name
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosures }} "
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure Script
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosure_script }} "
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure Environmental Configuration
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosure_environmental_configuration }} "
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure Utilization
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosure_utilization }} "
2024-12-25 21:56:20 +00:00
- name : " Gather information about an Enclosure with temperature data at a resolution of one sample per day, between two specified dates "
2020-07-13 19:50:31 +00:00
community . general . oneview_enclosure_info :
2020-03-09 09:11:07 +00:00
name : Test - Enclosure
options :
2024-12-25 21:56:20 +00:00
- utilization : # optional
2020-03-09 09:11:07 +00:00
fields : AmbientTemperature
filter :
- startDate = 2016 - 07 - 01 T14 : 29 : 42.000 Z
- endDate = 2017 - 07 - 01 T03 : 29 : 42.000 Z
view : day
refresh : false
hostname : 172.16 .101 .48
username : administrator
password : my_password
api_version : 500
no_log : true
delegate_to : localhost
register : result
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure found by name
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosures }} "
2021-10-18 11:53:14 +00:00
- name : Print fetched information about Enclosure Utilization
ansible . builtin . debug :
2020-03-09 09:11:07 +00:00
msg : " {{ result.enclosure_utilization }} "
2024-12-25 21:56:20 +00:00
"""
2020-03-09 09:11:07 +00:00
2024-12-25 21:56:20 +00:00
RETURN = r """
2020-03-09 09:11:07 +00:00
enclosures :
2024-12-25 21:56:20 +00:00
description : Has all the OneView information about the Enclosures .
returned : Always , but can be null .
type : dict
2020-03-09 09:11:07 +00:00
enclosure_script :
2024-12-25 21:56:20 +00:00
description : Has all the OneView information about the script of an Enclosure .
returned : When requested , but can be null .
type : str
2020-03-09 09:11:07 +00:00
enclosure_environmental_configuration :
2024-12-25 21:56:20 +00:00
description : Has all the OneView information about the environmental configuration of an Enclosure .
returned : When requested , but can be null .
type : dict
2020-03-09 09:11:07 +00:00
enclosure_utilization :
2024-12-25 21:56:20 +00:00
description : Has all the OneView information about the utilization of an Enclosure .
returned : When requested , but can be null .
type : dict
"""
2020-03-09 09:11:07 +00:00
from ansible_collections . community . general . plugins . module_utils . oneview import OneViewModuleBase
class EnclosureInfoModule ( OneViewModuleBase ) :
2021-03-08 07:35:09 +00:00
argument_spec = dict (
name = dict ( type = ' str ' ) ,
options = dict ( type = ' list ' , elements = ' raw ' ) ,
params = dict ( type = ' dict ' )
)
2020-03-09 09:11:07 +00:00
def __init__ ( self ) :
2021-07-27 16:24:29 +00:00
super ( EnclosureInfoModule , self ) . __init__ (
additional_arg_spec = self . argument_spec ,
supports_check_mode = True ,
)
2020-03-09 09:11:07 +00:00
def execute_module ( self ) :
info = { }
if self . module . params [ ' name ' ] :
enclosures = self . _get_by_name ( self . module . params [ ' name ' ] )
if self . options and enclosures :
info = self . _gather_optional_info ( self . options , enclosures [ 0 ] )
else :
enclosures = self . oneview_client . enclosures . get_all ( * * self . facts_params )
info [ ' enclosures ' ] = enclosures
2021-04-13 11:19:25 +00:00
return dict ( changed = False , * * info )
2020-03-09 09:11:07 +00:00
def _gather_optional_info ( self , options , enclosure ) :
enclosure_client = self . oneview_client . enclosures
info = { }
if options . get ( ' script ' ) :
info [ ' enclosure_script ' ] = enclosure_client . get_script ( enclosure [ ' uri ' ] )
if options . get ( ' environmentalConfiguration ' ) :
env_config = enclosure_client . get_environmental_configuration ( enclosure [ ' uri ' ] )
info [ ' enclosure_environmental_configuration ' ] = env_config
if options . get ( ' utilization ' ) :
info [ ' enclosure_utilization ' ] = self . _get_utilization ( enclosure , options [ ' utilization ' ] )
return info
def _get_utilization ( self , enclosure , params ) :
fields = view = refresh = filter = ' '
if isinstance ( params , dict ) :
fields = params . get ( ' fields ' )
view = params . get ( ' view ' )
refresh = params . get ( ' refresh ' )
filter = params . get ( ' filter ' )
return self . oneview_client . enclosures . get_utilization ( enclosure [ ' uri ' ] ,
fields = fields ,
filter = filter ,
refresh = refresh ,
view = view )
def _get_by_name ( self , name ) :
return self . oneview_client . enclosures . get_by ( ' name ' , name )
def main ( ) :
EnclosureInfoModule ( ) . run ( )
if __name__ == ' __main__ ' :
main ( )