Statistics
| Branch: | Tag: | Revision:

root / lib / utils / storage.py @ 59ef0f15

History | View | Annotate | Download (1.7 kB)

1 59ef0f15 Helga Velroyen
#
2 59ef0f15 Helga Velroyen
#
3 59ef0f15 Helga Velroyen
4 59ef0f15 Helga Velroyen
# Copyright (C) 2013 Google Inc.
5 59ef0f15 Helga Velroyen
#
6 59ef0f15 Helga Velroyen
# This program is free software; you can redistribute it and/or modify
7 59ef0f15 Helga Velroyen
# it under the terms of the GNU General Public License as published by
8 59ef0f15 Helga Velroyen
# the Free Software Foundation; either version 2 of the License, or
9 59ef0f15 Helga Velroyen
# (at your option) any later version.
10 59ef0f15 Helga Velroyen
#
11 59ef0f15 Helga Velroyen
# This program is distributed in the hope that it will be useful, but
12 59ef0f15 Helga Velroyen
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 59ef0f15 Helga Velroyen
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 59ef0f15 Helga Velroyen
# General Public License for more details.
15 59ef0f15 Helga Velroyen
#
16 59ef0f15 Helga Velroyen
# You should have received a copy of the GNU General Public License
17 59ef0f15 Helga Velroyen
# along with this program; if not, write to the Free Software
18 59ef0f15 Helga Velroyen
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 59ef0f15 Helga Velroyen
# 02110-1301, USA.
20 59ef0f15 Helga Velroyen
21 59ef0f15 Helga Velroyen
"""Utility functions for storage.
22 59ef0f15 Helga Velroyen

23 59ef0f15 Helga Velroyen
"""
24 59ef0f15 Helga Velroyen
25 59ef0f15 Helga Velroyen
from ganeti import constants
26 59ef0f15 Helga Velroyen
27 59ef0f15 Helga Velroyen
28 59ef0f15 Helga Velroyen
def GetDiskTemplatesOfStorageType(storage_type):
29 59ef0f15 Helga Velroyen
  """Given the storage type, returns a list of disk templates based on that
30 59ef0f15 Helga Velroyen
     storage type."""
31 59ef0f15 Helga Velroyen
  return [dt for dt in constants.DISK_TEMPLATES
32 59ef0f15 Helga Velroyen
          if constants.DISK_TEMPLATES_STORAGE_TYPE[dt] == storage_type]
33 59ef0f15 Helga Velroyen
34 59ef0f15 Helga Velroyen
35 59ef0f15 Helga Velroyen
def GetLvmDiskTemplates():
36 59ef0f15 Helga Velroyen
  """Returns all disk templates that use LVM."""
37 59ef0f15 Helga Velroyen
  return GetDiskTemplatesOfStorageType(constants.ST_LVM_VG)
38 59ef0f15 Helga Velroyen
39 59ef0f15 Helga Velroyen
40 59ef0f15 Helga Velroyen
def IsLvmEnabled(enabled_disk_templates):
41 59ef0f15 Helga Velroyen
  """Check whether or not any lvm-based disk templates are enabled."""
42 59ef0f15 Helga Velroyen
  return len(set(GetLvmDiskTemplates())
43 59ef0f15 Helga Velroyen
             .intersection(set(enabled_disk_templates))) != 0
44 59ef0f15 Helga Velroyen
45 59ef0f15 Helga Velroyen
46 59ef0f15 Helga Velroyen
def LvmGetsEnabled(enabled_disk_templates, new_enabled_disk_templates):
47 59ef0f15 Helga Velroyen
  """Checks whether lvm was not enabled before, but will be enabled after
48 59ef0f15 Helga Velroyen
     the operation.
49 59ef0f15 Helga Velroyen

50 59ef0f15 Helga Velroyen
  """
51 59ef0f15 Helga Velroyen
  if IsLvmEnabled(enabled_disk_templates):
52 59ef0f15 Helga Velroyen
    return False
53 59ef0f15 Helga Velroyen
  return set(GetLvmDiskTemplates()).intersection(
54 59ef0f15 Helga Velroyen
      set(new_enabled_disk_templates))