Fortinet FortiManager Device Group Module (#46086)

* fmgr_device_group PR candidate

* fgmr_device_group PR candidate

* PR candidate

* PR candidate

* Fixing Edits.

* Fixing Edits.

* Fixing Authors

* Removed State Parameter and replaced with Mode, per request of justjais
This commit is contained in:
ftntcorecse 2018-11-30 03:24:41 -07:00 committed by Sumit Jaiswal
parent 5cd31578cc
commit b4ce4e1571
3 changed files with 876 additions and 0 deletions

View file

@ -0,0 +1,226 @@
{
"add_group_member": [
{
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/TestGroup/object member"
},
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT1,FGT2",
"state": "present",
"grp_name": "TestGroup",
"vdom": "root"
},
"post_method": "add"
},
{
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT1,FGT2",
"state": "present",
"grp_name": "TestGroup",
"vdom": "root"
},
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/TestGroup/object member"
},
"post_method": "add"
},
{
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT3",
"state": "present",
"grp_name": "testtest",
"vdom": "root"
},
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/testtest/object member"
},
"post_method": "add"
}
],
"delete_device_group": [
{
"paramgram_used": {
"grp_desc": "CreatedbyAnsible",
"adom": "ansible",
"grp_members": null,
"state": "absent",
"grp_name": "TestGroup",
"vdom": "root"
},
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/TestGroup"
},
"post_method": "delete"
},
{
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/testtest"
},
"paramgram_used": {
"grp_desc": "CreatedbyAnsible",
"adom": "ansible",
"grp_members": null,
"state": "absent",
"grp_name": "testtest",
"vdom": "root"
},
"post_method": "delete"
}
],
"add_device_group": [
{
"paramgram_used": {
"grp_desc": "CreatedbyAnsible",
"adom": "ansible",
"grp_members": null,
"state": "present",
"grp_name": "TestGroup",
"vdom": "root"
},
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group"
},
"post_method": "add"
},
{
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group"
},
"paramgram_used": {
"grp_desc": "CreatedbyAnsible",
"adom": "ansible",
"grp_members": null,
"state": "present",
"grp_name": "testtest",
"vdom": "root"
},
"post_method": "add"
},
{
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT1,FGT2",
"state": "present",
"grp_name": "TestGroup",
"vdom": "root"
},
"raw_response": {
"status": {
"message": "Object already exists",
"code": -2
},
"url": "/dvmdb/adom/ansible/group"
},
"post_method": "add"
},
{
"raw_response": {
"status": {
"message": "Object already exists",
"code": -2
},
"url": "/dvmdb/adom/ansible/group"
},
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT3",
"state": "present",
"grp_name": "testtest",
"vdom": "root"
},
"post_method": "add"
}
],
"delete_group_member": [
{
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/testtest/object member"
},
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT3",
"state": "absent",
"grp_name": "testtest",
"vdom": "root"
},
"post_method": "delete"
},
{
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT1,FGT2",
"state": "absent",
"grp_name": "TestGroup",
"vdom": "root"
},
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/TestGroup/object member"
},
"post_method": "delete"
},
{
"raw_response": {
"status": {
"message": "OK",
"code": 0
},
"url": "/dvmdb/adom/ansible/group/TestGroup/object member"
},
"paramgram_used": {
"grp_desc": null,
"adom": "ansible",
"grp_members": "FGT1,FGT2",
"state": "absent",
"grp_name": "TestGroup",
"vdom": "root"
},
"post_method": "delete"
}
]
}

View file

@ -0,0 +1,271 @@
# Copyright 2018 Fortinet, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
# Make coding more python3-ish
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
import json
from pyFMG.fortimgr import FortiManager
import pytest
try:
from ansible.modules.network.fortimanager import fmgr_device_group
except ImportError:
pytest.skip(
"Could not load required modules for testing",
allow_module_level=True)
fmg_instance = FortiManager("1.1.1.1", "admin", "")
def load_fixtures():
fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
filename=os.path.splitext(os.path.basename(__file__))[0])
try:
with open(fixture_path, "r") as fixture_file:
fixture_data = json.load(fixture_file)
except IOError:
return []
return [fixture_data]
@pytest.fixture(scope="function", params=load_fixtures())
def fixture_data(request):
func_name = request.function.__name__.replace("test_", "")
return request.param.get(func_name, None)
def test_add_device_group(fixture_data, mocker):
mocker.patch(
"pyFMG.fortimgr.FortiManager._post_request",
side_effect=fixture_data)
paramgram_used = {
'grp_desc': 'CreatedbyAnsible',
'adom': 'ansible',
'grp_members': None,
'state': 'present',
'grp_name': 'TestGroup',
'vdom': 'root',
'mode': 'add'}
output = fmgr_device_group.add_device_group(fmg_instance, paramgram_used)
#
# grp_desc: CreatedbyAnsible
# adom: ansible
# grp_members: None
# state: present
# grp_name: TestGroup
# vdom: root
# mode: add
#
assert output['raw_response']['status']['code'] == 0
paramgram_used = {
'grp_desc': 'CreatedbyAnsible',
'adom': 'ansible',
'grp_members': None,
'state': 'present',
'grp_name': 'testtest',
'vdom': 'root',
'mode': 'add'}
output = fmgr_device_group.add_device_group(fmg_instance, paramgram_used)
#
# grp_desc: CreatedbyAnsible
# adom: ansible
# grp_members: None
# state: present
# grp_name: testtest
# vdom: root
# mode: add
#
assert output['raw_response']['status']['code'] == 0
paramgram_used = {
'grp_desc': None,
'adom': 'ansible',
'grp_members': 'FGT1,FGT2',
'state': 'present',
'grp_name': 'TestGroup',
'vdom': 'root',
'mode': 'add'}
output = fmgr_device_group.add_device_group(fmg_instance, paramgram_used)
#
# grp_desc: None
# adom: ansible
# grp_members: FGT1,FGT2
# state: present
# grp_name: TestGroup
# vdom: root
# mode: add
#
assert output['raw_response']['status']['code'] == -2
paramgram_used = {
'grp_desc': None,
'adom': 'ansible',
'grp_members': 'FGT3',
'state': 'present',
'grp_name': 'testtest',
'vdom': 'root',
'mode': 'add'}
output = fmgr_device_group.add_device_group(fmg_instance, paramgram_used)
#
# grp_desc: None
# adom: ansible
# grp_members: FGT3
# state: present
# grp_name: testtest
# vdom: root
# mode: add
#
assert output['raw_response']['status']['code'] == -2
def test_delete_device_group(fixture_data, mocker):
mocker.patch(
"pyFMG.fortimgr.FortiManager._post_request",
side_effect=fixture_data)
paramgram_used = {
'grp_desc': 'CreatedbyAnsible',
'adom': 'ansible',
'grp_members': None,
'state': 'absent',
'grp_name': 'TestGroup',
'vdom': 'root',
'mode': 'delete'}
output = fmgr_device_group.delete_device_group(
fmg_instance, paramgram_used)
#
# grp_desc: CreatedbyAnsible
# adom: ansible
# grp_members: None
# state: absent
# grp_name: TestGroup
# vdom: root
# mode: delete
#
assert output['raw_response']['status']['code'] == 0
paramgram_used = {
'grp_desc': 'CreatedbyAnsible',
'adom': 'ansible',
'grp_members': None,
'state': 'absent',
'grp_name': 'testtest',
'vdom': 'root',
'mode': 'delete'}
output = fmgr_device_group.delete_device_group(
fmg_instance, paramgram_used)
#
# grp_desc: CreatedbyAnsible
# adom: ansible
# grp_members: None
# state: absent
# grp_name: testtest
# vdom: root
# mode: delete
#
assert output['raw_response']['status']['code'] == 0
def test_add_group_member(fixture_data, mocker):
mocker.patch(
"pyFMG.fortimgr.FortiManager._post_request",
side_effect=fixture_data)
paramgram_used = {
'grp_desc': None,
'adom': 'ansible',
'grp_members': 'FGT1,FGT2',
'state': 'present',
'grp_name': 'TestGroup',
'vdom': 'root',
'mode': 'add'}
output = fmgr_device_group.add_group_member(fmg_instance, paramgram_used)
#
# grp_desc: None
# adom: ansible
# grp_members: FGT1,FGT2
# state: present
# grp_name: TestGroup
# vdom: root
# mode: add
#
assert output['raw_response']['status']['code'] == 0
paramgram_used = {
'grp_desc': None,
'adom': 'ansible',
'grp_members': 'FGT3',
'state': 'present',
'grp_name': 'testtest',
'vdom': 'root',
'mode': 'add'}
output = fmgr_device_group.add_group_member(fmg_instance, paramgram_used)
#
# grp_desc: None
# adom: ansible
# grp_members: FGT3
# state: present
# grp_name: testtest
# vdom: root
# mode: add
#
assert output['raw_response']['status']['code'] == 0
def test_delete_group_member(fixture_data, mocker):
mocker.patch(
"pyFMG.fortimgr.FortiManager._post_request",
side_effect=fixture_data)
paramgram_used = {
'grp_desc': None,
'adom': 'ansible',
'grp_members': 'FGT3',
'state': 'absent',
'grp_name': 'testtest',
'vdom': 'root',
'mode': 'delete'}
output = fmgr_device_group.delete_group_member(
fmg_instance, paramgram_used)
#
# grp_desc: None
# adom: ansible
# grp_members: FGT3
# state: absent
# grp_name: testtest
# vdom: root
# mode: delete
#
assert output['raw_response']['status']['code'] == 0
paramgram_used = {
'grp_desc': None,
'adom': 'ansible',
'grp_members': 'FGT1,FGT2',
'state': 'absent',
'grp_name': 'TestGroup',
'vdom': 'root',
'mode': 'delete'}
output = fmgr_device_group.delete_group_member(
fmg_instance, paramgram_used)
#
# grp_desc: None
# adom: ansible
# grp_members: FGT1,FGT2
# state: absent
# grp_name: TestGroup
# vdom: root
# mode: delete
#