Revision ea642319
b/lib/config.py | ||
---|---|---|
1260 | 1260 |
""" |
1261 | 1261 |
if old_name not in self._config_data.instances: |
1262 | 1262 |
raise errors.ConfigurationError("Unknown instance '%s'" % old_name) |
1263 |
inst = self._config_data.instances[old_name] |
|
1264 |
del self._config_data.instances[old_name] |
|
1263 |
|
|
1264 |
# Operate on a copy to not loose instance object in case of a failure |
|
1265 |
inst = self._config_data.instances[old_name].Copy() |
|
1265 | 1266 |
inst.name = new_name |
1266 | 1267 |
|
1267 |
for disk in inst.disks:
|
|
1268 |
for (idx, disk) in enumerate(inst.disks):
|
|
1268 | 1269 |
if disk.dev_type == constants.LD_FILE: |
1269 | 1270 |
# rename the file paths in logical and physical id |
1270 | 1271 |
file_storage_dir = os.path.dirname(os.path.dirname(disk.logical_id[1])) |
1271 |
disk_fname = "disk%s" % disk.iv_name.split("/")[1] |
|
1272 |
disk.physical_id = disk.logical_id = (disk.logical_id[0], |
|
1273 |
utils.PathJoin(file_storage_dir, |
|
1274 |
inst.name, |
|
1275 |
disk_fname)) |
|
1272 |
disk.logical_id = (disk.logical_id[0], |
|
1273 |
utils.PathJoin(file_storage_dir, inst.name, |
|
1274 |
"disk%s" % idx)) |
|
1275 |
disk.physical_id = disk.logical_id |
|
1276 |
|
|
1277 |
# Actually replace instance object |
|
1278 |
del self._config_data.instances[old_name] |
|
1279 |
self._config_data.instances[inst.name] = inst |
|
1276 | 1280 |
|
1277 | 1281 |
# Force update of ssconf files |
1278 | 1282 |
self._config_data.cluster.serial_no += 1 |
1279 | 1283 |
|
1280 |
self._config_data.instances[inst.name] = inst |
|
1281 | 1284 |
self._WriteConfig() |
1282 | 1285 |
|
1283 | 1286 |
@locking.ssynchronized(_config_lock) |
Also available in: Unified diff