Revision dca1f84a

b/lib/client/gnt_instance.py
1259 1259
    FormatParameterDict(buf, instance["be_instance"], be_actual, level=2)
1260 1260
    # TODO(ganeti 2.7) rework the NICs as well
1261 1261
    buf.write("    - NICs:\n")
1262
    for idx, (ip, mac, mode, link, network) in enumerate(instance["nics"]):
1262
    for idx, (ip, mac, mode, link, network, _) in enumerate(instance["nics"]):
1263 1263
      buf.write("      - nic/%d: MAC: %s, IP: %s,"
1264 1264
                " mode: %s, link: %s, network: %s\n" %
1265 1265
                (idx, mac, ip, mode, link, network))
b/lib/hypervisor/hv_kvm.py
773 773
    if nic.nicparams[constants.NIC_LINK]:
774 774
      env["LINK"] = nic.nicparams[constants.NIC_LINK]
775 775

  
776
    def setenv(nic, field, name, env):
777
      value = nic.netinfo.get(field, None)
778
      if value:
779
        env[name] = value
780

  
776 781
    if nic.network:
777 782
      env["NETWORK"] = nic.network
783
      if nic.netinfo:
784
        setenv(nic, "network", "SUBNET", env)
785
        setenv(nic, "gateway", "GATEWAY", env)
786
        setenv(nic, "network6", "SUBNET6", env)
787
        setenv(nic, "gateway6", "GATEWAY6", env)
788
        setenv(nic, "network_type", "TYPE", env)
789
        setenv(nic, "mac_prefix", "MAC_PREFIX", env)
778 790

  
779 791
    if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED:
780 792
      env["BRIDGE"] = nic.nicparams[constants.NIC_LINK]
b/lib/objects.py
510 510

  
511 511
class NIC(ConfigObject):
512 512
  """Config object representing a network card."""
513
  __slots__ = ["mac", "ip", "network", "nicparams"]
513
  __slots__ = ["mac", "ip", "network", "nicparams", "netinfo"]
514 514

  
515 515
  @classmethod
516 516
  def CheckParameterSyntax(cls, nicparams):
b/lib/rpc.py
35 35
import base64
36 36
import pycurl
37 37
import threading
38
import copy
38 39

  
39 40
from ganeti import utils
40 41
from ganeti import objects
......
661 662
    encoders.update({
662 663
      # Encoders requiring configuration object
663 664
      rpc_defs.ED_INST_DICT: self._InstDict,
665
      rpc_defs.ED_NIC_DICT: self._NicDict,
664 666
      rpc_defs.ED_INST_DICT_HVP_BEP: self._InstDictHvpBep,
665 667
      rpc_defs.ED_INST_DICT_OSP_DP: self._InstDictOspDp,
666 668

  
......
688 690
    _generated_rpc.RpcClientDnsOnly.__init__(self)
689 691
    _generated_rpc.RpcClientDefault.__init__(self)
690 692

  
693
  def _NicDict(self, nic):
694
    """Convert the given nic to a dict and encapsulate netinfo
695

  
696
    """
697
    n = copy.deepcopy(nic)
698
    if n.network:
699
      net_uuid = self._cfg.LookupNetwork(n.network)
700
      if net_uuid:
701
        nobj = self._cfg.GetNetwork(net_uuid)
702
        n.netinfo = objects.Network.ToDict(nobj)
703
    return n.ToDict()
704

  
691 705
  def _InstDict(self, instance, hvp=None, bep=None, osp=None):
692 706
    """Convert the given instance to a dict.
693 707

  
......
722 736
      nic["nicparams"] = objects.FillDict(
723 737
        cluster.nicparams[constants.PP_DEFAULT],
724 738
        nic["nicparams"])
739
      network = nic.get("network", None)
740
      if network:
741
        net_uuid = self._cfg.LookupNetwork(network)
742
        if net_uuid:
743
          nobj = self._cfg.GetNetwork(net_uuid)
744
          nic["netinfo"] = objects.Network.ToDict(nobj)
725 745
    return idict
726 746

  
727 747
  def _InstDictHvpBep(self, (instance, hvp, bep)):
b/lib/rpc_defs.py
64 64
(ED_OBJECT_DICT,
65 65
 ED_OBJECT_DICT_LIST,
66 66
 ED_INST_DICT,
67
 ED_NIC_DICT,
67 68
 ED_INST_DICT_HVP_BEP,
68 69
 ED_NODE_TO_DISK_DICT,
69 70
 ED_INST_DICT_OSP_DP,
......
73 74
 ED_COMPRESS,
74 75
 ED_BLOCKDEV_RENAME,
75 76
 ED_DISKS_DICT_DP,
76
 ED_SINGLE_DISK_DICT_DP) = range(1, 14)
77
 ED_SINGLE_DISK_DICT_DP) = range(1, 15)
77 78

  
78 79

  
79 80
def _Prepare(calls):

Also available in: Unified diff