def take_gateway(netspace, ip, host): net = Network.get_by_netspace(netspace) if not net: print 'net %s not found' % netspace return ipnum = IPAddress(ip).value rds.srem(net.gatekey, ipnum) VLanGateway.create(ipnum, net.id, host.id) print '%s on %s --> %s done' % (ip, host.ip, netspace)
def acquire_specific_ip(self, ip_str): """take a specific IP from network""" try: ip = IPAddress(ip_str) except ValueError: return None if rds.sismember(self.storekey, ip.value): rds.srem(self.storekey, ip.value) return IP.create(ip.value, self)
def add_ip(self, ip): if isinstance(ip, basestring): try: ip = IPAddress(ip) except AddrFormatError: return False ipnum = ip.value if rds.sismember(self.gatekey, ipnum): rds.srem(self.gatekey, ipnum) rds.sadd(self.storekey, ipnum) return True
def fix_ip(n): network = n.network base = int(network.network_address) for ipnums in more_itertools.chunked(xrange(base+n.gateway_count, base+network.num_addresses), 500): rds.sadd(n.storekey, *ipnums) rds.sadd(n.gatekey, *range(base, base+n.gateway_count)) for ip in n.ips.all(): rds.srem(n.storekey, ip.ipnum) for gateway in n.gates.all(): rds.srem(n.gatekey, gateway.ipnum)
def fix_ip(n): network = n.network base = int(network.network_address) for ipnums in more_itertools.chunked( xrange(base + n.gateway_count, base + network.num_addresses), 500): rds.sadd(n.storekey, *ipnums) rds.sadd(n.gatekey, *range(base, base + n.gateway_count)) for ip in n.ips.all(): rds.srem(n.storekey, ip.ipnum) for gateway in n.gates.all(): rds.srem(n.gatekey, gateway.ipnum)
def get_eip(self, eip=None): if eip is None: value = rds.spop(self.EIP_POOL_KEY) return value and IPAddress(value) or None value = rds.srem(self.EIP_POOL_KEY, eip.value) return value and eip or None
def remove_container_backends(container): backends = container.get_backends() if backends: rds.srem(_entrypoint_key(container), *backends)