Code Duplication    Length = 25-28 lines in 2 locations

opcua/common/manage_nodes.py 2 locations

@@ 274-301 (lines=28) @@
271
    results[0].StatusCode.check()
272
    return results[0].AddedNodeId
273
274
275
def create_data_type(parent, nodeid, bname, description=None):
276
    """
277
    Create a new data type to be used in new variables, etc ..
278
    arguments are nodeid, browsename
279
    or namespace index, name
280
    """
281
    nodeid, qname = _parse_nodeid_qname(nodeid, bname)
282
283
    addnode = ua.AddNodesItem()
284
    addnode.RequestedNewNodeId = nodeid
285
    addnode.BrowseName = qname
286
    addnode.NodeClass = ua.NodeClass.DataType
287
    addnode.ParentNodeId = parent.nodeid
288
    addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasSubtype)
289
    #addnode.TypeDefinition = ua.NodeId(ua.ObjectIds.BaseDataVariableType) # No type definition for types
290
    attrs = ua.DataTypeAttributes()
291
    if description is None:
292
        attrs.Description = ua.LocalizedText(qname.Name)
293
    else:
294
        attrs.Description = ua.LocalizedText(description)
295
    attrs.DisplayName = ua.LocalizedText(qname.Name)
296
    attrs.WriteMask = 0
297
    attrs.UserWriteMask = 0
298
    attrs.IsAbstract = False  # True mean they cannot be instanciated
299
    addnode.NodeAttributes = attrs
300
    results = parent.server.add_nodes([addnode])
301
    results[0].StatusCode.check()
302
    return node.Node(parent.server, results[0].AddedNodeId)
303
304
@@ 162-186 (lines=25) @@
159
        outputs = []
160
    return node.Node(parent.server, _create_method(parent, nodeid, qname, callback, inputs, outputs))
161
162
163
def _create_object(server, parentnodeid, nodeid, qname, objecttype):
164
    addnode = ua.AddNodesItem()
165
    addnode.RequestedNewNodeId = nodeid
166
    addnode.BrowseName = qname
167
    addnode.ParentNodeId = parentnodeid
168
    if node.Node(server, parentnodeid).get_type_definition() == ua.NodeId(ua.ObjectIds.FolderType):
169
        addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.Organizes)
170
    else:
171
        addnode.ReferenceTypeId = ua.NodeId(ua.ObjectIds.HasComponent)
172
    addnode.NodeClass = ua.NodeClass.Object
173
    if isinstance(objecttype, int):
174
        addnode.TypeDefinition = ua.NodeId(objecttype)
175
    else:
176
        addnode.TypeDefinition = objecttype
177
    attrs = ua.ObjectAttributes()
178
    attrs.EventNotifier = 0
179
180
    attrs.Description = ua.LocalizedText(qname.Name)
181
    attrs.DisplayName = ua.LocalizedText(qname.Name)
182
    attrs.WriteMask = 0
183
    attrs.UserWriteMask = 0
184
    addnode.NodeAttributes = attrs
185
    results = server.add_nodes([addnode])
186
    results[0].StatusCode.check()
187
    return results[0].AddedNodeId
188
189