def instantiate(parent, node_type, nodeid=None, bname=None, dname=None, idx=0, instantiate_optional=True): """ instantiate a node type under a parent node. nodeid and browse name of new node can be specified, or just namespace index If they exists children of the node type, such as components, variables and properties are also instantiated """ rdesc = _rdesc_from_node(parent, node_type) rdesc.TypeDefinition = node_type.nodeid if nodeid is None: nodeid = ua.NodeId( namespaceidx=idx ) # will trigger automatic node generation in namespace idx if bname is None: bname = rdesc.BrowseName elif isinstance(bname, str): bname = ua.QualifiedName.from_string(bname) nodeids = _instantiate_node(parent.server, Node(parent.server, rdesc.NodeId), parent.nodeid, rdesc, nodeid, bname, dname=dname, instantiate_optional=instantiate_optional) return [Node(parent.server, nid) for nid in nodeids]
def instantiate(parent, node_type, nodeid=None, bname=None, dname=None, idx=0, instantiate_optional=True): """ instantiate a node type under a parent node. nodeid and browse name of new node can be specified, or just namespace index If they exists children of the node type, such as components, variables and properties are also instantiated """ rdesc = _rdesc_from_node(parent, node_type) rdesc.TypeDefinition = node_type.nodeid if nodeid is None: nodeid = ua.NodeId(namespaceidx=idx) # will trigger automatic node generation in namespace idx if bname is None: bname = rdesc.BrowseName elif isinstance(bname, str): bname = ua.QualifiedName.from_string(bname) nodeids = _instantiate_node( parent.server, Node(parent.server, rdesc.NodeId), parent.nodeid, rdesc, nodeid, bname, dname=dname, instantiate_optional=instantiate_optional) return [Node(parent.server, nid) for nid in nodeids]