Added new option to select the active a10 partition (#2628)

* Added new option to select the active a10 partition

* added version_added to the description of the new option

* added RETURN documentation

* fixed indents

* Removed empty cases, removed unneeded aliases

* removed artifacts from merging

* updated version_added to 2.3

* removed host, username and password option

* removed write_config and validate_certs documentation
This commit is contained in:
Dorian Dietzel 2016-11-30 16:08:53 +01:00 committed by Matt Clay
parent fa4b353da8
commit 1f32d68310
3 changed files with 57 additions and 1 deletions

View file

@ -34,6 +34,12 @@ notes:
- Requires A10 Networks aXAPI 2.1. - Requires A10 Networks aXAPI 2.1.
extends_documentation_fragment: a10 extends_documentation_fragment: a10
options: options:
partition:
version_added: "2.3"
description:
- set active-partition
required: false
default: null
server_name: server_name:
description: description:
- The SLB (Server Load Balancer) server name. - The SLB (Server Load Balancer) server name.
@ -87,6 +93,7 @@ EXAMPLES = '''
host: a10.mydomain.com host: a10.mydomain.com
username: myadmin username: myadmin
password: mypassword password: mypassword
partition: mypartition
server: test server: test
server_ip: 1.1.1.100 server_ip: 1.1.1.100
server_ports: server_ports:
@ -97,6 +104,15 @@ EXAMPLES = '''
''' '''
RETURN = '''
content:
description: the full info regarding the slb_server
returned: success
type: string
sample: "mynewserver"
'''
VALID_PORT_FIELDS = ['port_num', 'protocol', 'status'] VALID_PORT_FIELDS = ['port_num', 'protocol', 'status']
def validate_ports(module, ports): def validate_ports(module, ports):
@ -142,6 +158,7 @@ def main():
server_ip=dict(type='str', aliases=['ip', 'address']), server_ip=dict(type='str', aliases=['ip', 'address']),
server_status=dict(type='str', default='enabled', aliases=['status'], choices=['enabled', 'disabled']), server_status=dict(type='str', default='enabled', aliases=['status'], choices=['enabled', 'disabled']),
server_ports=dict(type='list', aliases=['port'], default=[]), server_ports=dict(type='list', aliases=['port'], default=[]),
partition=dict(type='str', default=[]),
) )
) )
@ -151,6 +168,7 @@ def main():
) )
host = module.params['host'] host = module.params['host']
partition = module.params['partition']
username = module.params['username'] username = module.params['username']
password = module.params['password'] password = module.params['password']
state = module.params['state'] state = module.params['state']
@ -185,6 +203,8 @@ def main():
if slb_server_status: if slb_server_status:
json_post['server']['status'] = axapi_enabled_disabled(slb_server_status) json_post['server']['status'] = axapi_enabled_disabled(slb_server_status)
slb_server_partition = axapi_call(module, session_url + '&method=system.partition.active', json.dumps({'name': partition}))
slb_server_data = axapi_call(module, session_url + '&method=slb.server.search', json.dumps({'name': slb_server})) slb_server_data = axapi_call(module, session_url + '&method=slb.server.search', json.dumps({'name': slb_server}))
slb_server_exists = not axapi_failure(slb_server_data) slb_server_exists = not axapi_failure(slb_server_data)

View file

@ -35,6 +35,12 @@ notes:
- When a server doesn't exist and is added to the service-group the server will be created. - When a server doesn't exist and is added to the service-group the server will be created.
extends_documentation_fragment: a10 extends_documentation_fragment: a10
options: options:
partition:
version_added: "2.3"
description:
- set active-partition
required: false
default: null
service_group: service_group:
description: description:
- The SLB (Server Load Balancing) service-group name - The SLB (Server Load Balancing) service-group name
@ -82,6 +88,7 @@ EXAMPLES = '''
host: a10.mydomain.com host: a10.mydomain.com
username: myadmin username: myadmin
password: mypassword password: mypassword
partition: mypartition
service_group: sg-80-tcp service_group: sg-80-tcp
servers: servers:
- server: foo1.mydomain.com - server: foo1.mydomain.com
@ -96,6 +103,14 @@ EXAMPLES = '''
''' '''
RETURN = '''
content:
description: the full info regarding the slb_service_group
returned: success
type: string
sample: "mynewservicegroup"
'''
VALID_SERVICE_GROUP_FIELDS = ['name', 'protocol', 'lb_method'] VALID_SERVICE_GROUP_FIELDS = ['name', 'protocol', 'lb_method']
VALID_SERVER_FIELDS = ['server', 'port', 'status'] VALID_SERVER_FIELDS = ['server', 'port', 'status']
@ -147,6 +162,7 @@ def main():
'src-ip-only-hash', 'src-ip-only-hash',
'src-ip-hash']), 'src-ip-hash']),
servers=dict(type='list', aliases=['server', 'member'], default=[]), servers=dict(type='list', aliases=['server', 'member'], default=[]),
partition=dict(type='str', default=[]),
) )
) )
@ -158,6 +174,7 @@ def main():
host = module.params['host'] host = module.params['host']
username = module.params['username'] username = module.params['username']
password = module.params['password'] password = module.params['password']
partition = module.params['partition']
state = module.params['state'] state = module.params['state']
write_config = module.params['write_config'] write_config = module.params['write_config']
slb_service_group = module.params['service_group'] slb_service_group = module.params['service_group']
@ -199,7 +216,8 @@ def main():
# first we authenticate to get a session id # first we authenticate to get a session id
session_url = axapi_authenticate(module, axapi_base_url, username, password) session_url = axapi_authenticate(module, axapi_base_url, username, password)
# then we select the active-partition
slb_server_partition = axapi_call(module, session_url + '&method=system.partition.active', json.dumps({'name': partition}))
# then we check to see if the specified group exists # then we check to see if the specified group exists
slb_result = axapi_call(module, session_url + '&method=slb.service_group.search', json.dumps({'name': slb_service_group})) slb_result = axapi_call(module, session_url + '&method=slb.service_group.search', json.dumps({'name': slb_service_group}))
slb_service_group_exist = not axapi_failure(slb_result) slb_service_group_exist = not axapi_failure(slb_result)

View file

@ -34,6 +34,12 @@ notes:
- Requires A10 Networks aXAPI 2.1. - Requires A10 Networks aXAPI 2.1.
extends_documentation_fragment: a10 extends_documentation_fragment: a10
options: options:
partition:
version_added: "2.3"
description:
- set active-partition
required: false
default: null
virtual_server: virtual_server:
description: description:
- The SLB (Server Load Balancing) virtual server name. - The SLB (Server Load Balancing) virtual server name.
@ -80,6 +86,7 @@ EXAMPLES = '''
host: a10.mydomain.com host: a10.mydomain.com
username: myadmin username: myadmin
password: mypassword password: mypassword
partition: mypartition
virtual_server: vserver1 virtual_server: vserver1
virtual_server_ip: 1.1.1.1 virtual_server_ip: 1.1.1.1
virtual_server_ports: virtual_server_ports:
@ -95,6 +102,14 @@ EXAMPLES = '''
''' '''
RETURN = '''
content:
description: the full info regarding the slb_virtual
returned: success
type: string
sample: "mynewvirtualserver"
'''
VALID_PORT_FIELDS = ['port', 'protocol', 'service_group', 'status'] VALID_PORT_FIELDS = ['port', 'protocol', 'service_group', 'status']
def validate_ports(module, ports): def validate_ports(module, ports):
@ -143,6 +158,7 @@ def main():
virtual_server_ip=dict(type='str', aliases=['ip', 'address'], required=True), virtual_server_ip=dict(type='str', aliases=['ip', 'address'], required=True),
virtual_server_status=dict(type='str', default='enabled', aliases=['status'], choices=['enabled', 'disabled']), virtual_server_status=dict(type='str', default='enabled', aliases=['status'], choices=['enabled', 'disabled']),
virtual_server_ports=dict(type='list', required=True), virtual_server_ports=dict(type='list', required=True),
partition=dict(type='str', default=[]),
) )
) )
@ -154,6 +170,7 @@ def main():
host = module.params['host'] host = module.params['host']
username = module.params['username'] username = module.params['username']
password = module.params['password'] password = module.params['password']
partition = module.params['partition']
state = module.params['state'] state = module.params['state']
write_config = module.params['write_config'] write_config = module.params['write_config']
slb_virtual = module.params['virtual_server'] slb_virtual = module.params['virtual_server']
@ -169,6 +186,7 @@ def main():
axapi_base_url = 'https://%s/services/rest/V2.1/?format=json' % host axapi_base_url = 'https://%s/services/rest/V2.1/?format=json' % host
session_url = axapi_authenticate(module, axapi_base_url, username, password) session_url = axapi_authenticate(module, axapi_base_url, username, password)
slb_server_partition = axapi_call(module, session_url + '&method=system.partition.active', json.dumps({'name': partition}))
slb_virtual_data = axapi_call(module, session_url + '&method=slb.virtual_server.search', json.dumps({'name': slb_virtual})) slb_virtual_data = axapi_call(module, session_url + '&method=slb.virtual_server.search', json.dumps({'name': slb_virtual}))
slb_virtual_exists = not axapi_failure(slb_virtual_data) slb_virtual_exists = not axapi_failure(slb_virtual_data)