From: Alina Quereilhac Date: Thu, 10 Feb 2011 18:33:54 +0000 (+0100) Subject: can build netns experiment description X-Git-Tag: nepi_v2~205 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=d6ab3be68e24bb0e766d2fccdd5125934275d1ff;p=nepi.git can build netns experiment description --- diff --git a/examples/design1.py b/examples/design1.py index 2d1c4108..68c61fba 100644 --- a/examples/design1.py +++ b/examples/design1.py @@ -13,7 +13,7 @@ iface1 = netns.create("NodeInterface") iface1.set_attribute_value("up", True) node1.connector("devs").connect(iface1.connector("node")) ip1 = iface1.add_address() -p1.set_attribute_value("Address", "10.0.0.1") +ip1.set_attribute_value("Address", "10.0.0.1") iface2 = netns.create("NodeInterface") iface2.set_attribute_value("up", True) node2.connector("devs").connect(iface2.connector("node")) @@ -27,7 +27,7 @@ app = netns.create("Application") app.set_attribute_value("command", "ping -qc10 10.0.0.2") app.connector("node").connect(node1.connector("apps")) -#print experiment.xml_description +print experiment.xml_description description = """ diff --git a/src/nepi/core/attributes.py b/src/nepi/core/attributes.py index 02f68c38..5da6df40 100644 --- a/src/nepi/core/attributes.py +++ b/src/nepi/core/attributes.py @@ -84,7 +84,7 @@ class Attribute(object): return self._help @property - def readornly(self): + def readonly(self): return self._readonly @property @@ -99,6 +99,10 @@ class Attribute(object): def allowed(self): return self._allowed + @property + def validation_function(self): + return self._validation_function + def get_value(self): return self._value diff --git a/src/nepi/core/description.py b/src/nepi/core/description.py index 536ee499..5fd0387f 100644 --- a/src/nepi/core/description.py +++ b/src/nepi/core/description.py @@ -110,7 +110,7 @@ class Connector(object): def can_connect(self, connector): connector_type_id = connector.connector_type.connector_type_id - self.connector_type.can_connect(connector_type_id) + return self.connector_type.can_connect(connector_type_id) def destroy(self): for connector in self._connections: @@ -160,7 +160,7 @@ class Address(AttributesMap): self.add_attribute(name = "NetPrefix", help = "Network prefix for the address", type = Attribute.INTEGER, - prefix_range = prefix_range, + range = prefix_range, validation_function = validation.is_integer) if family == AF_INET: self.add_attribute(name = "Broadcast", @@ -215,7 +215,7 @@ class Box(AttributesMap): for connector_type in factory.connector_types: connector = Connector(self, connector_type) - self._connectors[connector_type.connector_id] = connector + self._connectors[connector_type.name] = connector for trace in factory.traces: tr = Trace(trace.name, trace.help, trace.enabled) self._traces[trace.name] = tr @@ -277,7 +277,7 @@ class AddressableBox(Box): super(AddressableBox, self).__init__(guid, factory, container) self._family = family # maximum number of addresses this box can have - self._max_addresses = max_addressess + self._max_addresses = max_addresses self._addresses = list() @property @@ -456,10 +456,11 @@ class TestbedDescription(AttributesMap): return self._boxes.values() def create(self, factory_id): - guid = self.guid_generator.next() - factory = self._provider.factories(factory_id) + guid = self._guid_generator.next() + factory = self._provider.factory(factory_id) box = factory.create(guid, self) self._boxes[guid] = box + return box def delete(self, guid): box = self._boxes[guid] diff --git a/src/nepi/core/experiment.py b/src/nepi/core/experiment.py index 76b8143a..cc883863 100644 --- a/src/nepi/core/experiment.py +++ b/src/nepi/core/experiment.py @@ -22,6 +22,7 @@ class ExperimentDescription(object): self._guid_generator, testbed_version, testbed_provider) guid = testbed_description.guid self._testbed_descriptions[guid] = testbed_description + return testbed_description def remove_testbed_description(self, testbed_description): guid = testbed_description.guid diff --git a/src/nepi/testbeds/netns/metadata_v01.py b/src/nepi/testbeds/netns/metadata_v01.py index 8207c52d..a0faef37 100644 --- a/src/nepi/testbeds/netns/metadata_v01.py +++ b/src/nepi/testbeds/netns/metadata_v01.py @@ -7,7 +7,7 @@ from nepi.util import validation def get_metadata(): return dict({ - "node": dict({ + "Node": dict({ "factory_type": "routing", "display_name": "Node", "help": "Node", @@ -34,7 +34,7 @@ def get_metadata(): validation.is_bool) ] }), - "p2piface": dict({ + "P2PInterface": dict({ "factory_type": "addressable", "family": AF_INET, "max_addresses": 1, @@ -78,7 +78,7 @@ def get_metadata(): validation.is_bool), ] }), - "tapiface": dict({ + "TapNodeInterface": dict({ "factory_type": "addressable", "family": AF_INET, "max_addresses": 1, @@ -123,7 +123,7 @@ def get_metadata(): validation.is_bool), ] }), - "nodeiface": dict({ #TODO: Addresses! + "NodeInterface": dict({ "factory_type": "addressable", "family": AF_INET, "max_addresses": 1, @@ -165,7 +165,7 @@ def get_metadata(): validation.is_bool), ] }), - "switch": dict({ + "Switch": dict({ "display_name": "Switch", "help": "Switch interface", "category": "devices", @@ -196,7 +196,7 @@ def get_metadata(): #TODO:("MaxAge", help, type, value, range, allowed, readonly, validation_function) ] }), - "application": dict({ + "Application": dict({ "display_name": "Application", "help": "Generic executable command line application", "category": "applications", diff --git a/src/nepi/util/validation.py b/src/nepi/util/validation.py index 954aa055..8e0e94b8 100644 --- a/src/nepi/util/validation.py +++ b/src/nepi/util/validation.py @@ -15,15 +15,15 @@ def is_string(value): def is_ip4_address(value): try: - ipaddr.IPv4(value) - except ipaddr.Error: + ipaddr.IPv4Address(value) + except ipaddr.AddressValueError: return False return True def is_ip6_address(value): try: - ipaddr.IPv6(value) - except ipaddr.Error: + ipaddr.IPv6Address(value) + except ipaddr.AddressValueError: return False return True