diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index c4b2d3ec898c06925c7de0423c6fbf88d6233bb7..3e52085182e699f2f23803b212587adc874882fe 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -34,7 +34,7 @@ from ganeti.rapi import baserlib I_FIELDS = ["name", "admin_state", "os", "pnode", "snodes", "disk_template", - "nic.ips", "nic.macs", "nic.bridges", + "nic.ips", "nic.macs", "nic.modes", "nic.links", "network_port", "disk.sizes", "disk_usage", "beparams", "hvparams", @@ -236,9 +236,15 @@ class R_2_instances(baserlib.R_Generic): " be an integer") disks.append({"size": d}) # nic processing (one nic only) - nics = [{"mac": fn("mac", constants.VALUE_AUTO), - "ip": fn("ip", None), - "bridge": fn("bridge", None)}] + nics = [{"mac": fn("mac", constants.VALUE_AUTO)}] + if fn("ip", None) is not None: + nics[0]["ip"] = fn("ip") + if fn("mode", None) is not None: + nics[0]["mode"] = fn("mode") + if fn("link", None) is not None: + nics[0]["link"] = fn("link") + if fn("bridge", None) is not None: + nics[0]["bridge"] = fn("bridge") op = opcodes.OpCreateInstance( mode=constants.INSTANCE_CREATE,