get_attribute_value("plLogLevel")
self.tapPortBase = self._attributes.\
get_attribute_value("tapPortBase")
+ self.p2pDeployment = self._attributes.\
+ get_attribute_value("p2pDeployment")
self._logger.setLevel(getattr(logging,self.logLevel))
# Oh... retry...
pass
- # Plan application deployment
- self.do_spanning_deployment_plan()
+ if self.p2pDeployment:
+ # Plan application deployment
+ self.do_spanning_deployment_plan()
# Configure elements per XML data
super(TestbedController, self).do_preconfigure()
"flags": Attribute.ExecReadOnly | Attribute.ExecImmutable,
"validation_function": validation.is_string
}),
+ "p2p_deployment": dict({
+ "name": "p2pDeployment",
+ "help": "Enable peer-to-peer deployment of applications and dependencies. "
+ "When enabled, dependency packages and applications are "
+ "deployed in a P2P fashion, picking a single node to do "
+ "the building or repo download, while all the others "
+ "cooperatively exchange resulting binaries or rpms. "
+ "When deploying to many nodes, this is a far more efficient "
+ "use of resources. It does require re-encrypting and distributing "
+ "the slice's private key. Though it is implemented in a secure "
+ "fashion, if they key's sole purpose is not PlanetLab, then this "
+ "feature should be disabled.",
+ "type": Attribute.BOOL,
+ "value": True,
+ "flags": Attribute.ExecReadOnly | Attribute.ExecImmutable,
+ "validation_function": validation.is_bool
+ }),
"slice_ssh_key": dict({
"name": "sliceSSHKey",
"help": "The controller-local path to the slice user's ssh private key. "
instance.defer_configure("authPass", pl_pwd)
instance.defer_configure("plcHost", plchost)
instance.defer_configure("tapPortBase", self.port_base)
+ instance.defer_configure("p2pDeployment", False) # it's interactive, we don't want it in tests
return instance
pl_desc.set_attribute_value("authPass", pl_pwd)
pl_desc.set_attribute_value("plcHost", plchost)
pl_desc.set_attribute_value("tapPortBase", self.port_base)
+ pl_desc.set_attribute_value("p2pDeployment", False) # it's interactive, we don't want it in tests
return pl_desc, exp_desc
controller.shutdown()
@test_util.skipUnless(test_util.pl_auth() is not None, "Test requires PlanetLab authentication info (PL_USER and PL_PASS environment variables)")
+ @test_util.skipUnless(os.environ.get('NEPI_FULL_TESTS','').lower() in ('1','yes','true','on'),
+ "Test is interactive, requires NEPI_FULL_TESTS=yes")
def test_spanning_deployment(self):
pl, exp = self.make_experiment_desc()
+
+ pl.set_attribute_value("p2pDeployment", True) # we do want it here - even if interactive
from nepi.testbeds import planetlab as plpackage
pl_desc.set_attribute_value("authPass", pl_pwd)
pl_desc.set_attribute_value("plcHost", plchost1)
pl_desc.set_attribute_value("tapPortBase", self.port_base)
+ pl_desc.set_attribute_value("p2pDeployment", False) # it's interactive, we don't want it in tests
pl_desc2 = exp_desc.add_testbed_description(pl_provider)
pl_desc2.set_attribute_value("homeDirectory", self.root_dir+"v2")
pl_desc2.set_attribute_value("authUser", pl_user)
pl_desc2.set_attribute_value("authPass", pl_pwd)
pl_desc2.set_attribute_value("plcHost", plchost2)
- pl_desc2.set_attribute_value("tapPortBase", self.port_base+100)
+ pl_desc2.set_attribute_value("tapPortBase", self.port_base+500)
+ pl_desc2.set_attribute_value("p2pDeployment", False) # it's interactive, we don't want it in tests
return pl_desc, pl_desc2, exp_desc
pl_desc.set_attribute_value("authPass", pl_pwd)
pl_desc.set_attribute_value("plcHost", plchost1)
pl_desc.set_attribute_value("tapPortBase", self.port_base)
+ pl_desc.set_attribute_value("p2pDeployment", False) # it's interactive, we don't want it in tests
pl_desc2 = exp_desc.add_testbed_description(pl_provider)
pl_desc2.set_attribute_value("homeDirectory", self.root_dir+"v2")
pl_desc2.set_attribute_value("authUser", pl_user)
pl_desc2.set_attribute_value("authPass", pl_pwd)
pl_desc2.set_attribute_value("plcHost", plchost2)
- pl_desc.set_attribute_value("tapPortBase", self.port_base+100)
+ pl_desc2.set_attribute_value("tapPortBase", self.port_base+500)
+ pl_desc2.set_attribute_value("p2pDeployment", False) # it's interactive, we don't want it in tests
return pl_desc, pl_desc2, exp_desc
pl_desc.set_attribute_value("authPass", pl_pwd)
pl_desc.set_attribute_value("plcHost", plchost)
pl_desc.set_attribute_value("tapPortBase", self.port_base)
+ pl_desc.set_attribute_value("p2pDeployment", False) # it's interactive, we don't want it in tests
return pl_desc, exp_desc