def fix_core(host): containers = Container.get_multi_by_host(host) # 没有的话, 直接销毁重建 if not containers: rds.delete(host._cores_key) _create_cores_on_host(host, host.ncore) return data = {str(i): host.core_share for i in xrange(host.ncore)} for c in containers: cores = c.cores nshare = int(cores.get("nshare", "0")) for e in cores.get("full", []): e.remain = host.core_share data.pop(e.label) for s in cores.get("part", []): s.remain = host.core_share - nshare data[s.label] -= nshare c.cores = cores rds.delete(host._cores_key) if data: rds.zadd(host._cores_key, **data) print "done", host
def _create_cores_on_host(host, count): data = {str(i): host.pod.core_share for i in xrange(count)} rds.zadd(host._cores_key, **data)