In some QA environments static MAC addresses must be used.
Signed-off-by: Michael Hanselmann <[email protected]>
---
qa/qa-sample.json | 10 ++++++++--
qa/qa_config.py | 8 ++++++++
qa/qa_instance.py | 11 +++++++----
qa/qa_rapi.py | 4 +++-
4 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/qa/qa-sample.json b/qa/qa-sample.json
index 82f9c6c..0769d08 100644
--- a/qa/qa-sample.json
+++ b/qa/qa-sample.json
@@ -45,10 +45,16 @@
"instances": [
{
- "name": "xen-test-inst1"
+ "name": "xen-test-inst1",
+
+ "# Static MAC address": null,
+ "#nic.mac/0": "AA:00:00:11:11:11"
},
{
- "name": "xen-test-inst2"
+ "name": "xen-test-inst2",
+
+ "# Static MAC address": null,
+ "#nic.mac/0": "AA:00:00:22:22:22"
}
],
diff --git a/qa/qa_config.py b/qa/qa_config.py
index 48a8a11..dda2ad1 100644
--- a/qa/qa_config.py
+++ b/qa/qa_config.py
@@ -25,6 +25,7 @@
import os
+from ganeti import constants
from ganeti import utils
from ganeti import serializer
from ganeti import compat
@@ -154,6 +155,13 @@ def GetInstanceCheckScript():
return cfg.get(_INSTANCE_CHECK_KEY, None)
+def GetInstanceNicMac(inst):
+ """Returns MAC address for instance's network interface.
+
+ """
+ return inst.get("nic.mac/0", constants.VALUE_GENERATE)
+
+
def GetMasterNode():
return cfg["nodes"][0]
diff --git a/qa/qa_instance.py b/qa/qa_instance.py
index e6fd4f4..811d653 100644
--- a/qa/qa_instance.py
+++ b/qa/qa_instance.py
@@ -42,7 +42,7 @@ def _GetDiskStatePath(disk):
return "/sys/block/%s/device/state" % disk
-def _GetGenericAddParameters():
+def _GetGenericAddParameters(inst):
params = ["-B"]
params.append("%s=%s,%s=%s" % (constants.BE_MINMEM,
qa_config.get(constants.BE_MINMEM),
@@ -50,6 +50,10 @@ def _GetGenericAddParameters():
qa_config.get(constants.BE_MAXMEM)))
for idx, size in enumerate(qa_config.get("disk")):
params.extend(["--disk", "%s:size=%s" % (idx, size)])
+
+ # All QA instances have exactly one network interface
+ params.extend(["--net", "0:mac=%s" % qa_config.GetInstanceNicMac(inst)])
+
return params
@@ -60,7 +64,7 @@ def _DiskTest(node, disk_template):
"--os-type=%s" % qa_config.get("os"),
"--disk-template=%s" % disk_template,
"--node=%s" % node] +
- _GetGenericAddParameters())
+ _GetGenericAddParameters(instance))
cmd.append(instance["name"])
AssertCommand(cmd)
@@ -412,11 +416,10 @@ def TestInstanceImport(newinst, node, expnode, name):
cmd = (["gnt-backup", "import",
"--disk-template=plain",
"--no-ip-check",
- "--net", "0:mac=generate",
"--src-node=%s" % expnode["primary"],
"--src-dir=%s/%s" % (constants.EXPORT_DIR, name),
"--node=%s" % node["primary"]] +
- _GetGenericAddParameters())
+ _GetGenericAddParameters(newinst))
cmd.append(newinst["name"])
AssertCommand(cmd)
diff --git a/qa/qa_rapi.py b/qa/qa_rapi.py
index b53b8cf..f6abdb6 100644
--- a/qa/qa_rapi.py
+++ b/qa/qa_rapi.py
@@ -553,7 +553,9 @@ def TestRapiInstanceAdd(node, use_client):
try:
disk_sizes = [utils.ParseUnit(size) for size in qa_config.get("disk")]
disks = [{"size": size} for size in disk_sizes]
- nics = [{}]
+ nics = [{
+ constants.INIC_MAC: qa_config.GetInstanceNicMac(instance),
+ }]
beparams = {
constants.BE_MAXMEM: utils.ParseUnit(qa_config.get(constants.BE_MAXMEM)),
--
1.7.6