Various bigip_gtm_datacenter fixes (#34440)

Code refactor to use f5 coding conventions. Removed deprecated
"enabled/disabled" params (this is now a state). Adds token cleanup
for cases where many api calls are made.
This commit is contained in:
Tim Rupp 2018-01-03 21:18:34 -08:00 committed by GitHub
commit 6c97c340ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 171 additions and 203 deletions

View file

@ -20,14 +20,16 @@ from ansible.compat.tests.mock import patch
from ansible.module_utils.f5_utils import AnsibleF5Client
try:
from library.bigip_gtm_datacenter import Parameters
from library.bigip_gtm_datacenter import ApiParameters
from library.bigip_gtm_datacenter import ModuleParameters
from library.bigip_gtm_datacenter import ModuleManager
from library.bigip_gtm_datacenter import ArgumentSpec
from ansible.module_utils.f5_utils import iControlUnexpectedHTTPError
from test.unit.modules.utils import set_module_args
except ImportError:
try:
from ansible.modules.network.f5.bigip_gtm_datacenter import Parameters
from ansible.modules.network.f5.bigip_gtm_datacenter import ApiParameters
from ansible.modules.network.f5.bigip_gtm_datacenter import ModuleParameters
from ansible.modules.network.f5.bigip_gtm_datacenter import ModuleManager
from ansible.modules.network.f5.bigip_gtm_datacenter import ArgumentSpec
from ansible.module_utils.f5_utils import iControlUnexpectedHTTPError
@ -66,19 +68,19 @@ class TestParameters(unittest.TestCase):
location='baz',
name='datacenter'
)
p = Parameters(args)
p = ModuleParameters(args)
assert p.state == 'present'
def test_api_parameters(self):
args = load_fixture('load_gtm_datacenter_default.json')
p = Parameters(args)
p = ApiParameters(args)
assert p.name == 'asd'
def test_module_parameters_state_present(self):
args = dict(
state='present'
)
p = Parameters(args)
p = ModuleParameters(args)
assert p.state == 'present'
assert p.enabled is True
@ -86,25 +88,25 @@ class TestParameters(unittest.TestCase):
args = dict(
state='absent'
)
p = Parameters(args)
p = ModuleParameters(args)
assert p.state == 'absent'
def test_module_parameters_state_enabled(self):
args = dict(
state='enabled'
)
p = Parameters(args)
p = ModuleParameters(args)
assert p.state == 'enabled'
assert p.enabled is True
assert p.disabled is False
assert p.disabled is None
def test_module_parameters_state_disabled(self):
args = dict(
state='disabled'
)
p = Parameters(args)
p = ModuleParameters(args)
assert p.state == 'disabled'
assert p.enabled is False
assert p.enabled is None
assert p.disabled is True
@ -137,6 +139,7 @@ class TestManager(unittest.TestCase):
results = mm.exec_module()
assert results['changed'] is True
assert results['state'] == 'present'
def test_create_disabled_datacenter(self, *args):
set_module_args(dict(
@ -161,6 +164,7 @@ class TestManager(unittest.TestCase):
results = mm.exec_module()
assert results['changed'] is True
assert results['enabled'] is False
assert results['disabled'] is True
def test_create_enabled_datacenter(self, *args):
set_module_args(dict(
@ -185,6 +189,7 @@ class TestManager(unittest.TestCase):
results = mm.exec_module()
assert results['changed'] is True
assert results['enabled'] is True
assert results['disabled'] is False
def test_idempotent_disable_datacenter(self, *args):
set_module_args(dict(
@ -201,7 +206,7 @@ class TestManager(unittest.TestCase):
f5_product_name=self.spec.f5_product_name
)
current = Parameters(load_fixture('load_gtm_datacenter_disabled.json'))
current = ApiParameters(load_fixture('load_gtm_datacenter_disabled.json'))
mm = ModuleManager(client)
@ -212,62 +217,3 @@ class TestManager(unittest.TestCase):
results = mm.exec_module()
assert results['changed'] is False
assert results['enabled'] is False
@patch('ansible.module_utils.f5_utils.AnsibleF5Client._get_mgmt_root',
return_value=True)
class TestLegacyManager(unittest.TestCase):
def setUp(self):
self.spec = ArgumentSpec()
def test_legacy_disable_datacenter(self, *args):
set_module_args(dict(
state='present',
enabled='no',
password='admin',
server='localhost',
user='admin',
name='foo'
))
client = AnsibleF5Client(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode,
f5_product_name=self.spec.f5_product_name
)
mm = ModuleManager(client)
# Override methods to force specific logic in the module to happen
mm.exists = Mock(side_effect=[False, True])
mm.create_on_device = Mock(return_value=True)
results = mm.exec_module()
assert results['changed'] is True
assert results['enabled'] is False
def test_legacy_enable_datacenter(self, *args):
set_module_args(dict(
state='present',
enabled='yes',
password='admin',
server='localhost',
user='admin',
name='foo'
))
client = AnsibleF5Client(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode,
f5_product_name=self.spec.f5_product_name
)
mm = ModuleManager(client)
# Override methods to force specific logic in the module to happen
mm.exists = Mock(side_effect=[False, True])
mm.create_on_device = Mock(return_value=True)
results = mm.exec_module()
assert results['changed'] is True
assert results['enabled'] is True