mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
Initial commits for integration of HPE OneView resources with Ansible (#26026)
* Initial commit for integration of HPE OneView resources with Ansible Core. Adding FC Network and FC Network Fact modules and unit tests, and OneView base class for all OV resources.
This commit is contained in:
parent
8bb10bb225
commit
b060d0ccba
8 changed files with 964 additions and 0 deletions
0
lib/ansible/modules/remote_management/hpe/__init__.py
Normal file
0
lib/ansible/modules/remote_management/hpe/__init__.py
Normal file
124
lib/ansible/modules/remote_management/hpe/oneview_fc_network.py
Normal file
124
lib/ansible/modules/remote_management/hpe/oneview_fc_network.py
Normal file
|
@ -0,0 +1,124 @@
|
|||
#!/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.0',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
---
|
||||
module: oneview_fc_network
|
||||
short_description: Manage OneView Fibre Channel Network resources.
|
||||
description:
|
||||
- Provides an interface to manage Fibre Channel Network resources. Can create, update, and delete.
|
||||
version_added: "2.4"
|
||||
requirements:
|
||||
- "hpOneView >= 4.0.0"
|
||||
author: "Felipe Bulsoni (@fgbulsoni)"
|
||||
options:
|
||||
state:
|
||||
description:
|
||||
- Indicates the desired state for the Fibre Channel Network resource.
|
||||
C(present) will ensure data properties are compliant with OneView.
|
||||
C(absent) will remove the resource from OneView, if it exists.
|
||||
choices: ['present', 'absent']
|
||||
data:
|
||||
description:
|
||||
- List with the Fibre Channel Network properties.
|
||||
required: true
|
||||
|
||||
extends_documentation_fragment:
|
||||
- oneview
|
||||
- oneview.validateetag
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: Ensure that the Fibre Channel Network is present using the default configuration
|
||||
oneview_fc_network:
|
||||
config: "{{ config_file_path }}"
|
||||
state: present
|
||||
data:
|
||||
name: 'New FC Network'
|
||||
|
||||
- name: Ensure that the Fibre Channel Network is present with fabricType 'DirectAttach'
|
||||
oneview_fc_network:
|
||||
config: "{{ config_file_path }}"
|
||||
state: present
|
||||
data:
|
||||
name: 'New FC Network'
|
||||
fabricType: 'DirectAttach'
|
||||
|
||||
- name: Ensure that the Fibre Channel Network is present and is inserted in the desired scopes
|
||||
oneview_fc_network:
|
||||
config: "{{ config_file_path }}"
|
||||
state: present
|
||||
data:
|
||||
name: 'New FC Network'
|
||||
scopeUris:
|
||||
- '/rest/scopes/00SC123456'
|
||||
- '/rest/scopes/01SC123456'
|
||||
|
||||
- name: Ensure that the Fibre Channel Network is absent
|
||||
oneview_fc_network:
|
||||
config: "{{ config_file_path }}"
|
||||
state: absent
|
||||
data:
|
||||
name: 'New FC Network'
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
fc_network:
|
||||
description: Has the facts about the managed OneView FC Network.
|
||||
returned: On state 'present'. Can be null.
|
||||
type: dict
|
||||
'''
|
||||
|
||||
from ansible.module_utils.oneview import OneViewModuleBase
|
||||
|
||||
|
||||
class FcNetworkModule(OneViewModuleBase):
|
||||
MSG_CREATED = 'FC Network created successfully.'
|
||||
MSG_UPDATED = 'FC Network updated successfully.'
|
||||
MSG_DELETED = 'FC Network deleted successfully.'
|
||||
MSG_ALREADY_PRESENT = 'FC Network is already present.'
|
||||
MSG_ALREADY_ABSENT = 'FC Network is already absent.'
|
||||
RESOURCE_FACT_NAME = 'fc_network'
|
||||
|
||||
def __init__(self):
|
||||
|
||||
additional_arg_spec = dict(data=dict(required=True, type='dict'),
|
||||
state=dict(
|
||||
required=True,
|
||||
choices=['present', 'absent']))
|
||||
|
||||
super(FcNetworkModule, self).__init__(additional_arg_spec=additional_arg_spec,
|
||||
validate_etag_support=True)
|
||||
|
||||
self.resource_client = self.oneview_client.fc_networks
|
||||
|
||||
def execute_module(self):
|
||||
resource = self.get_by_name(self.data['name'])
|
||||
|
||||
if self.state == 'present':
|
||||
return self._present(resource)
|
||||
else:
|
||||
return self.resource_absent(resource)
|
||||
|
||||
def _present(self, resource):
|
||||
scope_uris = self.data.pop('scopeUris', None)
|
||||
result = self.resource_present(resource, self.RESOURCE_FACT_NAME)
|
||||
if scope_uris is not None:
|
||||
result = self.resource_scopes_set(result, 'fc_network', scope_uris)
|
||||
return result
|
||||
|
||||
|
||||
def main():
|
||||
FcNetworkModule().run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue