Skip to content

Commit 03543bb

Browse files
committed
fix create_variable_type
1 parent 98d64b3 commit 03543bb

1 file changed

Lines changed: 6 additions & 22 deletions

File tree

opcua/common/manage_nodes.py

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,25 +95,11 @@ def create_variable_type(parent, nodeid, bname, datatype):
9595
or idx, name and data type
9696
"""
9797
nodeid, qname = _parse_nodeid_qname(nodeid, bname)
98+
if datatype and isinstance(datatype, int):
99+
datatype = ua.NodeId(datatype, 0)
98100
if datatype and not isinstance(datatype, ua.NodeId):
99-
raise RuntimeError("Data type should be nodeid, got {0}".format(datatype))
100-
addnode = ua.AddNodesItem()
101-
addnode.RequestedNewNodeId = nodeid
102-
addnode.BrowseName = qname
103-
addnode.NodeClass = ua.NodeClass.Variable
104-
addnode.ParentNodeId = parent.nodeid
105-
addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasSubtype)
106-
attrs = ua.VariableTypeAttributes()
107-
attrs.Description = ua.LocalizedText(qname.Name)
108-
attrs.DisplayName = ua.LocalizedText(qname.Name)
109-
attrs.DataType = datatype
110-
attrs.IsAbstract = False
111-
attrs.WriteMask = 0
112-
attrs.UserWriteMask = 0
113-
addnode.NodeAttributes = attrs
114-
results = parent.server.add_nodes([addnode])
115-
results[0].StatusCode.check()
116-
return results[0].AddedNodeId
101+
raise RuntimeError("Data type argument must be a nodeid or an int refering to a nodeid, received: {}".format(datatype))
102+
return node.Node(parent.server, _create_variable_type(parent.server, parent.nodeid, nodeid, qname, datatype))
117103

118104

119105
def create_reference_type(parent, nodeid, bname):
@@ -138,7 +124,7 @@ def create_reference_type(parent, nodeid, bname):
138124
addnode.NodeAttributes = attrs
139125
results = parent.server.add_nodes([addnode])
140126
results[0].StatusCode.check()
141-
return results[0].AddedNodeId
127+
return node.Node(parent.server, results[0].AddedNodeId)
142128

143129

144130
def create_object_type(parent, nodeid, bname):
@@ -269,6 +255,7 @@ def _create_variable_type(server, parentnodeid, nodeid, qname, datatype, value=N
269255
attrs.Description = ua.LocalizedText(qname.Name)
270256
attrs.DisplayName = ua.LocalizedText(qname.Name)
271257
attrs.DataType = datatype
258+
attrs.IsAbstract = False
272259
if value:
273260
attrs.Value = value
274261
if isinstance(value, (list, tuple)):
@@ -278,9 +265,6 @@ def _create_variable_type(server, parentnodeid, nodeid, qname, datatype, value=N
278265
#attrs.ArrayDimensions = None
279266
attrs.WriteMask = 0
280267
attrs.UserWriteMask = 0
281-
attrs.Historizing = 0
282-
attrs.AccessLevel = ua.AccessLevel.CurrentRead.mask
283-
attrs.UserAccessLevel = ua.AccessLevel.CurrentRead.mask
284268
addnode.NodeAttributes = attrs
285269
results = server.add_nodes([addnode])
286270
results[0].StatusCode.check()

0 commit comments

Comments
 (0)