1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Adds route advertisement state to the bigip_virtual_server module (#3273)

This commit is contained in:
Tim Rupp 2016-10-26 09:06:34 -07:00 committed by Matt Clay
parent 15f32cf3d5
commit a27de3adcc

View file

@ -112,6 +112,12 @@ options:
- Default Profile which manages the session persistence - Default Profile which manages the session persistence
required: false required: false
default: None default: None
route_advertisement_state:
description:
- Enable route advertisement for destination
required: false
default: disabled
version_added: "2.3"
description: description:
description: description:
- Virtual server description - Virtual server description
@ -540,6 +546,27 @@ def set_default_persistence_profiles(api, name, persistence_profile):
raise Exception('Error on setting default persistence profile : %s' % e) raise Exception('Error on setting default persistence profile : %s' % e)
def get_route_advertisement_status(api, address):
result = api.LocalLB.VirtualAddressV2.get_route_advertisement_state(virtual_addresses=[address]).pop(0)
result = result.split("STATE_")[-1].lower()
return result
def set_route_advertisement_state(api, destination, partition, route_advertisement_state):
updated = False
try:
state = "STATE_%s" % route_advertisement_state.strip().upper()
address = fq_name(partition, destination,)
current_route_advertisement_state=get_route_advertisement_status(api,address)
if current_route_advertisement_state != route_advertisement_state:
api.LocalLB.VirtualAddressV2.set_route_advertisement_state(virtual_addresses=[address], states=[state])
updated = True
return updated
except bigsuds.OperationFailed as e:
raise Exception('Error on setting profiles : %s' % e)
def main(): def main():
argument_spec = f5_argument_spec() argument_spec = f5_argument_spec()
argument_spec.update(dict( argument_spec.update(dict(
@ -554,6 +581,7 @@ def main():
pool=dict(type='str'), pool=dict(type='str'),
description=dict(type='str'), description=dict(type='str'),
snat=dict(type='str'), snat=dict(type='str'),
route_advertisement_state=dict(type='str', default='disabled', choices=['enabled', 'disabled']),
default_persistence_profile=dict(type='str') default_persistence_profile=dict(type='str')
)) ))
@ -593,6 +621,7 @@ def main():
pool = fq_name(partition, module.params['pool']) pool = fq_name(partition, module.params['pool'])
description = module.params['description'] description = module.params['description']
snat = module.params['snat'] snat = module.params['snat']
route_advertisement_state = module.params['route_advertisement_state']
default_persistence_profile = fq_name(partition, module.params['default_persistence_profile']) default_persistence_profile = fq_name(partition, module.params['default_persistence_profile'])
if 1 > port > 65535: if 1 > port > 65535:
@ -639,6 +668,7 @@ def main():
set_description(api, name, description) set_description(api, name, description)
set_default_persistence_profiles(api, name, default_persistence_profile) set_default_persistence_profiles(api, name, default_persistence_profile)
set_state(api, name, state) set_state(api, name, state)
set_route_advertisement_state(api, destination, partition, route_advertisement_state)
result = {'changed': True} result = {'changed': True}
except bigsuds.OperationFailed as e: except bigsuds.OperationFailed as e:
raise Exception('Error on creating Virtual Server : %s' % e) raise Exception('Error on creating Virtual Server : %s' % e)
@ -663,6 +693,7 @@ def main():
result['changed'] |= set_rules(api, name, all_rules) result['changed'] |= set_rules(api, name, all_rules)
result['changed'] |= set_default_persistence_profiles(api, name, default_persistence_profile) result['changed'] |= set_default_persistence_profiles(api, name, default_persistence_profile)
result['changed'] |= set_state(api, name, state) result['changed'] |= set_state(api, name, state)
result['changed'] |= set_route_advertisement_state(api, destination, partition, route_advertisement_state)
api.System.Session.submit_transaction() api.System.Session.submit_transaction()
except Exception as e: except Exception as e:
raise Exception("Error on updating Virtual Server : %s" % e) raise Exception("Error on updating Virtual Server : %s" % e)