Revision 638c6349 lib/cmdlib.py

b/lib/cmdlib.py
3360 3360
  _FIELDS_STATIC = utils.FieldSet(*["name", "os", "pnode", "snodes",
3361 3361
                                    "admin_state",
3362 3362
                                    "disk_template", "ip", "mac", "bridge",
3363
                                    "nic_mode", "nic_link",
3363 3364
                                    "sda_size", "sdb_size", "vcpus", "tags",
3364 3365
                                    "network_port", "beparams",
3365 3366
                                    r"(disk)\.(size)/([0-9]+)",
3366 3367
                                    r"(disk)\.(sizes)", "disk_usage",
3367
                                    r"(nic)\.(mac|ip|bridge)/([0-9]+)",
3368
                                    r"(nic)\.(macs|ips|bridges)",
3368
                                    r"(nic)\.(mac|ip|mode|link)/([0-9]+)",
3369
                                    r"(nic)\.(bridge)/([0-9]+)",
3370
                                    r"(nic)\.(macs|ips|modes|links|bridges)",
3369 3371
                                    r"(disk|nic)\.(count)",
3370 3372
                                    "serial_no", "hypervisor", "hvparams",] +
3371 3373
                                  ["hv/%s" % name
......
3461 3463
    HVPREFIX = "hv/"
3462 3464
    BEPREFIX = "be/"
3463 3465
    output = []
3466
    cluster = self.cfg.GetClusterInfo()
3464 3467
    for instance in instance_list:
3465 3468
      iout = []
3466
      i_hv = self.cfg.GetClusterInfo().FillHV(instance)
3467
      i_be = self.cfg.GetClusterInfo().FillBE(instance)
3469
      i_hv = cluster.FillHV(instance)
3470
      i_be = cluster.FillBE(instance)
3471
      i_nicp = [objects.FillDict(cluster.nicparams[constants.PP_DEFAULT],
3472
                                 nic.nicparams) for nic in instance.nics]
3468 3473
      for field in self.op.output_fields:
3469 3474
        st_match = self._FIELDS_STATIC.Matches(field)
3470 3475
        if field == "name":
......
3513 3518
            val = instance.nics[0].ip
3514 3519
          else:
3515 3520
            val = None
3516
        elif field == "bridge":
3521
        elif field == "nic_mode":
3522
          if instance.nics:
3523
            val = i_nicp[0][constants.NIC_MODE]
3524
          else:
3525
            val = None
3526
        elif field == "nic_link":
3517 3527
          if instance.nics:
3518
            val = instance.nics[0].bridge
3528
            val = i_nicp[0][constants.NIC_LINK]
3529
          else:
3530
            val = None
3531
        elif field == "bridge":
3532
          if (instance.nics and
3533
              i_nicp[0][constants.NIC_MODE] == constants.NIC_MODE_BRIDGED):
3534
            val = i_nicp[0][constants.NIC_LINK]
3519 3535
          else:
3520 3536
            val = None
3521 3537
        elif field == "mac":
......
3572 3588
              val = [nic.mac for nic in instance.nics]
3573 3589
            elif st_groups[1] == "ips":
3574 3590
              val = [nic.ip for nic in instance.nics]
3591
            elif st_groups[1] == "modes":
3592
              val = [nicp[constants.NIC_MODE] for nicp in i_nicp]
3593
            elif st_groups[1] == "links":
3594
              val = [nicp[constants.NIC_LINK] for nicp in i_nicp]
3575 3595
            elif st_groups[1] == "bridges":
3576
              val = [nic.bridge for nic in instance.nics]
3596
              val = []
3597
              for nicp in i_nicp:
3598
                if nicp[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED:
3599
                  val.append(nicp[constants.NIC_LINK])
3600
                else:
3601
                  val.append(None)
3577 3602
            else:
3578 3603
              # index-based item
3579 3604
              nic_idx = int(st_groups[2])
......
3584 3609
                  val = instance.nics[nic_idx].mac
3585 3610
                elif st_groups[1] == "ip":
3586 3611
                  val = instance.nics[nic_idx].ip
3612
                elif st_groups[1] == "mode":
3613
                  val = i_nicp[nic_idx][constants.NIC_MODE]
3614
                elif st_groups[1] == "link":
3615
                  val = i_nicp[nic_idx][constants.NIC_LINK]
3587 3616
                elif st_groups[1] == "bridge":
3588
                  val = instance.nics[nic_idx].bridge
3617
                  nic_mode = i_nicp[nic_idx][constants.NIC_MODE]
3618
                  if nic_mode == constants.NIC_MODE_BRIDGED:
3619
                    val = i_nicp[nic_idx][constants.NIC_LINK]
3620
                  else:
3621
                    val = None
3589 3622
                else:
3590 3623
                  assert False, "Unhandled NIC parameter"
3591 3624
          else:

Also available in: Unified diff