Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
 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()
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
 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)