Revision 1532b078 lib/cmdlib/cluster.py
b/lib/cmdlib/cluster.py | ||
---|---|---|
789 | 789 |
enabled_disk_templates = cluster.enabled_disk_templates |
790 | 790 |
return (enabled_disk_templates, new_enabled_disk_templates) |
791 | 791 |
|
792 |
def _CheckIpolicy(self, cluster): |
|
793 |
"""Checks the ipolicy. |
|
794 |
|
|
795 |
@type cluster: C{objects.Cluster} |
|
796 |
@param cluster: the cluster's configuration |
|
797 |
|
|
798 |
""" |
|
799 |
if self.op.ipolicy: |
|
800 |
self.new_ipolicy = GetUpdatedIPolicy(cluster.ipolicy, self.op.ipolicy, |
|
801 |
group_policy=False) |
|
802 |
|
|
803 |
all_instances = self.cfg.GetAllInstancesInfo().values() |
|
804 |
violations = set() |
|
805 |
for group in self.cfg.GetAllNodeGroupsInfo().values(): |
|
806 |
instances = frozenset([inst for inst in all_instances |
|
807 |
if compat.any(nuuid in group.members |
|
808 |
for nuuid in inst.all_nodes)]) |
|
809 |
new_ipolicy = objects.FillIPolicy(self.new_ipolicy, group.ipolicy) |
|
810 |
ipol = masterd.instance.CalculateGroupIPolicy(cluster, group) |
|
811 |
new = ComputeNewInstanceViolations(ipol, new_ipolicy, instances, |
|
812 |
self.cfg) |
|
813 |
if new: |
|
814 |
violations.update(new) |
|
815 |
|
|
816 |
if violations: |
|
817 |
self.LogWarning("After the ipolicy change the following instances" |
|
818 |
" violate them: %s", |
|
819 |
utils.CommaJoin(utils.NiceSort(violations))) |
|
820 |
|
|
792 | 821 |
def CheckPrereq(self): |
793 | 822 |
"""Check prerequisites. |
794 | 823 |
|
... | ... | |
873 | 902 |
for name, values in svalues.items())) |
874 | 903 |
for storage, svalues in new_disk_state.items()) |
875 | 904 |
|
876 |
if self.op.ipolicy: |
|
877 |
self.new_ipolicy = GetUpdatedIPolicy(cluster.ipolicy, self.op.ipolicy, |
|
878 |
group_policy=False) |
|
879 |
|
|
880 |
all_instances = self.cfg.GetAllInstancesInfo().values() |
|
881 |
violations = set() |
|
882 |
for group in self.cfg.GetAllNodeGroupsInfo().values(): |
|
883 |
instances = frozenset([inst for inst in all_instances |
|
884 |
if compat.any(nuuid in group.members |
|
885 |
for nuuid in inst.all_nodes)]) |
|
886 |
new_ipolicy = objects.FillIPolicy(self.new_ipolicy, group.ipolicy) |
|
887 |
ipol = masterd.instance.CalculateGroupIPolicy(cluster, group) |
|
888 |
new = ComputeNewInstanceViolations(ipol, new_ipolicy, instances, |
|
889 |
self.cfg) |
|
890 |
if new: |
|
891 |
violations.update(new) |
|
892 |
|
|
893 |
if violations: |
|
894 |
self.LogWarning("After the ipolicy change the following instances" |
|
895 |
" violate them: %s", |
|
896 |
utils.CommaJoin(utils.NiceSort(violations))) |
|
905 |
self._CheckIpolicy(cluster) |
|
897 | 906 |
|
898 | 907 |
if self.op.nicparams: |
899 | 908 |
utils.ForceDictType(self.op.nicparams, constants.NICS_PARAMETER_TYPES) |
Also available in: Unified diff