aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rumba/model.py3
-rw-r--r--rumba/testbeds/jfed.py36
2 files changed, 33 insertions, 6 deletions
diff --git a/rumba/model.py b/rumba/model.py
index a223fb4..62125a6 100644
--- a/rumba/model.py
+++ b/rumba/model.py
@@ -215,7 +215,7 @@ class SSHConfig:
#
class Node:
def __init__(self, name, difs=None, dif_registrations=None,
- client=False, policies=None):
+ client=False, policies=None, machine_type=None):
self.name = name
if difs is None:
difs = list()
@@ -225,6 +225,7 @@ class Node:
if dif_registrations is None:
dif_registrations = dict()
self.dif_registrations = dif_registrations
+ self.machine_type = machine_type
self.ssh_config = SSHConfig(name)
self.ipcps = []
self.policies = dict()
diff --git a/rumba/testbeds/jfed.py b/rumba/testbeds/jfed.py
index f40cb06..7182143 100644
--- a/rumba/testbeds/jfed.py
+++ b/rumba/testbeds/jfed.py
@@ -47,7 +47,8 @@ class Testbed(mod.Testbed):
def __init__(self, exp_name, username, cert_file, exp_hours="2",
proj_name="ARCFIRE", authority="wall2.ilabt.iminds.be",
- image=None, image_custom=False, image_owner=None):
+ image=None, image_custom=False, image_owner=None,
+ use_physical_machines=None):
passwd = getpass.getpass(prompt="Password for certificate file: ")
mod.Testbed.__init__(self,
exp_name,
@@ -55,7 +56,6 @@ class Testbed(mod.Testbed):
passwd,
proj_name,
http_proxy="https://proxy.atlantis.ugent.be:8080")
- self.authority = "urn:publicid:IDN+" + authority + "+authority+cm"
self.auth_name = authority
self.cert_file = cert_file
self.exp_hours = exp_hours
@@ -64,6 +64,18 @@ class Testbed(mod.Testbed):
self.manifest = os.path.join(mod.tmp_dir, self.exp_name + ".rrspec")
self.jfed_jar = os.path.join(mod.cache_dir,
'jfed_cli/experimenter-cli.jar')
+
+ if "exogeni" in authority:
+ self.authority = "urn:publicid:IDN+" + authority + "+authority+am"
+ else:
+ self.authority = "urn:publicid:IDN+" + authority + "+authority+cm"
+
+ if use_physical_machines is None:
+ if "wall" in authority or "cloudlab" in authority:
+ self.use_physical_machines=True
+ else:
+ self.use_physical_machines=False
+
if image is not None:
if image_owner is None:
if not image_custom:
@@ -126,12 +138,26 @@ class Testbed(mod.Testbed):
el = doc.createElement("node")
top_el.appendChild(el)
el.setAttribute("client_id", node.name)
- el.setAttribute("exclusive", "true")
+
+ if node.machine_type is None:
+ if (self.use_physical_machines):
+ el.setAttribute("exclusive", "true")
+ else:
+ el.setAttribute("exclusive", "false")
+ elif node.machine_type == "virtual":
+ el.setAttribute("exclusive", "false")
+ else:
+ el.setAttribute("exclusive", "true")
+
el.setAttribute("component_manager_id", self.authority)
el2 = doc.createElement("sliver_type")
el.appendChild(el2)
- el2.setAttribute("name", "raw-pc")
+
+ if (el.getAttribute("exclusive") == True):
+ el2.setAttribute("name", "raw-pc")
+ else:
+ el2.setAttribute("name", "default-vm")
if self.image is not None:
image_el = doc.createElement("disk_image")
@@ -153,7 +179,7 @@ class Testbed(mod.Testbed):
top_el.appendChild(el)
el.setAttribute("client_id", dif.name)
- el2 = doc.createElement("component_manager_id")
+ el2 = doc.createElement("component_manager")
el2.setAttribute("name", self.authority)
el.appendChild(el2)