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

Reply via email to