Revision ea642319 lib/config.py

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