Revision fb60bc6a lib/masterd/iallocator.py
b/lib/masterd/iallocator.py | ||
---|---|---|
153 | 153 |
("nics", ht.TListOf(ht.TDict)), |
154 | 154 |
("vcpus", ht.TInt), |
155 | 155 |
("hypervisor", ht.TString), |
156 |
("node_whitelist", ht.TMaybeListOf(ht.TNonEmptyString)), |
|
156 | 157 |
] |
157 | 158 |
REQ_RESULT = ht.TList |
158 | 159 |
|
... | ... | |
421 | 422 |
|
422 | 423 |
if isinstance(self.req, IAReqInstanceAlloc): |
423 | 424 |
hypervisor_name = self.req.hypervisor |
425 |
node_whitelist = self.req.node_whitelist |
|
424 | 426 |
elif isinstance(self.req, IAReqRelocate): |
425 | 427 |
hypervisor_name = cfg.GetInstanceInfo(self.req.name).hypervisor |
428 |
node_whitelist = None |
|
426 | 429 |
else: |
427 | 430 |
hypervisor_name = cluster_info.primary_hypervisor |
431 |
node_whitelist = None |
|
428 | 432 |
|
429 | 433 |
node_data = self.rpc.call_node_info(node_list, [cfg.GetVGName()], |
430 | 434 |
[hypervisor_name]) |
... | ... | |
434 | 438 |
|
435 | 439 |
data["nodegroups"] = self._ComputeNodeGroupData(cfg) |
436 | 440 |
|
437 |
config_ndata = self._ComputeBasicNodeData(cfg, ninfo) |
|
441 |
config_ndata = self._ComputeBasicNodeData(cfg, ninfo, node_whitelist)
|
|
438 | 442 |
data["nodes"] = self._ComputeDynamicNodeData(ninfo, node_data, node_iinfo, |
439 | 443 |
i_list, config_ndata) |
440 | 444 |
assert len(data["nodes"]) == len(ninfo), \ |
... | ... | |
461 | 465 |
return ng |
462 | 466 |
|
463 | 467 |
@staticmethod |
464 |
def _ComputeBasicNodeData(cfg, node_cfg): |
|
468 |
def _ComputeBasicNodeData(cfg, node_cfg, node_whitelist):
|
|
465 | 469 |
"""Compute global node data. |
466 | 470 |
|
467 | 471 |
@rtype: dict |
... | ... | |
473 | 477 |
"tags": list(ninfo.GetTags()), |
474 | 478 |
"primary_ip": ninfo.primary_ip, |
475 | 479 |
"secondary_ip": ninfo.secondary_ip, |
476 |
"offline": ninfo.offline, |
|
480 |
"offline": (ninfo.offline or |
|
481 |
not (node_whitelist is None or |
|
482 |
ninfo.name in node_whitelist)), |
|
477 | 483 |
"drained": ninfo.drained, |
478 | 484 |
"master_candidate": ninfo.master_candidate, |
479 | 485 |
"group": ninfo.group, |
Also available in: Unified diff