Revision cd46491f lib/rpc.py

b/lib/rpc.py
575 575
  return [(d.ToDict(), uid) for d, uid in value]
576 576

  
577 577

  
578
def _AnnotateDParamsDRBD(disk, (drbd_params, data_params, meta_params)):
579
  """Annotates just DRBD disks layouts.
580

  
581
  """
582
  assert disk.dev_type == constants.LD_DRBD8
583

  
584
  disk.params = objects.FillDict(drbd_params, disk.params)
585
  (dev_data, dev_meta) = disk.children
586
  dev_data.params = objects.FillDict(data_params, dev_data.params)
587
  dev_meta.params = objects.FillDict(meta_params, dev_meta.params)
588

  
589
  return disk
590

  
591

  
592
def _AnnotateDParamsGeneric(disk, (params, )):
593
  """Generic disk parameter annotation routine.
594

  
595
  """
596
  assert disk.dev_type != constants.LD_DRBD8
597

  
598
  disk.params = objects.FillDict(params, disk.params)
599

  
600
  return disk
601

  
602

  
603
def AnnotateDiskParams(template, disks, disk_params):
604
  """Annotates the disk objects with the disk parameters.
605

  
606
  @param template: The disk template used
607
  @param disks: The list of disks objects to annotate
608
  @param disk_params: The disk paramaters for annotation
609
  @returns: A list of disk objects annotated
610

  
611
  """
612
  ld_params = objects.Disk.ComputeLDParams(template, disk_params)
613

  
614
  if template == constants.DT_DRBD8:
615
    annotation_fn = _AnnotateDParamsDRBD
616
  elif template == constants.DT_DISKLESS:
617
    annotation_fn = lambda disk, _: disk
618
  else:
619
    annotation_fn = _AnnotateDParamsGeneric
620

  
621
  new_disks = []
622
  for disk in disks:
623
    new_disks.append(annotation_fn(disk.Copy(), ld_params))
624

  
625
  return new_disks
626

  
627

  
578 628
#: Generic encoders
579 629
_ENCODERS = {
580 630
  rpc_defs.ED_OBJECT_DICT: _ObjectToDict,

Also available in: Unified diff