mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-07 13:52:54 +00: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:
committed by
Toshio Kuratomi
parent
8bb10bb225
commit
b060d0ccba
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()
|
||||
Reference in New Issue
Block a user