Revision 6e513917

b/lib/cmdlib/cluster.py
793 793
  @staticmethod
794 794
  def _GetDiskTemplateSetsInner(op_enabled_disk_templates,
795 795
                                old_enabled_disk_templates):
796
    """Determines the enabled disk templates and the subset of disk templates
797
       that are newly enabled by this operation.
796
    """Computes three sets of disk templates.
797

  
798
    @see: C{_GetDiskTemplateSets} for more details.
798 799

  
799 800
    """
800 801
    enabled_disk_templates = None
801 802
    new_enabled_disk_templates = []
803
    disabled_disk_templates = []
802 804
    if op_enabled_disk_templates:
803 805
      enabled_disk_templates = op_enabled_disk_templates
804 806
      new_enabled_disk_templates = \
805
        list(set(enabled_disk_templates)
806
             - set(old_enabled_disk_templates))
807
          list(set(enabled_disk_templates)
808
               - set(old_enabled_disk_templates))
809
      disabled_disk_templates = \
810
          list(set(old_enabled_disk_templates)
811
               - set(enabled_disk_templates))
807 812
    else:
808 813
      enabled_disk_templates = old_enabled_disk_templates
809
    return (enabled_disk_templates, new_enabled_disk_templates)
814
    return (enabled_disk_templates, new_enabled_disk_templates,
815
            disabled_disk_templates)
810 816

  
811 817
  def _GetDiskTemplateSets(self, cluster):
812
    """Determines the enabled disk templates and the subset of disk templates
813
       that are newly enabled by this operation.
818
    """Computes three sets of disk templates.
819

  
820
    The three sets are:
821
      - disk templates that will be enabled after this operation (no matter if
822
        they were enabled before or not)
823
      - disk templates that get enabled by this operation (thus haven't been
824
        enabled before.)
825
      - disk templates that get disabled by this operation
814 826

  
815 827
    """
816 828
    return self._GetDiskTemplateSetsInner(self.op.enabled_disk_templates,
......
945 957
                             for node in self.cfg.GetAllNodesInfo().values()
946 958
                             if node.uuid in node_uuids and node.vm_capable]
947 959

  
948
    (enabled_disk_templates, new_enabled_disk_templates) = \
949
      self._GetDiskTemplateSets(cluster)
960
    (enabled_disk_templates, new_enabled_disk_templates,
961
        disabled_disk_templates) = self._GetDiskTemplateSets(cluster)
962
    self._CheckInstancesOfDisabledDiskTemplates(disabled_disk_templates)
950 963

  
951 964
    self._CheckVgName(vm_capable_node_uuids, enabled_disk_templates,
952 965
                      new_enabled_disk_templates)
b/test/py/ganeti.cmdlib.cluster_unittest.py
81 81
  def testNoNew(self):
82 82
    op_dts = [constants.DT_DISKLESS]
83 83
    old_dts = [constants.DT_DISKLESS]
84
    (enabled_dts, new_dts) =\
84
    (enabled_dts, new_dts, disabled_dts) =\
85 85
        cluster.LUClusterSetParams._GetDiskTemplateSetsInner(
86 86
            op_dts, old_dts)
87 87
    self.assertEqual(enabled_dts, old_dts)
88 88
    self.assertEqual(new_dts, [])
89
    self.assertEqual(disabled_dts, [])
90

  
91
  def testValid(self):
92
    op_dts = [constants.DT_PLAIN, constants.DT_DRBD8]
93
    old_dts = [constants.DT_DISKLESS, constants.DT_PLAIN]
94
    (enabled_dts, new_dts, disabled_dts) =\
95
        cluster.LUClusterSetParams._GetDiskTemplateSetsInner(
96
            op_dts, old_dts)
97
    self.assertEqual(enabled_dts, op_dts)
98
    self.assertEqual(new_dts, [constants.DT_DRBD8])
99
    self.assertEqual(disabled_dts, [constants.DT_DISKLESS])
100

  
89 101

  
90 102

  
91 103
if __name__ == "__main__":

Also available in: Unified diff