Revision afa1386e
b/lib/cmdlib.py | ||
---|---|---|
5323 | 5323 |
""" |
5324 | 5324 |
port = lu.cfg.AllocatePort() |
5325 | 5325 |
vgname = lu.cfg.GetVGName() |
5326 |
shared_secret = lu.cfg.GenerateDRBDSecret() |
|
5326 |
shared_secret = lu.cfg.GenerateDRBDSecret(lu.proc.GetECId())
|
|
5327 | 5327 |
dev_data = objects.Disk(dev_type=constants.LD_LV, size=size, |
5328 | 5328 |
logical_id=(vgname, names[0])) |
5329 | 5329 |
dev_meta = objects.Disk(dev_type=constants.LD_LV, size=128, |
b/lib/config.py | ||
---|---|---|
138 | 138 |
self._temporary_ids = TemporaryReservationManager() |
139 | 139 |
self._temporary_drbds = {} |
140 | 140 |
self._temporary_macs = TemporaryReservationManager() |
141 |
self._temporary_secrets = TemporaryReservationManager() |
|
141 | 142 |
# Note: in order to prevent errors when resolving our name in |
142 | 143 |
# _DistributeConfig, we compute it here once and reuse it; it's |
143 | 144 |
# better to raise an error before starting to modify the config |
... | ... | |
190 | 191 |
self._temporary_macs.Reserve(mac, ec_id) |
191 | 192 |
|
192 | 193 |
@locking.ssynchronized(_config_lock, shared=1) |
193 |
def GenerateDRBDSecret(self): |
|
194 |
def GenerateDRBDSecret(self, ec_id):
|
|
194 | 195 |
"""Generate a DRBD secret. |
195 | 196 |
|
196 | 197 |
This checks the current disks for duplicates. |
197 | 198 |
|
198 | 199 |
""" |
199 |
all_secrets = self._AllDRBDSecrets() |
|
200 |
retries = 64 |
|
201 |
while retries > 0: |
|
202 |
secret = utils.GenerateSecret() |
|
203 |
if secret not in all_secrets: |
|
204 |
break |
|
205 |
retries -= 1 |
|
206 |
else: |
|
207 |
raise errors.ConfigurationError("Can't generate unique DRBD secret") |
|
208 |
return secret |
|
209 |
|
|
200 |
return self._temporary_secrets.Generate(self._AllDRBDSecrets(), |
|
201 |
utils.GenerateSecret, |
|
202 |
ec_id) |
|
210 | 203 |
def _AllLVs(self): |
211 | 204 |
"""Compute the list of all LVs. |
212 | 205 |
|
... | ... | |
1429 | 1422 |
""" |
1430 | 1423 |
self._temporary_ids.DropECReservations(ec_id) |
1431 | 1424 |
self._temporary_macs.DropECReservations(ec_id) |
1425 |
self._temporary_secrets.DropECReservations(ec_id) |
|
1432 | 1426 |
|
Also available in: Unified diff