Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
opcua-asyncio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nikola Balog
opcua-asyncio
Commits
9f873186
Commit
9f873186
authored
Jan 24, 2016
by
olivier R-D
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix deletion of node without Values
parent
bfa3a028
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
7 deletions
+21
-7
opcua/server/address_space.py
opcua/server/address_space.py
+11
-7
tests/tests.py
tests/tests.py
+10
-0
No files found.
opcua/server/address_space.py
View file @
9f873186
...
...
@@ -253,17 +253,21 @@ class NodeManagementService(object):
if
rdesc
.
NodeId
==
item
.
NodeId
:
self
.
_aspace
[
elem
].
references
.
remove
(
rdesc
)
for
handle
,
callback
in
list
(
self
.
_aspace
[
item
.
NodeId
].
attributes
[
ua
.
AttributeIds
.
Value
].
datachange_callbacks
.
items
()):
try
:
callback
(
handle
,
None
,
ua
.
StatusCode
(
ua
.
StatusCodes
.
BadNodeIdUnknown
))
self
.
_aspace
.
delete_datachange_callback
(
handle
)
except
Exception
as
ex
:
self
.
logger
.
exception
(
"Error calling datachange callback %s, %s, %s"
,
k
,
v
,
ex
)
self
.
_delete_node_callbacks
(
self
.
_aspace
[
item
.
NodeId
])
del
self
.
_aspace
[
item
.
NodeId
]
del
(
self
.
_aspace
[
item
.
NodeId
])
return
ua
.
StatusCode
()
def
_delete_node_callbacks
(
self
,
nodedata
):
if
ua
.
AttributeIds
.
Value
in
nodedata
.
attributes
:
for
handle
,
callback
in
nodedata
.
attributes
[
ua
.
AttributeIds
.
Value
].
datachange_callbacks
.
items
():
try
:
callback
(
handle
,
None
,
ua
.
StatusCode
(
ua
.
StatusCodes
.
BadNodeIdUnknown
))
self
.
_aspace
.
delete_datachange_callback
(
handle
)
except
Exception
as
ex
:
self
.
logger
.
exception
(
"Error calling datachange callback %s, %s, %s"
,
k
,
v
,
ex
)
def
add_references
(
self
,
refs
,
user
=
User
.
Admin
):
result
=
[]
for
ref
in
refs
:
...
...
tests/tests.py
View file @
9f873186
...
...
@@ -406,6 +406,16 @@ class CommonTests(object):
with
self
.
assertRaises
(
ua
.
UaStatusCodeError
):
obj
.
get_child
([
"2:FolderToDelete"
,
"2:VarToDelete"
])
def
test_delete_nodes_recursive
(
self
):
obj
=
self
.
opc
.
get_objects_node
()
fold
=
obj
.
add_folder
(
2
,
"FolderToDeleteR"
)
var
=
fold
.
add_variable
(
2
,
"VarToDeleteR"
,
9.1
)
self
.
opc
.
delete_nodes
([
fold
,
var
])
with
self
.
assertRaises
(
ua
.
UaStatusCodeError
):
var
.
set_value
(
7.8
)
with
self
.
assertRaises
(
ua
.
UaStatusCodeError
):
obj
.
get_child
([
"2:FolderToDelete"
,
"2:VarToDelete"
])
def
test_server_node
(
self
):
node
=
self
.
opc
.
get_server_node
()
self
.
assertEqual
(
ua
.
QualifiedName
(
'Server'
,
0
),
node
.
get_browse_name
())
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment