2 # -*- coding: utf-8 -*-
4 from constants import TESTBED_ID, TESTBED_VERSION
5 from nepi.core import metadata
6 from nepi.core.attributes import Attribute
7 from nepi.util import validation, tags
8 from nepi.util.constants import ApplicationStatus as AS
14 ### Connection functions ####
16 def connect_cross(testbed_instance, guid, cross_data):
18 testbed_instance.set(guid, "cross", True)
20 ### Creation functions ###
22 def create_node(testbed_instance, guid):
23 testbed_instance.elements[guid] = NODE
25 def create_iface(testbed_instance, guid):
26 testbed_instance.elements[guid] = IFACE
28 def create_application(testbed_instance, guid):
29 testbed_instance.elements[guid] = APP
31 ### Start/Stop functions ###
33 ### Status functions ###
35 def status_application(testbed_instance, guid):
36 return AS.STATUS_FINISHED
38 ### Factory information ###
40 connector_types = dict({
42 "help": "Connector from node to applications",
48 "help": "Connector from node to network interfaces",
54 "help": "Connector to a Node",
60 "help": "Connector to a Interface",
66 "help": "Connector to an Interface in other testbed",
75 "from": (TESTBED_ID, NODE, "devs"),
76 "to": (TESTBED_ID, IFACE, "node"),
80 "from": (TESTBED_ID, IFACE, "iface"),
81 "to": (TESTBED_ID, IFACE, "iface"),
85 "from": (TESTBED_ID, NODE, "apps"),
86 "to": (TESTBED_ID, APP, "node"),
90 "from": (TESTBED_ID, IFACE, "cross"),
91 "to": ("mock2", IFACE, "cross"),
92 "init_code": connect_cross,
99 "help": "fake attribute",
100 "type": Attribute.BOOL,
102 "validation_function": validation.is_bool
106 "help": "test attribute",
107 "type": Attribute.STRING,
108 "validation_function": validation.is_string
112 "help": "Attribute that indicates if cross connection was performed",
113 "type": Attribute.BOOL,
115 "validation_function": validation.is_bool
117 "maxAddresses": dict({
118 "name": "maxAddresses",
119 "help": "Attribute that indicates the maximum number of addresses for an interface",
120 "type": Attribute.INTEGER,
122 "flags" : Attribute.DesignReadOnly |\
123 Attribute.ExecInvisible |\
125 "validation_function": validation.is_integer
136 factories_order = [ NODE, IFACE, APP ]
138 factories_info = dict({
141 "category": "topology",
142 "create_function": create_node,
143 "start_function": None,
144 "stop_function": None,
145 "status_function": None,
146 "box_attributes": ["fake","test"],
147 "connector_types": ["devs", "apps"],
148 "tags": [tags.MOBILE, tags.NODE, tags.ALLOW_ROUTES],
151 "help": "Fake iface",
152 "category": "devices",
153 "create_function": create_iface,
154 "start_function": None,
155 "stop_function": None,
156 "status_function": None,
157 "allow_addresses": True,
158 "factory_attributes": ["fake", "maxAddresses"],
159 "box_attributes": ["fake", "test", "cross"],
160 "connector_types": ["node", "iface", "cross"],
161 "tags": [tags.INTERFACE, tags.ALLOW_ADDRESSES],
164 "help": "Fake application",
165 "category": "applications",
166 "create_function": create_application,
167 "start_function": None,
168 "stop_function": None,
169 "status_function": status_application,
170 "box_attributes": ["fake", "test"],
171 "connector_types": ["node"],
173 "tags": [tags.APPLICATION],
177 testbed_attributes = dict({
180 "help": "fake attribute",
181 "type": Attribute.BOOL,
185 "validation_function": validation.is_bool
189 "help": "test attribute",
190 "type": Attribute.STRING,
191 "validation_function": validation.is_string
195 class MetadataInfo(metadata.MetadataInfo):
197 def connector_types(self):
198 return connector_types
201 def connections(self):
205 def attributes(self):
213 def create_order(self):
214 return factories_order
217 def configure_order(self):
218 return factories_order
221 def factories_info(self):
222 return factories_info
225 def testbed_attributes(self):
226 return testbed_attributes
229 def testbed_id(self):
233 def testbed_version(self):
234 return TESTBED_VERSION