mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-22 16:51:17 +00:00
BIGIP: Bugfix.bigiqapplication (#53986)
* adds function to do version checks for bigiq * adds version limitation to bigiq application modules Refactors main() function and module manager in multiple modules in line with recent changes Adds variable types to docs Refactors unit tests to remove deprecated parameters
This commit is contained in:
committed by
Tim Rupp
parent
55d2632d78
commit
1e4dab822b
@@ -21,6 +21,7 @@ try:
|
||||
from library.modules.bigiq_application_fasthttp import ModuleParameters
|
||||
from library.modules.bigiq_application_fasthttp import ModuleManager
|
||||
from library.modules.bigiq_application_fasthttp import ArgumentSpec
|
||||
from library.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# In Ansible 2.8, Ansible changed import paths.
|
||||
from test.units.compat import unittest
|
||||
@@ -33,6 +34,7 @@ except ImportError:
|
||||
from ansible.modules.network.f5.bigiq_application_fasthttp import ModuleParameters
|
||||
from ansible.modules.network.f5.bigiq_application_fasthttp import ModuleManager
|
||||
from ansible.modules.network.f5.bigiq_application_fasthttp import ArgumentSpec
|
||||
from ansible.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# Ansible 2.8 imports
|
||||
from units.compat import unittest
|
||||
@@ -111,14 +113,49 @@ class TestParameters(unittest.TestCase):
|
||||
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.spec = ArgumentSpec()
|
||||
self.patcher1 = patch('time.sleep')
|
||||
self.patcher1.start()
|
||||
|
||||
try:
|
||||
self.p1 = patch('library.modules.bigiq_application_fasthttp.bigiq_version')
|
||||
self.p2 = patch('library.modules.bigiq_application_fasthttp.ModuleParameters.template_reference')
|
||||
self.p3 = patch('library.modules.bigiq_application_fasthttp.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('library.modules.bigiq_application_fasthttp.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
except Exception:
|
||||
self.p1 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.bigiq_version')
|
||||
self.p2 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.ModuleParameters.template_reference')
|
||||
self.p3 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
def tearDown(self):
|
||||
self.patcher1.stop()
|
||||
self.p1.stop()
|
||||
self.p2.stop()
|
||||
self.p3.stop()
|
||||
self.p4.stop()
|
||||
|
||||
def test_create(self, *args):
|
||||
set_module_args(dict(
|
||||
@@ -154,6 +191,7 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
mm.check_bigiq_version = Mock(return_value=True)
|
||||
mm.has_no_service_environment = Mock(return_value=False)
|
||||
mm.wait_for_apply_template_task = Mock(return_value=True)
|
||||
|
||||
@@ -164,3 +202,43 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
assert results['changed'] is True
|
||||
assert results['description'] == 'my description'
|
||||
|
||||
def test_bigiq_version_raises(self):
|
||||
set_module_args(dict(
|
||||
name='foo',
|
||||
description='my description',
|
||||
service_environment='bar',
|
||||
servers=[
|
||||
dict(
|
||||
address='1.2.3.4',
|
||||
port=8080
|
||||
),
|
||||
dict(
|
||||
address='5.6.7.8',
|
||||
port=8000
|
||||
)
|
||||
],
|
||||
inbound_virtual=dict(
|
||||
address='2.2.2.2',
|
||||
netmask='255.255.255.255',
|
||||
port=80
|
||||
),
|
||||
provider=dict(
|
||||
server='localhost',
|
||||
password='password',
|
||||
user='admin'
|
||||
)
|
||||
))
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode
|
||||
)
|
||||
|
||||
msg = 'Module supports only BIGIQ version 6.0.x or lower.'
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
|
||||
with pytest.raises(F5ModuleError) as err:
|
||||
mm.exec_module()
|
||||
assert str(err.value) == msg
|
||||
|
||||
@@ -21,6 +21,7 @@ try:
|
||||
from library.modules.bigiq_application_fastl4_tcp import ModuleParameters
|
||||
from library.modules.bigiq_application_fastl4_tcp import ModuleManager
|
||||
from library.modules.bigiq_application_fastl4_tcp import ArgumentSpec
|
||||
from library.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# In Ansible 2.8, Ansible changed import paths.
|
||||
from test.units.compat import unittest
|
||||
@@ -33,6 +34,7 @@ except ImportError:
|
||||
from ansible.modules.network.f5.bigiq_application_fastl4_tcp import ModuleParameters
|
||||
from ansible.modules.network.f5.bigiq_application_fastl4_tcp import ModuleManager
|
||||
from ansible.modules.network.f5.bigiq_application_fastl4_tcp import ArgumentSpec
|
||||
from ansible.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# Ansible 2.8 imports
|
||||
from units.compat import unittest
|
||||
@@ -111,14 +113,42 @@ class TestParameters(unittest.TestCase):
|
||||
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.spec = ArgumentSpec()
|
||||
self.patcher1 = patch('time.sleep')
|
||||
self.patcher1.start()
|
||||
|
||||
try:
|
||||
self.p1 = patch('library.modules.bigiq_application_fastl4_tcp.bigiq_version')
|
||||
self.p2 = patch('library.modules.bigiq_application_fastl4_tcp.ModuleParameters.template_reference')
|
||||
self.p3 = patch('library.modules.bigiq_application_fastl4_tcp.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
except Exception:
|
||||
self.p1 = patch('ansible.modules.network.f5.bigiq_application_fastl4_tcp.bigiq_version')
|
||||
self.p2 = patch('ansible.modules.network.f5.bigiq_application_fastl4_tcp.ModuleParameters.template_reference')
|
||||
self.p3 = patch('ansible.modules.network.f5.bigiq_application_fastl4_tcp.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
def tearDown(self):
|
||||
self.patcher1.stop()
|
||||
self.p1.stop()
|
||||
self.p2.stop()
|
||||
self.p3.stop()
|
||||
|
||||
def test_create(self, *args):
|
||||
set_module_args(dict(
|
||||
@@ -154,6 +184,7 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
mm.check_bigiq_version = Mock(return_value=True)
|
||||
mm.has_no_service_environment = Mock(return_value=False)
|
||||
mm.wait_for_apply_template_task = Mock(return_value=True)
|
||||
|
||||
@@ -164,3 +195,43 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
assert results['changed'] is True
|
||||
assert results['description'] == 'my description'
|
||||
|
||||
def test_bigiq_version_raises(self):
|
||||
set_module_args(dict(
|
||||
name='foo',
|
||||
description='my description',
|
||||
service_environment='bar',
|
||||
servers=[
|
||||
dict(
|
||||
address='1.2.3.4',
|
||||
port=8080
|
||||
),
|
||||
dict(
|
||||
address='5.6.7.8',
|
||||
port=8000
|
||||
)
|
||||
],
|
||||
inbound_virtual=dict(
|
||||
address='2.2.2.2',
|
||||
netmask='255.255.255.255',
|
||||
port=80
|
||||
),
|
||||
provider=dict(
|
||||
server='localhost',
|
||||
password='password',
|
||||
user='admin'
|
||||
)
|
||||
))
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode
|
||||
)
|
||||
|
||||
msg = 'Module supports only BIGIQ version 6.0.x or lower.'
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
|
||||
with pytest.raises(F5ModuleError) as err:
|
||||
mm.exec_module()
|
||||
assert str(err.value) == msg
|
||||
|
||||
@@ -21,6 +21,7 @@ try:
|
||||
from library.modules.bigiq_application_fastl4_udp import ModuleParameters
|
||||
from library.modules.bigiq_application_fastl4_udp import ModuleManager
|
||||
from library.modules.bigiq_application_fastl4_udp import ArgumentSpec
|
||||
from library.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# In Ansible 2.8, Ansible changed import paths.
|
||||
from test.units.compat import unittest
|
||||
@@ -33,6 +34,7 @@ except ImportError:
|
||||
from ansible.modules.network.f5.bigiq_application_fastl4_udp import ModuleParameters
|
||||
from ansible.modules.network.f5.bigiq_application_fastl4_udp import ModuleManager
|
||||
from ansible.modules.network.f5.bigiq_application_fastl4_udp import ArgumentSpec
|
||||
from ansible.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# Ansible 2.8 imports
|
||||
from units.compat import unittest
|
||||
@@ -111,14 +113,42 @@ class TestParameters(unittest.TestCase):
|
||||
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.spec = ArgumentSpec()
|
||||
self.patcher1 = patch('time.sleep')
|
||||
self.patcher1.start()
|
||||
|
||||
try:
|
||||
self.p1 = patch('library.modules.bigiq_application_fastl4_udp.bigiq_version')
|
||||
self.p2 = patch('library.modules.bigiq_application_fastl4_udp.ModuleParameters.template_reference')
|
||||
self.p3 = patch('library.modules.bigiq_application_fastl4_udp.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
except Exception:
|
||||
self.p1 = patch('ansible.modules.network.f5.bigiq_application_fastl4_udp.bigiq_version')
|
||||
self.p2 = patch('ansible.modules.network.f5.bigiq_application_fastl4_udp.ModuleParameters.template_reference')
|
||||
self.p3 = patch('ansible.modules.network.f5.bigiq_application_fastl4_udp.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
def tearDown(self):
|
||||
self.patcher1.stop()
|
||||
self.p1.stop()
|
||||
self.p2.stop()
|
||||
self.p3.stop()
|
||||
|
||||
def test_create(self, *args):
|
||||
set_module_args(dict(
|
||||
@@ -154,6 +184,7 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
mm.check_bigiq_version = Mock(return_value=True)
|
||||
mm.has_no_service_environment = Mock(return_value=False)
|
||||
mm.wait_for_apply_template_task = Mock(return_value=True)
|
||||
|
||||
@@ -164,3 +195,43 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
assert results['changed'] is True
|
||||
assert results['description'] == 'my description'
|
||||
|
||||
def test_bigiq_version_raises(self):
|
||||
set_module_args(dict(
|
||||
name='foo',
|
||||
description='my description',
|
||||
service_environment='bar',
|
||||
servers=[
|
||||
dict(
|
||||
address='1.2.3.4',
|
||||
port=8080
|
||||
),
|
||||
dict(
|
||||
address='5.6.7.8',
|
||||
port=8000
|
||||
)
|
||||
],
|
||||
inbound_virtual=dict(
|
||||
address='2.2.2.2',
|
||||
netmask='255.255.255.255',
|
||||
port=80
|
||||
),
|
||||
provider=dict(
|
||||
server='localhost',
|
||||
password='password',
|
||||
user='admin'
|
||||
)
|
||||
))
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode
|
||||
)
|
||||
|
||||
msg = 'Module supports only BIGIQ version 6.0.x or lower.'
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
|
||||
with pytest.raises(F5ModuleError) as err:
|
||||
mm.exec_module()
|
||||
assert str(err.value) == msg
|
||||
|
||||
@@ -21,6 +21,7 @@ try:
|
||||
from library.modules.bigiq_application_http import ModuleParameters
|
||||
from library.modules.bigiq_application_http import ModuleManager
|
||||
from library.modules.bigiq_application_http import ArgumentSpec
|
||||
from library.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# In Ansible 2.8, Ansible changed import paths.
|
||||
from test.units.compat import unittest
|
||||
@@ -33,6 +34,7 @@ except ImportError:
|
||||
from ansible.modules.network.f5.bigiq_application_http import ModuleParameters
|
||||
from ansible.modules.network.f5.bigiq_application_http import ModuleManager
|
||||
from ansible.modules.network.f5.bigiq_application_http import ArgumentSpec
|
||||
from ansible.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# Ansible 2.8 imports
|
||||
from units.compat import unittest
|
||||
@@ -111,14 +113,49 @@ class TestParameters(unittest.TestCase):
|
||||
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.spec = ArgumentSpec()
|
||||
self.patcher1 = patch('time.sleep')
|
||||
self.patcher1.start()
|
||||
|
||||
try:
|
||||
self.p1 = patch('library.modules.bigiq_application_http.bigiq_version')
|
||||
self.p2 = patch('library.modules.bigiq_application_http.ModuleParameters.template_reference')
|
||||
self.p3 = patch('library.modules.bigiq_application_http.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('library.modules.bigiq_application_http.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
except Exception:
|
||||
self.p1 = patch('ansible.modules.network.f5.bigiq_application_http.bigiq_version')
|
||||
self.p2 = patch('ansible.modules.network.f5.bigiq_application_http.ModuleParameters.template_reference')
|
||||
self.p3 = patch('ansible.modules.network.f5.bigiq_application_http.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('ansible.modules.network.f5.bigiq_application_http.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
def tearDown(self):
|
||||
self.patcher1.stop()
|
||||
self.p1.stop()
|
||||
self.p2.stop()
|
||||
self.p3.stop()
|
||||
self.p4.stop()
|
||||
|
||||
def test_create(self, *args):
|
||||
set_module_args(dict(
|
||||
@@ -154,6 +191,7 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
mm.check_bigiq_version = Mock(return_value=True)
|
||||
mm.has_no_service_environment = Mock(return_value=False)
|
||||
mm.wait_for_apply_template_task = Mock(return_value=True)
|
||||
|
||||
@@ -164,3 +202,43 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
assert results['changed'] is True
|
||||
assert results['description'] == 'my description'
|
||||
|
||||
def test_bigiq_version_raises(self):
|
||||
set_module_args(dict(
|
||||
name='foo',
|
||||
description='my description',
|
||||
service_environment='bar',
|
||||
servers=[
|
||||
dict(
|
||||
address='1.2.3.4',
|
||||
port=8080
|
||||
),
|
||||
dict(
|
||||
address='5.6.7.8',
|
||||
port=8000
|
||||
)
|
||||
],
|
||||
inbound_virtual=dict(
|
||||
address='2.2.2.2',
|
||||
netmask='255.255.255.255',
|
||||
port=80
|
||||
),
|
||||
provider=dict(
|
||||
server='localhost',
|
||||
password='password',
|
||||
user='admin'
|
||||
)
|
||||
))
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode
|
||||
)
|
||||
|
||||
msg = 'Module supports only BIGIQ version 6.0.x or lower.'
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
|
||||
with pytest.raises(F5ModuleError) as err:
|
||||
mm.exec_module()
|
||||
assert str(err.value) == msg
|
||||
|
||||
@@ -21,6 +21,7 @@ try:
|
||||
from library.modules.bigiq_application_https_offload import ModuleParameters
|
||||
from library.modules.bigiq_application_https_offload import ModuleManager
|
||||
from library.modules.bigiq_application_https_offload import ArgumentSpec
|
||||
from library.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# In Ansible 2.8, Ansible changed import paths.
|
||||
from test.units.compat import unittest
|
||||
@@ -33,6 +34,7 @@ except ImportError:
|
||||
from ansible.modules.network.f5.bigiq_application_https_offload import ModuleParameters
|
||||
from ansible.modules.network.f5.bigiq_application_https_offload import ModuleManager
|
||||
from ansible.modules.network.f5.bigiq_application_https_offload import ArgumentSpec
|
||||
from ansible.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# Ansible 2.8 imports
|
||||
from units.compat import unittest
|
||||
@@ -122,14 +124,49 @@ class TestParameters(unittest.TestCase):
|
||||
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.spec = ArgumentSpec()
|
||||
self.patcher1 = patch('time.sleep')
|
||||
self.patcher1.start()
|
||||
|
||||
try:
|
||||
self.p1 = patch('library.modules.bigiq_application_https_offload.bigiq_version')
|
||||
self.p2 = patch('library.modules.bigiq_application_https_offload.ModuleParameters.template_reference')
|
||||
self.p3 = patch('library.modules.bigiq_application_https_offload.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('library.modules.bigiq_application_https_offload.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
except Exception:
|
||||
self.p1 = patch('ansible.modules.network.f5.bigiq_application_https_offload.bigiq_version')
|
||||
self.p2 = patch('ansible.modules.network.f5.bigiq_application_https_offload.ModuleParameters.template_reference')
|
||||
self.p3 = patch('ansible.modules.network.f5.bigiq_application_https_offload.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('ansible.modules.network.f5.bigiq_application_https_offload.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
def tearDown(self):
|
||||
self.patcher1.stop()
|
||||
self.p1.stop()
|
||||
self.p2.stop()
|
||||
self.p3.stop()
|
||||
self.p4.stop()
|
||||
|
||||
def test_create(self, *args):
|
||||
set_module_args(dict(
|
||||
@@ -165,11 +202,13 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode
|
||||
supports_check_mode=self.spec.supports_check_mode,
|
||||
mutually_exclusive=self.spec.mutually_exclusive
|
||||
)
|
||||
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
mm.check_bigiq_version = Mock(return_value=True)
|
||||
mm.has_no_service_environment = Mock(return_value=False)
|
||||
mm.wait_for_apply_template_task = Mock(return_value=True)
|
||||
|
||||
@@ -180,3 +219,44 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
assert results['changed'] is True
|
||||
assert results['description'] == 'my description'
|
||||
|
||||
def test_bigiq_version_raises(self):
|
||||
set_module_args(dict(
|
||||
name='foo',
|
||||
description='my description',
|
||||
service_environment='bar',
|
||||
servers=[
|
||||
dict(
|
||||
address='1.2.3.4',
|
||||
port=8080
|
||||
),
|
||||
dict(
|
||||
address='5.6.7.8',
|
||||
port=8000
|
||||
)
|
||||
],
|
||||
inbound_virtual=dict(
|
||||
address='2.2.2.2',
|
||||
netmask='255.255.255.255',
|
||||
port=80
|
||||
),
|
||||
provider=dict(
|
||||
server='localhost',
|
||||
password='password',
|
||||
user='admin'
|
||||
)
|
||||
))
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode,
|
||||
mutually_exclusive=self.spec.mutually_exclusive
|
||||
)
|
||||
|
||||
msg = 'Module supports only BIGIQ version 6.0.x or lower.'
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
|
||||
with pytest.raises(F5ModuleError) as err:
|
||||
mm.exec_module()
|
||||
assert str(err.value) == msg
|
||||
|
||||
@@ -21,6 +21,7 @@ try:
|
||||
from library.modules.bigiq_application_https_waf import ModuleParameters
|
||||
from library.modules.bigiq_application_https_waf import ModuleManager
|
||||
from library.modules.bigiq_application_https_waf import ArgumentSpec
|
||||
from library.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# In Ansible 2.8, Ansible changed import paths.
|
||||
from test.units.compat import unittest
|
||||
@@ -33,6 +34,7 @@ except ImportError:
|
||||
from ansible.modules.network.f5.bigiq_application_https_waf import ModuleParameters
|
||||
from ansible.modules.network.f5.bigiq_application_https_waf import ModuleManager
|
||||
from ansible.modules.network.f5.bigiq_application_https_waf import ArgumentSpec
|
||||
from ansible.module_utils.network.f5.common import F5ModuleError
|
||||
|
||||
# Ansible 2.8 imports
|
||||
from units.compat import unittest
|
||||
@@ -126,14 +128,49 @@ class TestParameters(unittest.TestCase):
|
||||
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.spec = ArgumentSpec()
|
||||
self.patcher1 = patch('time.sleep')
|
||||
self.patcher1.start()
|
||||
|
||||
try:
|
||||
self.p1 = patch('library.modules.bigiq_application_https_waf.bigiq_version')
|
||||
self.p2 = patch('library.modules.bigiq_application_https_waf.ModuleParameters.template_reference')
|
||||
self.p3 = patch('library.modules.bigiq_application_https_waf.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('library.modules.bigiq_application_https_waf.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
except Exception:
|
||||
self.p1 = patch('ansible.modules.network.f5.bigiq_application_https_waf.bigiq_version')
|
||||
self.p2 = patch('ansible.modules.network.f5.bigiq_application_https_waf.ModuleParameters.template_reference')
|
||||
self.p3 = patch('ansible.modules.network.f5.bigiq_application_https_waf.ModuleParameters.ssg_reference')
|
||||
self.p4 = patch('ansible.modules.network.f5.bigiq_application_https_waf.ModuleParameters.default_device_reference')
|
||||
|
||||
self.m1 = self.p1.start()
|
||||
self.m2 = self.p2.start()
|
||||
self.m3 = self.p3.start()
|
||||
self.m4 = self.p4.start()
|
||||
|
||||
self.m1.return_value = '6.1.0'
|
||||
self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
|
||||
self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
|
||||
self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
|
||||
|
||||
def tearDown(self):
|
||||
self.patcher1.stop()
|
||||
self.p1.stop()
|
||||
self.p2.stop()
|
||||
self.p3.stop()
|
||||
self.p4.stop()
|
||||
|
||||
def test_create(self, *args):
|
||||
set_module_args(dict(
|
||||
@@ -173,11 +210,13 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode
|
||||
supports_check_mode=self.spec.supports_check_mode,
|
||||
mutually_exclusive=self.spec.mutually_exclusive
|
||||
)
|
||||
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
mm.check_bigiq_version = Mock(return_value=True)
|
||||
mm.has_no_service_environment = Mock(return_value=False)
|
||||
mm.wait_for_apply_template_task = Mock(return_value=True)
|
||||
|
||||
@@ -188,3 +227,44 @@ class TestManager(unittest.TestCase):
|
||||
|
||||
assert results['changed'] is True
|
||||
assert results['description'] == 'my description'
|
||||
|
||||
def test_bigiq_version_raises(self):
|
||||
set_module_args(dict(
|
||||
name='foo',
|
||||
description='my description',
|
||||
service_environment='bar',
|
||||
servers=[
|
||||
dict(
|
||||
address='1.2.3.4',
|
||||
port=8080
|
||||
),
|
||||
dict(
|
||||
address='5.6.7.8',
|
||||
port=8000
|
||||
)
|
||||
],
|
||||
inbound_virtual=dict(
|
||||
address='2.2.2.2',
|
||||
netmask='255.255.255.255',
|
||||
port=80
|
||||
),
|
||||
provider=dict(
|
||||
server='localhost',
|
||||
password='password',
|
||||
user='admin'
|
||||
)
|
||||
))
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec=self.spec.argument_spec,
|
||||
supports_check_mode=self.spec.supports_check_mode,
|
||||
mutually_exclusive=self.spec.mutually_exclusive
|
||||
)
|
||||
|
||||
msg = 'Module supports only BIGIQ version 6.0.x or lower.'
|
||||
# Override methods to force specific logic in the module to happen
|
||||
mm = ModuleManager(module=module)
|
||||
|
||||
with pytest.raises(F5ModuleError) as err:
|
||||
mm.exec_module()
|
||||
assert str(err.value) == msg
|
||||
|
||||
Reference in New Issue
Block a user