deprecates the old module name (#53972)

adds ha order, ha group and ha load as failover types
refactors main() function and module manager to accomodate new patterns
updates docs
refactors unit tests
This commit is contained in:
Wojciech Wypior 2019-03-19 15:58:39 +01:00 committed by John R Barker
parent cd1ff016ef
commit dcf40d43ea
4 changed files with 383 additions and 45 deletions

View file

@ -0,0 +1,22 @@
{
"kind": "tm:cm:traffic-group:traffic-groupstate",
"name": "traffic-group-2",
"partition": "Common",
"fullPath": "/Common/traffic-group-2",
"generation": 227,
"selfLink": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-2?ver=12.1.4",
"autoFailbackEnabled": "true",
"autoFailbackTime": 60,
"haLoadFactor": 1,
"isFloating": "true",
"mac": "none",
"unitId": 1,
"haOrder": [
"/Common/v12-1.ansible.local"
],
"haOrderReference": [
{
"link": "https://localhost/mgmt/tm/cm/device/~Common~v12-1.ansible.local?ver=12.1.4"
}
]
}

View file

@ -17,10 +17,10 @@ if sys.version_info < (2, 7):
from ansible.module_utils.basic import AnsibleModule
try:
from library.modules.bigip_traffic_group import ApiParameters
from library.modules.bigip_traffic_group import ModuleParameters
from library.modules.bigip_traffic_group import ModuleManager
from library.modules.bigip_traffic_group import ArgumentSpec
from library.modules.bigip_device_traffic_group import ApiParameters
from library.modules.bigip_device_traffic_group import ModuleParameters
from library.modules.bigip_device_traffic_group import ModuleManager
from library.modules.bigip_device_traffic_group import ArgumentSpec
# In Ansible 2.8, Ansible changed import paths.
from test.units.compat import unittest
@ -29,10 +29,10 @@ try:
from test.units.modules.utils import set_module_args
except ImportError:
from ansible.modules.network.f5.bigip_traffic_group import ApiParameters
from ansible.modules.network.f5.bigip_traffic_group import ModuleParameters
from ansible.modules.network.f5.bigip_traffic_group import ModuleManager
from ansible.modules.network.f5.bigip_traffic_group import ArgumentSpec
from ansible.modules.network.f5.bigip_device_traffic_group import ApiParameters
from ansible.modules.network.f5.bigip_device_traffic_group import ModuleParameters
from ansible.modules.network.f5.bigip_device_traffic_group import ModuleManager
from ansible.modules.network.f5.bigip_device_traffic_group import ArgumentSpec
# Ansible 2.8 imports
from units.compat import unittest
@ -83,6 +83,22 @@ class TestParameters(unittest.TestCase):
p = ModuleParameters(params=args)
assert p.mac_address == '00:00:00:00:00:02'
def test_module_parameters_3(self):
args = dict(
name='foo',
ha_order=['bigip1'],
ha_group='',
auto_failback='yes',
auto_failback_time=40
)
p = ModuleParameters(params=args)
assert p.name == 'foo'
assert p.ha_order == ['/Common/bigip1']
assert p.ha_group == 'none'
assert p.auto_failback == 'true'
assert p.auto_failback_time == 40
def test_api_parameters_1(self):
args = load_fixture('load_tm_cm_traffic_group_1.json')
@ -104,9 +120,11 @@ class TestManager(unittest.TestCase):
def test_create(self, *args):
set_module_args(dict(
name='foo',
server='localhost',
password='password',
user='admin'
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
module = AnsibleModule(
@ -121,3 +139,31 @@ class TestManager(unittest.TestCase):
results = mm.exec_module()
assert results['changed'] is True
def test_modify_ha_order(self, *args):
set_module_args(dict(
name='traffic-group-2',
ha_order=['v12-2.ansible.local', 'v12-1.ansible.local'],
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode,
)
current = ApiParameters(params=load_fixture('load_tg_ha_order.json'))
mm = ModuleManager(module=module)
mm.exists = Mock(return_value=True)
mm.read_current_from_device = Mock(return_value=current)
mm.update_on_device = Mock(return_value=True)
results = mm.exec_module()
assert results['changed'] is True
assert results['ha_order'] == ['/Common/v12-2.ansible.local', '/Common/v12-1.ansible.local']