@@ -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
119105def 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
144130def 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