summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Garcia Bulsoni <fgbulsoni@gmail.com>2017-10-02 17:35:27 -0300
committerBrian Coca <bcoca@users.noreply.github.com>2017-10-02 16:35:27 -0400
commit46fd083138ff4c0a3a0796da90de647e632fd8e2 (patch)
tree74039ecbe5bb635f8112c19830a9eaced0c2c445
parent12a4dca447120867965d8a970d260152a77d0be5 (diff)
downloadansible-46fd083138ff4c0a3a0796da90de647e632fd8e2.tar.gz
LogicalInterconnectGroupFactsModule for HPE OneView (#28847)
* Added support to retrieving LIG resources in HPE OneView * Fixing copyright header according to review * Swapping out config for full credentials in parameter for documentation
-rw-r--r--lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py110
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_facts.py58
2 files changed, 168 insertions, 0 deletions
diff --git a/lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py b/lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py
new file mode 100644
index 0000000000..4cccb0a2aa
--- /dev/null
+++ b/lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py
@@ -0,0 +1,110 @@
+#!/usr/bin/python
+
+# Copyright: (c) 2016-2017, Hewlett Packard Enterprise Development LP
+# 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 = '''
+---
+module: oneview_logical_interconnect_group_facts
+short_description: Retrieve facts about one or more of the OneView Logical Interconnect Groups
+description:
+ - Retrieve facts about one or more of the Logical Interconnect Groups from OneView
+version_added: "2.5"
+requirements:
+ - hpOneView >= 2.0.1
+author:
+ - Felipe Bulsoni (@fgbulsoni)
+ - Thiago Miotto (@tmiotto)
+ - Adriane Cardozo (@adriane-cardozo)
+options:
+ name:
+ description:
+ - Logical Interconnect Group name.
+extends_documentation_fragment:
+ - oneview
+ - oneview.factsparams
+'''
+
+EXAMPLES = '''
+- name: Gather facts about all Logical Interconnect Groups
+ oneview_logical_interconnect_group_facts:
+ hostname: 172.16.101.48
+ username: administrator
+ password: my_password
+ api_version: 500
+ no_log: true
+ delegate_to: localhost
+
+- debug: var=logical_interconnect_groups
+
+- name: Gather paginated, filtered and sorted facts about Logical Interconnect Groups
+ oneview_logical_interconnect_group_facts:
+ params:
+ start: 0
+ count: 3
+ sort: name:descending
+ filter: name=LIGName
+ hostname: 172.16.101.48
+ username: administrator
+ password: my_password
+ api_version: 500
+ no_log: true
+ delegate_to: localhost
+
+- debug: var=logical_interconnect_groups
+
+- name: Gather facts about a Logical Interconnect Group by name
+ oneview_logical_interconnect_group_facts:
+ name: logical lnterconnect group name
+ hostname: 172.16.101.48
+ username: administrator
+ password: my_password
+ api_version: 500
+ no_log: true
+ delegate_to: localhost
+
+- debug: var=logical_interconnect_groups
+'''
+
+RETURN = '''
+logical_interconnect_groups:
+ description: Has all the OneView facts about the Logical Interconnect Groups.
+ returned: Always, but can be null.
+ type: dict
+'''
+
+from ansible.module_utils.oneview import OneViewModuleBase
+
+
+class LogicalInterconnectGroupFactsModule(OneViewModuleBase):
+ def __init__(self):
+
+ argument_spec = dict(
+ name=dict(type='str'),
+ params=dict(type='dict'),
+ )
+
+ super(LogicalInterconnectGroupFactsModule, self).__init__(additional_arg_spec=argument_spec)
+
+ def execute_module(self):
+ if self.module.params.get('name'):
+ ligs = self.oneview_client.logical_interconnect_groups.get_by('name', self.module.params['name'])
+ else:
+ ligs = self.oneview_client.logical_interconnect_groups.get_all(**self.facts_params)
+
+ return dict(changed=False, ansible_facts=dict(logical_interconnect_groups=ligs))
+
+
+def main():
+ LogicalInterconnectGroupFactsModule().run()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_facts.py b/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_facts.py
new file mode 100644
index 0000000000..d1c179f54c
--- /dev/null
+++ b/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_facts.py
@@ -0,0 +1,58 @@
+# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from ansible.compat.tests import unittest
+from oneview_module_loader import OneViewModuleBase
+from ansible.modules.remote_management.oneview.oneview_logical_interconnect_group_facts import LogicalInterconnectGroupFactsModule
+from hpe_test_utils import FactsParamsTestCase
+
+
+ERROR_MSG = 'Fake message error'
+
+PARAMS_GET_ALL = dict(
+ config='config.json',
+ name=None
+)
+
+PARAMS_GET_BY_NAME = dict(
+ config='config.json',
+ name="Test Logical Interconnect Group"
+)
+
+PRESENT_LIGS = [{
+ "name": "Test Logical Interconnect Group",
+ "uri": "/rest/logical-interconnect-groups/ebb4ada8-08df-400e-8fac-9ff987ac5140"
+}]
+
+
+class LogicalInterconnectGroupFactsSpec(unittest.TestCase, FactsParamsTestCase):
+ def setUp(self):
+ self.configure_mocks(self, LogicalInterconnectGroupFactsModule)
+ self.logical_interconnect_groups = self.mock_ov_client.logical_interconnect_groups
+ FactsParamsTestCase.configure_client_mock(self, self.logical_interconnect_groups)
+
+ def test_should_get_all_ligs(self):
+ self.logical_interconnect_groups.get_all.return_value = PRESENT_LIGS
+ self.mock_ansible_module.params = PARAMS_GET_ALL
+
+ LogicalInterconnectGroupFactsModule().run()
+
+ self.mock_ansible_module.exit_json.assert_called_once_with(
+ changed=False,
+ ansible_facts=dict(logical_interconnect_groups=(PRESENT_LIGS))
+ )
+
+ def test_should_get_lig_by_name(self):
+ self.logical_interconnect_groups.get_by.return_value = PRESENT_LIGS
+ self.mock_ansible_module.params = PARAMS_GET_BY_NAME
+
+ LogicalInterconnectGroupFactsModule().run()
+
+ self.mock_ansible_module.exit_json.assert_called_once_with(
+ changed=False,
+ ansible_facts=dict(logical_interconnect_groups=(PRESENT_LIGS))
+ )
+
+
+if __name__ == '__main__':
+ unittest.main()