Revision 9757cc90
b/lib/cmdlib.py | ||
---|---|---|
8520 | 8520 |
self.success = self.info = self.nodes = None |
8521 | 8521 |
if self.mode == constants.IALLOCATOR_MODE_ALLOC: |
8522 | 8522 |
keyset = self._ALLO_KEYS |
8523 |
fn = self._AddNewInstance |
|
8523 | 8524 |
elif self.mode == constants.IALLOCATOR_MODE_RELOC: |
8524 | 8525 |
keyset = self._RELO_KEYS |
8526 |
fn = self._AddRelocateInstance |
|
8525 | 8527 |
else: |
8526 | 8528 |
raise errors.ProgrammerError("Unknown mode '%s' passed to the" |
8527 | 8529 |
" IAllocator" % self.mode) |
... | ... | |
8534 | 8536 |
if key not in kwargs: |
8535 | 8537 |
raise errors.ProgrammerError("Missing input parameter '%s' to" |
8536 | 8538 |
" IAllocator" % key) |
8537 |
self._BuildInputData() |
|
8539 |
self._BuildInputData(fn)
|
|
8538 | 8540 |
|
8539 | 8541 |
def _ComputeClusterData(self): |
8540 | 8542 |
"""Compute the generic allocator input data. |
... | ... | |
8673 | 8675 |
done. |
8674 | 8676 |
|
8675 | 8677 |
""" |
8676 |
data = self.in_data |
|
8677 |
|
|
8678 | 8678 |
disk_space = _ComputeDiskSize(self.disk_template, self.disks) |
8679 | 8679 |
|
8680 | 8680 |
if self.disk_template in constants.DTS_NET_MIRROR: |
... | ... | |
8682 | 8682 |
else: |
8683 | 8683 |
self.required_nodes = 1 |
8684 | 8684 |
request = { |
8685 |
"type": "allocate", |
|
8686 | 8685 |
"name": self.name, |
8687 | 8686 |
"disk_template": self.disk_template, |
8688 | 8687 |
"tags": self.tags, |
... | ... | |
8694 | 8693 |
"nics": self.nics, |
8695 | 8694 |
"required_nodes": self.required_nodes, |
8696 | 8695 |
} |
8697 |
data["request"] = request
|
|
8696 |
return request
|
|
8698 | 8697 |
|
8699 | 8698 |
def _AddRelocateInstance(self): |
8700 | 8699 |
"""Add relocate instance data to allocator structure. |
... | ... | |
8724 | 8723 |
disk_space = _ComputeDiskSize(instance.disk_template, disk_sizes) |
8725 | 8724 |
|
8726 | 8725 |
request = { |
8727 |
"type": "relocate", |
|
8728 | 8726 |
"name": self.name, |
8729 | 8727 |
"disk_space_total": disk_space, |
8730 | 8728 |
"required_nodes": self.required_nodes, |
8731 | 8729 |
"relocate_from": self.relocate_from, |
8732 | 8730 |
} |
8733 |
self.in_data["request"] = request
|
|
8731 |
return request
|
|
8734 | 8732 |
|
8735 |
def _BuildInputData(self): |
|
8733 |
def _BuildInputData(self, fn):
|
|
8736 | 8734 |
"""Build input data structures. |
8737 | 8735 |
|
8738 | 8736 |
""" |
8739 | 8737 |
self._ComputeClusterData() |
8740 | 8738 |
|
8741 |
if self.mode == constants.IALLOCATOR_MODE_ALLOC: |
|
8742 |
self._AddNewInstance() |
|
8743 |
else: |
|
8744 |
self._AddRelocateInstance() |
|
8739 |
request = fn() |
|
8740 |
request["type"] = self.mode |
|
8741 |
self.in_data["request"] = request |
|
8745 | 8742 |
|
8746 | 8743 |
self.in_text = serializer.Dump(self.in_data) |
8747 | 8744 |
|
Also available in: Unified diff