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(",")
|