def createpool(self, format=None): response.content_type = "application/json" has_members = False ids = None ips = None use_primary = True if 'pool' in request.params: pool = request.params['pool'] else: session['flash'] = 'Pool was not created' session.save() if format == 'json': return '{"success": false}' else: return redirect(url(controller='loadbalancer', action='index')) if 'ids[]' in request.params: ids = [v for k, v in request.params.items() if 'ids[]' in k] if 'use_secondary' in request.params: use_primary = False if 'ips[]' in request.params: ips = [v for k, v in request.params.items() if 'ips[]' in k] if ips or ids: if 'port' in request.params: port = request.params['port'] has_members = True else: ids, ips, port = None, None, None lb = LoadBalancer(ip='your_lb_ip') mem_seq = lb.b.LocalLB.Pool.typefactory.create( 'Common.IPPortDefinitionSequence') if ids: if use_primary: mem_seq.item = [lb._member_factory( ':'.join([Session.query(Node.primary_ip)\ .filter(Node.id == id)\ .first()[0], port])) for id in ids] else: mem_seq.item = [lb._member_factory( ':'.join([Session.query(Node.secondary_ip)\ .filter(Node.id == id)\ .first()[0], port])) for id in ids] elif ips: mem_seq.item = [ lb._member_factory(':'.join([ip, port])) for ip in ips ] if not has_members: mem_seq = [] lb.create_pool(pool, mem_seq) data = {} data['pool'] = pool if ids: data['hosts'] = [ Session.query(Node)\ .filter(Node.id == id).first()\ for id in ids ] if ips: data['hosts'] = [ Session.query(Node)\ .filter(or_(Node.primary_ip.in_([ips]), Node.secondary_ip.in_([ips])))\ .first() for id in ids ] ae = ActivityEngine(Session, session['active_user']['user_id']) status = ae.create('loadbalancer', data) session['flash'] = status session.save() if format == 'json': return '{"success": true}' else: return redirect(url(controller='loadbalancer', action='index'))
def createpool(self, format=None): response.content_type = "application/json" has_members = False ids = None ips = None use_primary = True if 'pool' in request.params: pool = request.params['pool'] else: session['flash'] = 'Pool was not created' session.save() if format == 'json': return '{"success": false}' else: return redirect(url( controller='loadbalancer', action='index')) if 'ids[]' in request.params: ids = [v for k,v in request.params.items() if 'ids[]' in k] if 'use_secondary' in request.params: use_primary = False if 'ips[]' in request.params: ips = [v for k,v in request.params.items() if 'ips[]' in k] if ips or ids: if 'port' in request.params: port = request.params['port'] has_members = True else: ids,ips,port = None,None,None lb = LoadBalancer(ip='your_lb_ip') mem_seq = lb.b.LocalLB.Pool.typefactory.create( 'Common.IPPortDefinitionSequence') if ids: if use_primary: mem_seq.item = [lb._member_factory( ':'.join([Session.query(Node.primary_ip)\ .filter(Node.id == id)\ .first()[0], port])) for id in ids] else: mem_seq.item = [lb._member_factory( ':'.join([Session.query(Node.secondary_ip)\ .filter(Node.id == id)\ .first()[0], port])) for id in ids] elif ips: mem_seq.item = [lb._member_factory( ':'.join([ip, port])) for ip in ips] if not has_members: mem_seq = [] lb.create_pool(pool, mem_seq) data = {} data['pool'] = pool if ids: data['hosts'] = [ Session.query(Node)\ .filter(Node.id == id).first()\ for id in ids ] if ips: data['hosts'] = [ Session.query(Node)\ .filter(or_(Node.primary_ip.in_([ips]), Node.secondary_ip.in_([ips])))\ .first() for id in ids ] ae = ActivityEngine( Session, session['active_user']['user_id']) status = ae.create('loadbalancer', data) session['flash'] = status session.save() if format == 'json': return '{"success": true}' else: return redirect(url( controller='loadbalancer', action='index'))
def removehost(self, format=None): valid = False response.content_type = "application/json" ids = [] ips = [] data = {} ports = [] if 'ids[]' in request.params: ids = [v for k, v in request.params.items() if 'ids[]' in k] if 'ips[]' in request.params: ips = [v for k, v in request.params.items() if 'ips[]' in k] if 'pool' in request.params: pool = request.params['pool'] if 'ports[]' in request.params: ports = [v for k,v in request.params.items()\ if 'ports[]' in k] if ids or ips: if ports: valid = True if not valid: session['flash'] = 'No ids were sent' session.save() if format == 'json': return '{"success": false}' else: return redirect(url(controller='loadbalancer', action='index')) lb = LoadBalancer(ip='your_lb_ip') members = lb.b.LocalLB.Pool.typefactory.create( 'Common.IPPortDefinitionSequence') if ids: data['hosts'] = [ q[0] for q in\ Session.query(Node.hostname)\ .filter(Node.id.in_(ids)).all() ] members.item = [lb._member_factory( ':'.join([Session.query(Node.primary_ip)\ .filter(Node.id == id).first()[0], ports[i]])) for i,id in enumerate(ids)] if ips: data['hosts'] = [ q[0] for q in \ Session.query(Node.hostname)\ .filter(or_(Node.primary_ip.in_(ips), Node.secondary_ip.in_(ips)))\ .all() ] members.item = [ lb._member_factory(':'.join(ip, ports[i])) for i, ip in enumerate(ips) ] lb.remove_members(pool, members) data['type'] = 'remove' data['pool'] = pool ae = ActivityEngine(Session, session['active_user']['user_id']) status = ae.update('loadbalancer', None, data) session['flash'] = status session.save() if format == 'json': return '{"success": true}' else: return redirect(url(controller='loadbalancer', action='index'))
def removehost(self, format=None): valid = False response.content_type = "application/json" ids = [] ips = [] data = {} ports = [] if 'ids[]' in request.params: ids = [v for k,v in request.params.items() if 'ids[]' in k] if 'ips[]' in request.params: ips = [v for k,v in request.params.items() if 'ips[]' in k] if 'pool' in request.params: pool = request.params['pool'] if 'ports[]' in request.params: ports = [v for k,v in request.params.items()\ if 'ports[]' in k] if ids or ips: if ports: valid = True if not valid: session['flash'] = 'No ids were sent' session.save() if format == 'json': return '{"success": false}' else: return redirect(url( controller='loadbalancer', action='index')) lb = LoadBalancer(ip='your_lb_ip') members = lb.b.LocalLB.Pool.typefactory.create( 'Common.IPPortDefinitionSequence') if ids: data['hosts'] = [ q[0] for q in\ Session.query(Node.hostname)\ .filter(Node.id.in_(ids)).all() ] members.item = [lb._member_factory( ':'.join([Session.query(Node.primary_ip)\ .filter(Node.id == id).first()[0], ports[i]])) for i,id in enumerate(ids)] if ips: data['hosts'] = [ q[0] for q in \ Session.query(Node.hostname)\ .filter(or_(Node.primary_ip.in_(ips), Node.secondary_ip.in_(ips)))\ .all() ] members.item = [lb._member_factory( ':'.join(ip, ports[i])) for i,ip in enumerate(ips)] lb.remove_members(pool, members) data['type'] = 'remove' data['pool'] = pool ae = ActivityEngine( Session, session['active_user']['user_id']) status = ae.update('loadbalancer', None, data) session['flash'] = status session.save() if format == 'json': return '{"success": true}' else: return redirect(url( controller='loadbalancer', action='index'))