added optional custom class param for session.add_node
This commit is contained in:
parent
9e7b5abeb9
commit
c1bb9ed5d8
1 changed files with 8 additions and 9 deletions
|
@ -634,19 +634,23 @@ class Session(object):
|
||||||
if node_two:
|
if node_two:
|
||||||
node_two.lock.release()
|
node_two.lock.release()
|
||||||
|
|
||||||
def add_node(self, _type=NodeTypes.DEFAULT, _id=None, node_options=None):
|
def add_node(self, _type=NodeTypes.DEFAULT, _id=None, node_options=None, _cls=None):
|
||||||
"""
|
"""
|
||||||
Add a node to the session, based on the provided node data.
|
Add a node to the session, based on the provided node data.
|
||||||
|
|
||||||
:param core.emulator.enumerations.NodeTypes _type: type of node to create
|
:param core.emulator.enumerations.NodeTypes _type: type of node to create
|
||||||
:param int _id: id for node, defaults to None for generated id
|
:param int _id: id for node, defaults to None for generated id
|
||||||
:param core.emulator.emudata.NodeOptions node_options: data to create node with
|
:param core.emulator.emudata.NodeOptions node_options: data to create node with
|
||||||
|
:param class _cls: optional custom class to use for a created node
|
||||||
:return: created node
|
:return: created node
|
||||||
:raises core.CoreError: when an invalid node type is given
|
:raises core.CoreError: when an invalid node type is given
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# validate node type, get class, or throw error
|
# validate node type, get class, or throw error
|
||||||
|
if _cls is None:
|
||||||
node_class = self.get_node_class(_type)
|
node_class = self.get_node_class(_type)
|
||||||
|
else:
|
||||||
|
node_class = _cls
|
||||||
|
|
||||||
# set node start based on current session state, override and check when rj45
|
# set node start based on current session state, override and check when rj45
|
||||||
start = self.state > EventTypes.DEFINITION_STATE.value
|
start = self.state > EventTypes.DEFINITION_STATE.value
|
||||||
|
@ -705,13 +709,8 @@ class Session(object):
|
||||||
# set node position and broadcast it
|
# set node position and broadcast it
|
||||||
self.set_node_position(node, node_options)
|
self.set_node_position(node, node_options)
|
||||||
|
|
||||||
# add services to default and physical nodes only
|
# add services to needed nodes
|
||||||
if _type in [
|
if isinstance(node, (CoreNode, PhysicalNode, DockerNode, LxcNode)):
|
||||||
NodeTypes.DEFAULT,
|
|
||||||
NodeTypes.PHYSICAL,
|
|
||||||
NodeTypes.DOCKER,
|
|
||||||
NodeTypes.LXC,
|
|
||||||
]:
|
|
||||||
node.type = node_options.model
|
node.type = node_options.model
|
||||||
logging.debug("set node type: %s", node.type)
|
logging.debug("set node type: %s", node.type)
|
||||||
self.services.add_services(node, node.type, node_options.services)
|
self.services.add_services(node, node.type, node_options.services)
|
||||||
|
|
Loading…
Add table
Reference in a new issue