MCPcopy Create free account
hub / github.com/FreeOpcUa/python-opcua / _copy_node

Function _copy_node

opcua/common/copy_node.py:22–46  ·  view source on GitHub ↗
(server, parent_nodeid, rdesc, nodeid, recursive)

Source from the content-addressed store, hash-verified

20
21
22def _copy_node(server, parent_nodeid, rdesc, nodeid, recursive):
23 addnode = ua.AddNodesItem()
24 addnode.RequestedNewNodeId = nodeid
25 addnode.BrowseName = rdesc.BrowseName
26 addnode.ParentNodeId = parent_nodeid
27 addnode.ReferenceTypeId = rdesc.ReferenceTypeId
28 addnode.TypeDefinition = rdesc.TypeDefinition
29 addnode.NodeClass = rdesc.NodeClass
30
31 node_to_copy = Node(server, rdesc.NodeId)
32
33 attrObj = getattr(ua, rdesc.NodeClass.name + "Attributes")
34 _read_and_copy_attrs(node_to_copy, attrObj(), addnode)
35
36 res = server.add_nodes([addnode])[0]
37
38 added_nodes = [res.AddedNodeId]
39
40 if recursive:
41 descs = node_to_copy.get_children_descriptions()
42 for desc in descs:
43 nodes = _copy_node(server, res.AddedNodeId, desc, nodeid=ua.NodeId(namespaceidx=desc.NodeId.NamespaceIndex), recursive=True)
44 added_nodes.extend(nodes)
45
46 return added_nodes
47
48
49def _rdesc_from_node(parent, node):

Callers 1

copy_nodeFunction · 0.85

Calls 4

NodeClass · 0.90
_read_and_copy_attrsFunction · 0.85
add_nodesMethod · 0.45

Tested by

no test coverage detected