summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/synopsis.txt3
-rwxr-xr-xsrc/fapi24
2 files changed, 26 insertions, 1 deletions
diff --git a/docs/synopsis.txt b/docs/synopsis.txt
index c4e4e07..593f214 100644
--- a/docs/synopsis.txt
+++ b/docs/synopsis.txt
@@ -31,7 +31,8 @@ Synopsis:
monitor NAME get desc|state
node
node NODENAME create|delete
- node NODENAME get detail|status
+ node NODENAME get detail|status|ratio
+ node NODENAME set ratio RATIO
pool
pool NAME add member MEMBER:PORT
pool NAME add monitor MONITOR
diff --git a/src/fapi b/src/fapi
index 3d3b6e6..78e652e 100755
--- a/src/fapi
+++ b/src/fapi
@@ -84,6 +84,8 @@ class FapiBase(object):
' pool NAME del monitors',
' pool NAME get detail|lbmethod|members|monitor|status',
' pool NAME set lbmethod LBMETHOD',
+ ' poolmember NAME MEMBER:PORT get ratio',
+ ' poolmember NAME MEMBER:PORT set ratio RATIO',
' vip',
' vip NAME create NETMASK',
' vip NAME get arp|detail|status|tgroup',
@@ -385,6 +387,26 @@ class Fapi(FapiBase):
# Removes all monitor associations, not just one
return lambda: f5().remove_monitor_association([a.name])
+
+ def __do_poolmember(self, f5):
+ ''' Do stuff concerning poolmebers '''
+ a = self._args
+ member = a.sub
+ if not member:
+ return lambda: f5().get_ratio([a.name])
+ elif a.sub2 == 'get':
+ if a.sub3 == 'ratio':
+ return lambda: f5().get_ratio([a.name])
+ elif a.sub2 == 'set':
+ if a.sub3 == 'ratio':
+ ratio = a.sub4
+ _, ip, port = self.lookup(member)
+ ipport = { "address": ip, "port": port }
+ memberratio = { "member": ipport, "ratio": ratio }
+ return lambda: memberratio
+ return lambda: f5().set_ratio([a.name], [[memberratio]])
+
+
def __do_vserver(self, f5):
''' Do stuff concerning virtual servers '''
a = self._args
@@ -771,6 +793,8 @@ class Fapi(FapiBase):
return self.__do_monitor(lambda: self._f5.LocalLB.Monitor)
elif a.what == 'pool':
return self.__do_pool(lambda: self._f5.LocalLB.Pool)
+ elif a.what == 'poolmember':
+ return self.__do_poolmember(lambda: self._f5.LocalLB.PoolMember)
elif a.what == 'vserver':
return self.__do_vserver(lambda: self._f5.LocalLB.VirtualServer)
elif a.what == 'vip':