Client additions

1. Fill out more client functions
2. Fix some argparse options
3. We are using id, not lbid for the load balancer id
This commit is contained in:
Andrew Hutchings
2012-10-23 14:17:06 +01:00
parent f799c99011
commit 7e64604c9f
3 changed files with 35 additions and 13 deletions

View File

@@ -102,14 +102,14 @@ class ClientOptions(object):
)
sp.add_argument('--id', help='load balancer ID', required=True)
sp.add_argument('--node', help='node to add in ip:port form',
required=True)
required=True, action='append')
sp = subparsers.add_parser(
'node-modify', help='modify node in a load balancer'
)
sp.add_argument('--id', help='load balancer ID', required=True)
sp.add_argument('--nodeid', help='node ID to modify', required=True)
sp.add_argument('--node', help='the new node address in ip:port form',
required=True)
sp.add_argument('--condition', help='the new state for the node',
choices=['ENABLED', 'DISABLED'], required=True)
sp = subparsers.add_parser(
'node-status', help='get status of a node in a load balancer'
)

View File

@@ -36,7 +36,7 @@ class LibraAPI(object):
self._render_list(column_names, columns, body['loadBalancers'])
def status_lb(self, args):
resp, body = self._get('/loadbalancers/{0}'.format(args.lbid))
resp, body = self._get('/loadbalancers/{0}'.format(args.id))
column_names = ['ID', 'Name', 'Protocol', 'Port', 'Algorithm',
'Status', 'Created', 'Updated', 'IPs', 'Nodes',
'Persistence Type', 'Connection Throttle']
@@ -46,7 +46,7 @@ class LibraAPI(object):
self._render_dict(column_names, columns, body)
def delete_lb(self, args):
self._delete('/loadbalancers/{0}'.format(args.lbid))
self._delete('/loadbalancers/{0}'.format(args.id))
def create_lb(self, args):
data = {}
@@ -77,22 +77,44 @@ class LibraAPI(object):
data['name'] = args.name
if args.algorithm is not None:
data['algorithm'] = args.algorithm
self._put('/loadbalancers/{0}'.format(args.lbid), body=data)
self._put('/loadbalancers/{0}'.format(args.id), body=data)
def node_list_lb(self, args):
pass
resp, body = self._get('/loadbalaners/{0}/nodes'.format(args.id))
column_names = ['ID', 'Address', 'Port', 'Condition', 'Status']
columns = ['id', 'address', 'port', 'condition', 'status']
self._render_list(column_names, columns, body['nodes'])
def node_delete_lb(self, args):
pass
self._delete('/loadbalancers/{0}/nodes/{1}'
.format(args.id, args.nodeid))
def node_add_lb(self, args):
pass
data = {}
nodes = []
for node in args.node:
addr = node.split(':')
nodes.append({'address': addr[0], 'port': addr[1],
'condition': 'ENABLED'})
data['nodes'] = nodes
resp, body = self._post('/loadbalancers/{0}/nodes'
.format(args.id), body=data)
column_names = ['ID', 'Address', 'Port', 'Condition', 'Status']
columns = ['id', 'address', 'port', 'condition', 'status']
self._render_list(column_names, columns, body['nodes'])
def node_modify_lb(self, args):
pass
data = {'condition': args.condition}
self._put('/loadbalancers/{0}/nodes/{1}'
.format(args.id, args.nodeid), body=data)
def node_status_lb(self, args):
pass
resp, body = self._get('/loadbalaners/{0}/nodes/{1}'
.format(args.id, args.nodeid))
column_names = ['ID', 'Address', 'Port', 'Condition', 'Status']
columns = ['id', 'address', 'port', 'condition', 'status']
self._render_list(column_names, columns, body['nodes'])
def _render_list(self, column_names, columns, data):
table = prettytable.PrettyTable(column_names)

View File

@@ -10,7 +10,7 @@ from libra.client.libraapi import LibraAPI
class DummyArgs(object):
""" Fake argparse response """
def __init__(self):
self.lbid = 2000
self.id = 2000
class DummyCreateArgs(object):
""" Fake argparse response for Create function """
@@ -24,7 +24,7 @@ class DummyCreateArgs(object):
class DummyModifyArgs(object):
""" Fake argparse response for Modify function """
def __init__(self):
self.lbid = 2012
self.id = 2012
self.name = 'a-modified-loadbalancer'
self.algorithm = 'LEAST_CONNECTIONS'