can build netns experiment description
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Thu, 10 Feb 2011 18:33:54 +0000 (19:33 +0100)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Thu, 10 Feb 2011 18:33:54 +0000 (19:33 +0100)
examples/design1.py
src/nepi/core/attributes.py
src/nepi/core/description.py
src/nepi/core/experiment.py
src/nepi/testbeds/netns/metadata_v01.py
src/nepi/util/validation.py

index 2d1c410..68c61fb 100644 (file)
@@ -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 = """
 <experiment>
index 02f68c3..5da6df4 100644 (file)
@@ -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
 
index 536ee49..5fd0387 100644 (file)
@@ -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]
index 76b8143..cc88386 100644 (file)
@@ -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
index 8207c52..a0faef3 100644 (file)
@@ -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",
index 954aa05..8e0e94b 100644 (file)
@@ -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