Revision ff5def9b

b/lib/backend.py
2255 2255
  This is a wrapper over _RecursiveAssembleBD.
2256 2256

  
2257 2257
  @rtype: str or boolean
2258
  @return: a C{/dev/...} path for primary nodes, and
2259
      C{True} for secondary nodes
2258
  @return: a tuple with the C{/dev/...} path and the created symlink
2259
      for primary nodes, and (C{True}, C{True}) for secondary nodes
2260 2260

  
2261 2261
  """
2262 2262
  try:
2263 2263
    result = _RecursiveAssembleBD(disk, owner, as_primary)
2264 2264
    if isinstance(result, BlockDev):
2265 2265
      # pylint: disable=E1103
2266
      result = result.dev_path
2266
      dev_path = result.dev_path
2267
      link_name = None
2267 2268
      if as_primary:
2268
        _SymlinkBlockDev(owner, result, idx)
2269
        link_name = _SymlinkBlockDev(owner, dev_path, idx)
2270
    elif result:
2271
      return result, result
2272
    else:
2273
      _Fail("Unexpected result from _RecursiveAssembleBD")
2269 2274
  except errors.BlockDeviceError, err:
2270 2275
    _Fail("Error while assembling disk: %s", err, exc=True)
2271 2276
  except OSError, err:
2272 2277
    _Fail("Error while symlinking disk: %s", err, exc=True)
2273 2278

  
2274
  return result
2279
  return dev_path, link_name
2275 2280

  
2276 2281

  
2277 2282
def BlockdevShutdown(disk):
b/test/py/cmdlib/instance_migration_unittest.py
128 128
        .CreateSuccessfulNodeResult(self.master, True)
129 129
    self.rpc.call_blockdev_assemble.return_value = \
130 130
      self.RpcResultsBuilder() \
131
        .CreateSuccessfulNodeResult(self.snode, True)
131
        .CreateSuccessfulNodeResult(self.snode, ("/dev/mock", "/var/mock"))
132 132
    self.rpc.call_instance_start.return_value = \
133 133
      self.RpcResultsBuilder() \
134 134
        .CreateSuccessfulNodeResult(self.snode, True)
b/test/py/cmdlib/instance_unittest.py
1491 1491

  
1492 1492
    self.rpc.call_blockdev_assemble.return_value = \
1493 1493
      self.RpcResultsBuilder() \
1494
        .CreateSuccessfulNodeResult(self.node, "/dev/mocked_path")
1494
        .CreateSuccessfulNodeResult(self.node, ("/dev/mocked_path",
1495
                                    "/var/run/ganeti/instance-disks/mocked_d"))
1495 1496
    self.rpc.call_blockdev_export.return_value = \
1496 1497
      self.RpcResultsBuilder() \
1497 1498
        .CreateSuccessfulNodeResult(self.master, "")
......
1607 1608
  def testFileInstance(self):
1608 1609
    self.rpc.call_blockdev_assemble.return_value = \
1609 1610
      self.RpcResultsBuilder() \
1610
        .CreateSuccessfulNodeResult(self.master, None)
1611
        .CreateSuccessfulNodeResult(self.master, (None, None))
1611 1612
    self.rpc.call_blockdev_shutdown.return_value = \
1612 1613
      self.RpcResultsBuilder() \
1613 1614
        .CreateSuccessfulNodeResult(self.master, None)

Also available in: Unified diff