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)) |