def provision_node_instance(self, instance_id: str, service_id: str, plan_id: str, parameters: dict=None) -> ProvisionedServiceSpec: url = parameters.get("url") if not url: print("Error: {0}\n".format("url not contained in provision parameters!")) return ProvisionedServiceSpec(state="failed") nodes_to_add = parameters.get("nodesToAdd") if not nodes_to_add: print("Error: {0}\n".format("nodes_to_add not contained in provision parameters!")) return ProvisionedServiceSpec(state="failed") add_nodes_items = [] for node_to_add in nodes_to_add: add_nodes_item = ua.AddNodesItem() if "parentNodeId" in node_to_add: add_nodes_item.ParentNodeId = ua.ExpandedNodeId(node_to_add.get("parentNodeId")) if "referenceTypeId" in node_to_add: add_nodes_item.ReferenceTypeId = ua.NodeId(node_to_add.get("referenceTypeId")) if "requestedNewNodeId" in node_to_add: add_nodes_item.RequestedNewNodeId = ua.ExpandedNodeId(node_to_add.get("requestedNewNodeId")) if "browseName" in node_to_add: add_nodes_item.BrowseName = ua.QualifiedName(node_to_add.get("browseName")) if "nodeClass" in node_to_add: add_nodes_item.NodeClass = ua.NodeClass(node_to_add.get("nodeClass")) add_nodes_items.append(add_nodes_item) print(add_nodes_items) client = Client(url) try: client.connect() nodes = [] for add_nodes_item in add_nodes_items: parent_node = client.get_node(add_nodes_item.ParentNodeId) if add_nodes_item.NodeClass == 1: obj = parent_node.add_object(add_nodes_item.RequestedNewNodeId, add_nodes_item.BrowseName) nodes.append(obj) elif add_nodes_item.NodeClass == 2: var = parent_node.add_variable(add_nodes_item.RequestedNewNodeId, add_nodes_item.BrowseName) nodes.append(var) elif add_nodes_item.NodeClass == 4: method = parent_node.add_method() nodes.append(method) else: folder = parent_node.add_folder(add_nodes_item.RequestedNewNodeId, add_nodes_item.BrowseName) nodes.append(folder) service_instance = OpcuaServiceInstance(instance_id, service_id, plan_id, parameters) service_instance.params["nodes"] = nodes service_instance_map = dict() service_instance_map[instance_id] = service_instance self.service_instance_map = service_instance_map except Exception as e: print("Error: {0}\n".format(e)) return ProvisionedServiceSpec(state="failed") print("Node management service instance {0} is provisioned successfully\n".format(instance_id)) return ProvisionedServiceSpec()
def __init__(self): self.BooleanValue = True self.SByteValue = 0 self.ByteValue = 0 self.Int16Value = 0 self.UInt16Value = 0 self.Int32Value = 0 self.UInt32Value = 0 self.Int64Value = 0 self.UInt64Value = 0 self.FloatValue = 0 self.DoubleValue = 0 self.StringValue = '' self.DateTimeValue = datetime.utcnow() self.GuidValue = uuid.uuid4() self.ByteStringValue = b'' self.XmlElementValue = ua.XmlElement() self.NodeIdValue = ua.NodeId() self.ExpandedNodeIdValue = ua.ExpandedNodeId() self.QualifiedNameValue = ua.QualifiedName() self.LocalizedTextValue = ua.LocalizedText() self.StatusCodeValue = ua.StatusCode() self.VariantValue = ua.Variant() self.EnumerationValue = 0 self.StructureValue = ua.ExtensionObject() self.Number = ua.Variant() self.Integer = ua.Variant() self.UInteger = ua.Variant()
def __init__(self): self.BooleanDataType = True self.SByteDataType = 0 self.ByteDataType = 0 self.Int16DataType = 0 self.UInt16DataType = 0 self.Int32DataType = 0 self.UInt32DataType = 0 self.Int64DataType = 0 self.UInt64DataType = 0 self.FloatDataType = 0 self.DoubleDataType = 0 self.StringDataType = '' self.DateTimeDataType = datetime.utcnow() self.GuidDataType = uuid.uuid4() self.ByteStringDataType = b'' self.XmlElementDataType = ua.XmlElement() self.NodeIdDataType = ua.NodeId() self.ExpandedNodeIdDataType = ua.ExpandedNodeId() self.QualifiedNameDataType = ua.QualifiedName() self.LocalizedTextDataType = ua.LocalizedText() self.StatusCodeDataType = ua.StatusCode() self.VariantDataType = ua.Variant()
def test_expandednodeid(self): nid = ua.ExpandedNodeId() self.assertEqual(nid.NodeIdType, ua.NodeIdType.TwoByte) nid2 = nodeid_from_binary(ua.utils.Buffer(nodeid_to_binary(nid))) self.assertEqual(nid, nid2)