def execute(self, action, actionargs=None, vs=None, rs=None): """ Execute an action. """ if action not in [ "enable", "disable", "operenable", "operdisable", "enableall", "disableall" ]: yield None return v, httpclass, rip, port = self.parse(vs, rs) if rip is None: yield {} return orip = ip2oid(rip) if action == "enableall" or action == "disableall": d = defer.waitForDeferred( self.proxy.set( (self.oids['ltmNodeAddrNewSessionEnable'], orip), (action == "enableall") and 2 or 1)) yield d d.getResult() yield True return # Get pool ov = str2oid(v) if httpclass is None: p = defer.waitForDeferred( self.cache_or_get(('ltmVirtualServDefaultPool', ov))) else: oc = str2oid(httpclass) p = defer.waitForDeferred( self.cache_or_get(('ltmHttpClassPoolName', oc))) yield p p = p.getResult() op = str2oid(p) d = defer.waitForDeferred( self.proxy.set( (self.oids['ltmPoolMemberNewSessionEnable'], op, orip, port), action.endswith("enable") and 2 or 1)) yield d d.getResult() yield True return
def execute(self, action, actionargs=None, vs=None, rs=None): """ Execute an action. """ if action not in ["enable", "disable", "operenable", "operdisable", "enableall", "disableall"]: yield None return v, httpclass, rip, port = self.parse(vs, rs) if rip is None: yield {} return orip = ip2oid(rip) if action == "enableall" or action == "disableall": d = defer.waitForDeferred( self.proxy.set((self.oids['ltmNodeAddrNewSessionEnable'], orip), (action == "enableall") and 2 or 1)) yield d d.getResult() yield True return # Get pool ov = str2oid(v) if httpclass is None: p = defer.waitForDeferred(self.cache_or_get(('ltmVirtualServDefaultPool', ov))) else: oc = str2oid(httpclass) p = defer.waitForDeferred(self.cache_or_get(('ltmHttpClassPoolName', oc))) yield p p = p.getResult() op = str2oid(p) d = defer.waitForDeferred( self.proxy.set((self.oids['ltmPoolMemberNewSessionEnable'], op, orip, port), action.endswith("enable") and 2 or 1)) yield d d.getResult() yield True return
def process_rs(self, v, httpclass, rip, port): """ Process data for a given virtual server and real server. @param v: virtual server @param httpclass: HTTP class (or C{None} for default pool) @param rip: real IP @param port: port """ # Retrieve some data if needed: ov = str2oid(v) orip = ip2oid(rip) if httpclass is None: p = defer.waitForDeferred(self.cache_or_get(('ltmVirtualServDefaultPool', ov))) else: oc = str2oid(httpclass) p = defer.waitForDeferred(self.cache_or_get(('ltmHttpClassPoolName', oc))) yield p p = p.getResult() op = str2oid(p) oids = [] for o in self.oids: if o.startswith("ltmPoolMbr") or o.startswith("ltmPoolMember"): oids.append((o, op, orip, port)) oids = tuple(oids) c = defer.waitForDeferred(self.cache_or_get(*oids)) yield c c.getResult() oids = [] for o in self.oids: if o.startswith("ltmNodeAddr"): oids.append((o, orip)) oids = tuple(oids) c = defer.waitForDeferred(self.cache_or_get(*oids)) yield c c.getResult() name = self.cache(('ltmNodeAddrScreenName', orip)) protocol = defer.waitForDeferred(self.get_protocol(ov)) yield protocol protocol = protocol.getResult() weight = self.cache(('ltmPoolMemberWeight', op, orip, port)) avail, enabled, session = self.cache( ('ltmPoolMbrStatusAvailState', op, orip, port), ('ltmPoolMbrStatusEnabledState', op, orip, port), ('ltmPoolMemberSessionStatus', op, orip, port)) if session != 1 or self.enabledstates[enabled] != "enabled": state = "disabled" else: state = self.availstates[avail] rs = RealServer(name, rip, port, protocol, weight, state) rs.extra["detailed reason"] = self.cache(('ltmPoolMbrStatusDetailReason', op, orip, port)) rs.extra["monitor rule"] = self.cache(('ltmPoolMemberMonitorRule', op, orip, port)) # Actions if self.proxy.writable: # ltmPoolMemberNewSessionEnable == 1 means user disabled if self.cache(('ltmPoolMemberNewSessionEnable', op, orip, port)) != 1: rs.actions['disable'] = 'Disable (permanent)' else: rs.actions['enable'] = 'Enable (permanent)' if self.cache(('ltmNodeAddrNewSessionEnable', orip)) != 1: rs.actions['disableall'] = 'Disable globally (permanent)' else: rs.actions['enableall'] = 'Enable globally (permanent)' yield rs return
def process_rs(self, v, httpclass, rip, port): """ Process data for a given virtual server and real server. @param v: virtual server @param httpclass: HTTP class (or C{None} for default pool) @param rip: real IP @param port: port """ # Retrieve some data if needed: ov = str2oid(v) orip = ip2oid(rip) if httpclass is None: p = defer.waitForDeferred( self.cache_or_get(('ltmVirtualServDefaultPool', ov))) else: oc = str2oid(httpclass) p = defer.waitForDeferred( self.cache_or_get(('ltmHttpClassPoolName', oc))) yield p p = p.getResult() op = str2oid(p) oids = [] for o in self.oids: if o.startswith("ltmPoolMbr") or o.startswith("ltmPoolMember"): oids.append((o, op, orip, port)) oids = tuple(oids) c = defer.waitForDeferred(self.cache_or_get(*oids)) yield c c.getResult() oids = [] for o in self.oids: if o.startswith("ltmNodeAddr"): oids.append((o, orip)) oids = tuple(oids) c = defer.waitForDeferred(self.cache_or_get(*oids)) yield c c.getResult() name = self.cache(('ltmNodeAddrScreenName', orip)) protocol = defer.waitForDeferred(self.get_protocol(ov)) yield protocol protocol = protocol.getResult() weight = self.cache(('ltmPoolMemberWeight', op, orip, port)) avail, enabled, session = self.cache( ('ltmPoolMbrStatusAvailState', op, orip, port), ('ltmPoolMbrStatusEnabledState', op, orip, port), ('ltmPoolMemberSessionStatus', op, orip, port)) if session != 1 or self.enabledstates[enabled] != "enabled": state = "disabled" else: state = self.availstates[avail] rs = RealServer(name, rip, port, protocol, weight, state) rs.extra["detailed reason"] = self.cache( ('ltmPoolMbrStatusDetailReason', op, orip, port)) rs.extra["monitor rule"] = self.cache( ('ltmPoolMemberMonitorRule', op, orip, port)) # Actions if self.proxy.writable: # ltmPoolMemberNewSessionEnable == 1 means user disabled if self.cache( ('ltmPoolMemberNewSessionEnable', op, orip, port)) != 1: rs.actions['disable'] = 'Disable (permanent)' else: rs.actions['enable'] = 'Enable (permanent)' if self.cache(('ltmNodeAddrNewSessionEnable', orip)) != 1: rs.actions['disableall'] = 'Disable globally (permanent)' else: rs.actions['enableall'] = 'Enable globally (permanent)' yield rs return