Revision c121d42f lib/client/gnt_cluster.py
b/lib/client/gnt_cluster.py | ||
---|---|---|
76 | 76 |
return 1 |
77 | 77 |
|
78 | 78 |
|
79 |
def _InitEnabledDiskTemplates(opts): |
|
80 |
"""Initialize the list of enabled disk templates. |
|
81 |
|
|
82 |
""" |
|
83 |
if opts.enabled_disk_templates: |
|
84 |
return opts.enabled_disk_templates.split(",") |
|
85 |
else: |
|
86 |
return constants.DEFAULT_ENABLED_DISK_TEMPLATES |
|
87 |
|
|
88 |
|
|
89 |
def _InitVgName(opts, enabled_disk_templates): |
|
90 |
"""Initialize the volume group name. |
|
91 |
|
|
92 |
@type enabled_disk_templates: list of strings |
|
93 |
@param enabled_disk_templates: cluster-wide enabled disk templates |
|
94 |
|
|
95 |
""" |
|
96 |
vg_name = None |
|
97 |
if opts.vg_name is not None: |
|
98 |
vg_name = opts.vg_name |
|
99 |
if vg_name: |
|
100 |
if not utils.IsLvmEnabled(enabled_disk_templates): |
|
101 |
ToStdout("You specified a volume group with --vg-name, but you did not" |
|
102 |
" enable any disk template that uses lvm.") |
|
103 |
elif utils.IsLvmEnabled(enabled_disk_templates): |
|
104 |
raise errors.OpPrereqError( |
|
105 |
"LVM disk templates are enabled, but vg name not set.") |
|
106 |
elif utils.IsLvmEnabled(enabled_disk_templates): |
|
107 |
vg_name = constants.DEFAULT_VG |
|
108 |
return vg_name |
|
109 |
|
|
110 |
|
|
111 |
def _InitDrbdHelper(opts): |
|
112 |
"""Initialize the DRBD usermode helper. |
|
113 |
|
|
114 |
""" |
|
115 |
if not opts.drbd_storage and opts.drbd_helper: |
|
116 |
raise errors.OpPrereqError( |
|
117 |
"Options --no-drbd-storage and --drbd-usermode-helper conflict.") |
|
118 |
|
|
119 |
if opts.drbd_storage and not opts.drbd_helper: |
|
120 |
return constants.DEFAULT_DRBD_HELPER |
|
121 |
|
|
122 |
return opts.drbd_helper |
|
123 |
|
|
124 |
|
|
79 | 125 |
@UsesRPC |
80 | 126 |
def InitCluster(opts, args): |
81 | 127 |
"""Initialize the cluster. |
... | ... | |
90 | 136 |
""" |
91 | 137 |
if _CheckNoLvmStorageOptDeprecated(opts): |
92 | 138 |
return 1 |
93 |
enabled_disk_templates = opts.enabled_disk_templates |
|
94 |
if enabled_disk_templates: |
|
95 |
enabled_disk_templates = enabled_disk_templates.split(",") |
|
96 |
else: |
|
97 |
enabled_disk_templates = constants.DEFAULT_ENABLED_DISK_TEMPLATES |
|
98 | 139 |
|
99 |
vg_name = None |
|
100 |
if opts.vg_name is not None: |
|
101 |
vg_name = opts.vg_name |
|
102 |
if vg_name: |
|
103 |
if not utils.IsLvmEnabled(enabled_disk_templates): |
|
104 |
ToStdout("You specified a volume group with --vg-name, but you did not" |
|
105 |
" enable any disk template that uses lvm.") |
|
106 |
else: |
|
107 |
if utils.IsLvmEnabled(enabled_disk_templates): |
|
108 |
ToStderr("LVM disk templates are enabled, but vg name not set.") |
|
109 |
return 1 |
|
110 |
else: |
|
111 |
if utils.IsLvmEnabled(enabled_disk_templates): |
|
112 |
vg_name = constants.DEFAULT_VG |
|
140 |
enabled_disk_templates = _InitEnabledDiskTemplates(opts) |
|
113 | 141 |
|
114 |
if not opts.drbd_storage and opts.drbd_helper: |
|
115 |
ToStderr("Options --no-drbd-storage and --drbd-usermode-helper conflict.") |
|
142 |
try: |
|
143 |
vg_name = _InitVgName(opts, enabled_disk_templates) |
|
144 |
drbd_helper = _InitDrbdHelper(opts) |
|
145 |
except errors.OpPrereqError, e: |
|
146 |
ToStderr(str(e)) |
|
116 | 147 |
return 1 |
117 | 148 |
|
118 |
drbd_helper = opts.drbd_helper |
|
119 |
if opts.drbd_storage and not opts.drbd_helper: |
|
120 |
drbd_helper = constants.DEFAULT_DRBD_HELPER |
|
121 |
|
|
122 | 149 |
master_netdev = opts.master_netdev |
123 | 150 |
if master_netdev is None: |
124 | 151 |
nic_mode = opts.nicparams.get(constants.NIC_MODE, None) |
... | ... | |
971 | 998 |
opts.force) |
972 | 999 |
|
973 | 1000 |
|
1001 |
def _GetEnabledDiskTemplates(opts): |
|
1002 |
"""Determine the list of enabled disk templates. |
|
1003 |
|
|
1004 |
""" |
|
1005 |
if opts.enabled_disk_templates: |
|
1006 |
return opts.enabled_disk_templates.split(",") |
|
1007 |
else: |
|
1008 |
return None |
|
1009 |
|
|
1010 |
|
|
1011 |
def _GetVgName(opts, enabled_disk_templates): |
|
1012 |
"""Determine the volume group name. |
|
1013 |
|
|
1014 |
@type enabled_disk_templates: list of strings |
|
1015 |
@param enabled_disk_templates: cluster-wide enabled disk-templates |
|
1016 |
|
|
1017 |
""" |
|
1018 |
# consistency between vg name and enabled disk templates |
|
1019 |
vg_name = None |
|
1020 |
if opts.vg_name is not None: |
|
1021 |
vg_name = opts.vg_name |
|
1022 |
if enabled_disk_templates: |
|
1023 |
if vg_name and not utils.IsLvmEnabled(enabled_disk_templates): |
|
1024 |
ToStdout("You specified a volume group with --vg-name, but you did not" |
|
1025 |
" enable any of the following lvm-based disk templates: %s" % |
|
1026 |
utils.CommaJoin(utils.GetLvmDiskTemplates())) |
|
1027 |
return vg_name |
|
1028 |
|
|
1029 |
|
|
1030 |
def _GetDrbdHelper(opts): |
|
1031 |
"""Determine the DRBD usermode helper. |
|
1032 |
|
|
1033 |
""" |
|
1034 |
drbd_helper = opts.drbd_helper |
|
1035 |
if not opts.drbd_storage and opts.drbd_helper: |
|
1036 |
raise errors.OpPrereqError( |
|
1037 |
"Options --no-drbd-storage and --drbd-usermode-helper conflict.") |
|
1038 |
|
|
1039 |
if not opts.drbd_storage: |
|
1040 |
drbd_helper = "" |
|
1041 |
return drbd_helper |
|
1042 |
|
|
1043 |
|
|
974 | 1044 |
def SetClusterParams(opts, args): |
975 | 1045 |
"""Modify the cluster. |
976 | 1046 |
|
... | ... | |
1012 | 1082 |
if _CheckNoLvmStorageOptDeprecated(opts): |
1013 | 1083 |
return 1 |
1014 | 1084 |
|
1015 |
enabled_disk_templates = None |
|
1016 |
if opts.enabled_disk_templates: |
|
1017 |
enabled_disk_templates = opts.enabled_disk_templates.split(",") |
|
1018 |
|
|
1019 |
# consistency between vg name and enabled disk templates |
|
1020 |
vg_name = None |
|
1021 |
if opts.vg_name is not None: |
|
1022 |
vg_name = opts.vg_name |
|
1023 |
if enabled_disk_templates: |
|
1024 |
if vg_name and not utils.IsLvmEnabled(enabled_disk_templates): |
|
1025 |
ToStdout("You specified a volume group with --vg-name, but you did not" |
|
1026 |
" enable any of the following lvm-based disk templates: %s" % |
|
1027 |
utils.CommaJoin(utils.GetLvmDiskTemplates())) |
|
1085 |
enabled_disk_templates = _GetEnabledDiskTemplates(opts) |
|
1086 |
vg_name = _GetVgName(opts, enabled_disk_templates) |
|
1028 | 1087 |
|
1029 |
drbd_helper = opts.drbd_helper |
|
1030 |
if not opts.drbd_storage and opts.drbd_helper: |
|
1031 |
ToStderr("Options --no-drbd-storage and --drbd-usermode-helper conflict.") |
|
1088 |
try: |
|
1089 |
drbd_helper = _GetDrbdHelper(opts) |
|
1090 |
except errors.OpPrereqError, e: |
|
1091 |
ToStderr(str(e)) |
|
1032 | 1092 |
return 1 |
1033 | 1093 |
|
1034 |
if not opts.drbd_storage: |
|
1035 |
drbd_helper = "" |
|
1036 |
|
|
1037 | 1094 |
hvlist = opts.enabled_hypervisors |
1038 | 1095 |
if hvlist is not None: |
1039 | 1096 |
hvlist = hvlist.split(",") |
Also available in: Unified diff