Update External Datagroups
Problem this snippet solves:
This snippet allows users to add/update external data groups.
How to use this snippet:
The external data groups must be uploaded via scp (or pasted into files) before this code will work.
Code :
# the data file must be transferred to the target LTM via scp or something similar
# the file name and full path must match DG_SRC
import requests, json
# define program-wide variables
BIGIP_ADDRESS = '192.168.1.41'
BIGIP_USER = 'admin'
BIGIP_PASS = 'admin'
DG_FILE = 'Data'
DG_SRC1 = 'file:/var/tmp/PreviousData.txt'
DG_TYPE = 'string'
EXT_DG_NAME = 'Data'
DG_SRC2 = 'file:/var/tmp/CurrentData.txt'
# get data-group info
def get_dg(bigip):
r = bigip.get('%s/ltm/data-group' % BIGIP_URL_BASE)
print json.dumps(r.json())
def create_sys_file(bigip):
payload = {}
payload['name'] = DG_FILE
payload['separator'] = ':='
payload['sourcePath'] = DG_SRC1
payload['type'] = DG_TYPE
print json.dumps(payload)
r = bigip.post('%s/sys/file/data-group' % BIGIP_URL_BASE, data=json.dumps(payload))
print json.dumps(r.json())
def create_ext_dg(bigip):
payload = {}
payload['name'] = EXT_DG_NAME
payload['externalFileName'] = '/Common/%s' % DG_FILE
print json.dumps(payload)
r = bigip.post('%s/ltm/data-group/external' % BIGIP_URL_BASE, data=json.dumps(payload))
print json.dumps(r.json())
def update_sys_file(bigip):
payload = {}
payload['name'] = DG_FILE
payload['separator'] = ':='
payload['sourcePath'] = DG_SRC2
print json.dumps(payload)
r = bigip.put('%s/sys/file/data-group/%s' % (BIGIP_URL_BASE, DG_FILE), data=json.dumps(payload))
print json.dumps(r.json())
def update_ext_dg(bigip):
payload = {}
payload['name'] = EXT_DG_NAME
print json.dumps(payload)
r = bigip.put('%s/ltm/data-group/external/%s' % (BIGIP_URL_BASE, DG_FILE), data=json.dumps(payload))
print json.dumps(r.json())
def save_config(bigip):
payload = {}
payload['command'] = 'save'
print json.dumps(payload)
r = bigip.post('%s/sys/config' % BIGIP_URL_BASE, data=json.dumps(payload))
print json.dumps(r.json())
# REST resource for BIG-IP that all other requests will use
bigip = requests.session()
bigip.auth = (BIGIP_USER, BIGIP_PASS)
bigip.verify = False
bigip.headers.update({'Content-Type' : 'application/json'})
print "created REST resource for BIG-IP at %s..." % BIGIP_ADDRESS
# Requests requires a full URL to be sent as arg for every request, define base URL globally here
BIGIP_URL_BASE = 'https://%s/mgmt/tm' % BIGIP_ADDRESS
# get data info
get_dg(bigip)
print "got data group info"
create_sys_file(bigip)
print "created sys file for external data group"
create_ext_dg(bigip)
print "created external data group"
update_sys_file(bigip)
print "updated sys file for external data group"
update_ext_dg(bigip)
print "updated external data group"
save_config(bigip)
print "saved config"Tested this on version:
11.5Published Jun 17, 2015
Version 1.0JRahm
Admin
Christ Follower, Husband, Father, Technologist. I love community and I especially love THIS community. My background is networking, but I've dabbled in all the F5 iStuff, I'm a recovering Perl guy, and am very much a python enthusiast. Learning alongside all of you in this accelerating industry toward modern apps and architectures.JRahm
Admin
Christ Follower, Husband, Father, Technologist. I love community and I especially love THIS community. My background is networking, but I've dabbled in all the F5 iStuff, I'm a recovering Perl guy, and am very much a python enthusiast. Learning alongside all of you in this accelerating industry toward modern apps and architectures.1 Comment
- JRahm
Admin
contributed by Pat Chang