Revision 05440845

b/lib/constants.py
849 849
HV_KVM_EXTRA = "kvm_extra"
850 850
HV_KVM_MACHINE_VERSION = "machine_version"
851 851
HV_KVM_PATH = "kvm_path"
852
HV_VIF_TYPE = "vif_type"
852 853

  
853 854

  
854 855
HVS_PARAMETER_TYPES = {
......
918 919
  HV_VGA: VTYPE_STRING,
919 920
  HV_KVM_EXTRA: VTYPE_STRING,
920 921
  HV_KVM_MACHINE_VERSION: VTYPE_STRING,
922
  HV_VIF_TYPE: VTYPE_STRING,
921 923
  }
922 924

  
923 925
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
......
1311 1313
  HT_NIC_PARAVIRTUAL,
1312 1314
  ])
1313 1315

  
1316
# Vif types
1317
# default vif type in xen-hvm
1318
HT_HVM_VIF_IOEMU = "ioemu"
1319
HT_HVM_VIF_VIF = "vif"
1320
HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
1321
  HT_HVM_VIF_IOEMU,
1322
  HT_HVM_VIF_VIF,
1323
  ])
1324

  
1314 1325
# Disk types
1315 1326
HT_DISK_IOEMU = "ioemu"
1316 1327
HT_DISK_IDE = "ide"
......
1931 1942
    HV_CPU_MASK: CPU_PINNING_ALL,
1932 1943
    HV_CPU_CAP: 0,
1933 1944
    HV_CPU_WEIGHT: 256,
1945
    HV_VIF_TYPE: HT_HVM_VIF_IOEMU,
1934 1946
    },
1935 1947
  HT_KVM: {
1936 1948
    HV_KVM_PATH: KVM_PATH,
b/lib/hypervisor/hv_xen.py
767 767
    constants.HV_CPU_CAP: hv_base.NO_CHECK,
768 768
    constants.HV_CPU_WEIGHT:
769 769
      (False, lambda x: 0 < x < 65535, "invalid weight", None, None),
770
    constants.HV_VIF_TYPE:
771
      hv_base.ParamInSet(False, constants.HT_HVM_VALID_VIF_TYPES),
770 772
    }
771 773

  
772 774
  @classmethod
......
840 842
      config.write("localtime = 1\n")
841 843

  
842 844
    vif_data = []
845
    # Note: what is called 'nic_type' here, is used as value for the xen nic
846
    # vif config parameter 'model'. For the xen nic vif parameter 'type', we use
847
    # the 'vif_type' to avoid a clash of notation.
843 848
    nic_type = hvp[constants.HV_NIC_TYPE]
849

  
844 850
    if nic_type is None:
851
      vif_type_str = ""
852
      if hvp[constants.HV_VIF_TYPE]:
853
        vif_type_str = ", type=%s" % hvp[constants.HV_VIF_TYPE]
845 854
      # ensure old instances don't change
846
      nic_type_str = ", type=ioemu"
855
      nic_type_str = vif_type_str
847 856
    elif nic_type == constants.HT_NIC_PARAVIRTUAL:
848 857
      nic_type_str = ", type=paravirtualized"
849 858
    else:
850
      nic_type_str = ", model=%s, type=ioemu" % nic_type
859
      # parameter 'model' is only valid with type 'ioemu'
860
      nic_type_str = ", model=%s, type=%s" % \
861
        (nic_type, constants.HT_HVM_VIF_IOEMU)
851 862
    for nic in instance.nics:
852 863
      nic_str = "mac=%s%s" % (nic.mac, nic_type_str)
853 864
      ip = getattr(nic, "ip", None)

Also available in: Unified diff