Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
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
0
Merge Requests
0
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
Ophélie Gagnard
slapos.core
Commits
82cc5186
Commit
82cc5186
authored
Feb 01, 2022
by
Ophélie Gagnard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_metadata_transform_agent: do simply
parent
5eaaf6b8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
61 deletions
+48
-61
master/bt5/slapos_metadata_transform_agent/MixinTemplateItem/portal_components/mixin.erp5_slapos.PathMappingMixin.py
...m/portal_components/mixin.erp5_slapos.PathMappingMixin.py
+44
-57
master/bt5/slapos_metadata_transform_agent/PathTemplateItem/portal_callables/Metadata_convertDataStreamToArray.py
...tem/portal_callables/Metadata_convertDataStreamToArray.py
+2
-2
master/bt5/slapos_metadata_transform_agent/PathTemplateItem/portal_callables/Metadata_convertDataStreamToArray.xml
...em/portal_callables/Metadata_convertDataStreamToArray.xml
+2
-2
No files found.
master/bt5/slapos_metadata_transform_agent/MixinTemplateItem/portal_components/mixin.erp5_slapos.PathMappingMixin.py
View file @
82cc5186
...
...
@@ -2,112 +2,102 @@ from BTrees.LOBTree import LOBTree
from
BTrees.OLBTree
import
OLBTree
class
PathMappingMixin
:
def
_init_mapping
(
self
,
label
=
''
):
# @label should be either 'test' or nothing.
def
_init_mapping
(
self
):
# It is used to perform tests on mappings without altering actual production mappings.
self
.
last_uid_path
=
""
# no path is empty (nor starts with a space)
path_uid
,
uid_path
,
path_hash64
,
hash64_path
=
self
.
_get_mappings
(
label
)
path_uid
,
uid_path
,
path_hash64
,
hash64_path
=
self
.
_get_mappings
()
if
path_uid
is
None
or
uid_path
is
None
or
path_hash64
is
None
or
hash64_path
is
None
:
path_uid
=
OLBTree
()
uid_path
=
LOBTree
()
path_hash64
=
OLBTree
()
hash64_path
=
LOBTree
()
path_uid
[
self
.
last_uid_path
]
=
0
uid_path
[
0
]
=
self
.
last_uid_path
path_hash64
[
self
.
last_uid_path
]
=
self
.
hash64
(
self
.
last_uid_path
)
hash64_path
[
self
.
hash64
(
self
.
last_uid_path
)]
=
self
.
last_uid_path
self
.
_set_mappings
(
path_uid
,
uid_path
,
path_hash64
,
hash64_path
,
label
)
self
.
_set_mappings
(
path_uid
,
uid_path
,
path_hash64
,
hash64_path
)
return
path_uid
,
uid_path
,
path_hash64
,
hash64_path
def
reset_mappings
(
self
,
label
=
''
):
self
.
_set_mappings
(
None
,
None
,
None
,
None
,
label
)
def
reset_mappings
(
self
):
self
.
_set_mappings
(
None
,
None
,
None
,
None
)
def
get_mappings
(
self
,
label
=
''
):
def
get_mappings
(
self
):
# TMP: this method is an accessible version of _get_mappings() (identical)
# it should be deleted as soon as possible
if
label
!=
''
:
label
=
'_'
+
label
portal
=
self
.
getPortalObject
()
module
=
portal
.
data_array_module
return
getattr
(
module
,
"__path_uid_mapping"
+
label
,
None
),
getattr
(
module
,
"__uid_path_mapping"
+
label
,
None
),
getattr
(
module
,
"__path_hash64_mapping"
+
label
,
None
),
getattr
(
module
,
"__hash64_path_mapping"
+
label
,
None
)
return
getattr
(
module
,
"__path_uid_mapping"
,
None
),
getattr
(
module
,
"__uid_path_mapping"
,
None
),
getattr
(
module
,
"__path_hash64_mapping"
,
None
),
getattr
(
module
,
"__hash64_path_mapping"
,
None
)
def
set_mappings
(
self
,
path_uid
,
uid_path
,
path_hash64
,
hash64_path
,
label
=
''
):
def
set_mappings
(
self
,
path_uid
,
uid_path
,
path_hash64
,
hash64_path
):
# TMP: this method is an accessible version of _set_mappings() (identical)
# it should be deleted as soon as possible
if
label
!=
''
:
label
=
'_'
+
label
portal
=
self
.
getPortalObject
()
module
=
portal
.
data_array_module
setattr
(
module
,
"__path_uid_mapping"
+
label
,
path_uid
)
setattr
(
module
,
"__uid_path_mapping"
+
label
,
uid_path
)
setattr
(
module
,
"__path_hash64_mapping"
+
label
,
path_hash64
)
setattr
(
module
,
"__hash64_path_mapping"
+
label
,
hash64_path
)
def
_get_mappings
(
self
,
label
=
''
):
if
label
!=
''
:
label
=
'_'
+
label
setattr
(
module
,
"__path_uid_mapping"
,
path_uid
)
setattr
(
module
,
"__uid_path_mapping"
,
uid_path
)
setattr
(
module
,
"__path_hash64_mapping"
,
path_hash64
)
setattr
(
module
,
"__hash64_path_mapping"
,
hash64_path
)
def
_get_mappings
(
self
):
portal
=
self
.
getPortalObject
()
module
=
portal
.
data_array_module
return
getattr
(
module
,
"__path_uid_mapping"
+
label
,
None
),
getattr
(
module
,
"__uid_path_mapping"
+
label
,
None
),
getattr
(
module
,
"__path_hash64_mapping"
+
label
,
None
),
getattr
(
module
,
"__hash64_path_mapping"
+
label
,
None
)
return
getattr
(
module
,
"__path_uid_mapping"
,
None
),
getattr
(
module
,
"__uid_path_mapping"
,
None
),
getattr
(
module
,
"__path_hash64_mapping"
,
None
),
getattr
(
module
,
"__hash64_path_mapping"
,
None
)
def
_set_mappings
(
self
,
path_uid
,
uid_path
,
path_hash64
,
hash64_path
,
label
=
''
):
if
label
!=
''
:
label
=
'_'
+
label
def
_set_mappings
(
self
,
path_uid
,
uid_path
,
path_hash64
,
hash64_path
):
portal
=
self
.
getPortalObject
()
module
=
portal
.
data_array_module
setattr
(
module
,
"__path_uid_mapping"
+
label
,
path_uid
)
setattr
(
module
,
"__uid_path_mapping"
+
label
,
uid_path
)
setattr
(
module
,
"__path_hash64_mapping"
+
label
,
path_hash64
)
setattr
(
module
,
"__hash64_path_mapping"
+
label
,
hash64_path
)
setattr
(
module
,
"__path_uid_mapping"
,
path_uid
)
setattr
(
module
,
"__uid_path_mapping"
,
uid_path
)
setattr
(
module
,
"__path_hash64_mapping"
,
path_hash64
)
setattr
(
module
,
"__hash64_path_mapping"
,
hash64_path
)
def
add_path
(
self
,
path
,
label
=
''
):
# @label should be either 'test' or nothing.
def
add_path
(
self
,
path
):
# It is used to perform tests on mappings without altering actual production mappings.
path_uid
,
uid_path
,
path_hash64
,
hash64_path
=
self
.
_init_mapping
(
label
)
path_uid
,
uid_path
,
path_hash64
,
hash64_path
=
self
.
_init_mapping
()
if
path
in
path_uid
:
return
last_uid
=
path_uid
[
self
.
last_uid_path
]
path_uid
[
path
]
=
last_uid
uid_path
[
last_uid
]
=
path
path_hash64
[
path
]
=
self
.
hash64
(
path
)
hash64_path
[
self
.
hash64
(
path
)]
=
path
last_uid
=
last_uid
+
1
path_uid
[
self
.
last_uid_path
]
=
last_uid
uid_path
[
last_uid
]
=
self
.
last_uid_path
path_hash64
[
self
.
last_uid_path
]
=
self
.
hash64
(
self
.
last_uid_path
)
hash64_path
[
self
.
hash64
(
self
.
last_uid_path
)]
=
self
.
last_uid_path
def
get_uid_from_path
(
self
,
path
,
label
=
''
):
path_uid
,
_
,
_
,
_
=
self
.
_init_mapping
(
label
)
def
get_uid_from_path
(
self
,
path
):
path_uid
,
_
,
_
,
_
=
self
.
_init_mapping
()
if
path
in
path_uid
:
return
path_uid
[
path
]
else
:
return
None
def
get_path_from_uid
(
self
,
uid
,
label
=
''
):
_
,
uid_path
,
_
,
_
=
self
.
_init_mapping
(
label
)
def
get_path_from_uid
(
self
,
uid
):
_
,
uid_path
,
_
,
_
=
self
.
_init_mapping
()
if
uid
in
uid_path
:
return
uid_path
[
uid
]
else
:
return
None
def
get_hash64_from_path
(
self
,
path
,
label
=
''
):
_
,
_
,
path_hash64
,
_
=
self
.
init_mapping
(
label
)
def
get_hash64_from_path
(
self
,
path
):
_
,
_
,
path_hash64
,
_
=
self
.
init_mapping
()
if
path
in
path_hash64
:
return
path_hash64
[
path
]
else
:
return
None
def
get_path_from_hash64
(
self
,
hash64
,
label
=
''
):
_
,
_
,
_
,
hash64_path
=
self
.
_init_mapping
(
label
)
def
get_path_from_hash64
(
self
,
hash64
):
_
,
_
,
_
,
hash64_path
=
self
.
_init_mapping
()
if
hash64
in
hash64_path
:
return
hash64_path
[
hash64
]
else
:
...
...
@@ -119,30 +109,27 @@ class PathMappingMixin:
# so this is used as a temporary replacement, and collision resistance is unknown
#
# If this function is modified, call update_hash() to update the two mapping dictionaries using hashes.
# IndexError: string index out of range # TODO
#return zlib.adler32(path[0])*2**32 + zlib.crc32(path[0]) # requires "import zlib"
return
-
2
def
update_hash
(
self
,
label
=
''
):
def
update_hash
(
self
):
'''
Recompute hashes of module.__path_hash64_mapping and module.__hash64_path_mapping
so that they correspond to the current hash64 function.
'''
if
label
!=
''
:
label
=
'_'
+
label
portal
=
self
.
getPortalObject
()
module
=
portal
.
data_array_module
_
,
_
,
path_hash64
,
hash64_path
=
self
.
_init_mapping
(
label
)
_
,
_
,
path_hash64
,
hash64_path
=
self
.
_init_mapping
()
new_path_hash64
=
OLBTree
()
for
path
in
path_hash64
:
new_path_hash64
[
path
]
=
self
.
hash64
[
path
]
new_hash64_path
=
LOBTree
()
for
_
,
path
in
hash64_path
.
iteritems
():
new_hash64_path
[
self
.
hash64
(
path
)]
=
path
setattr
(
module
,
'__path_hash64_mapping'
+
label
,
new_path_hash64
)
setattr
(
module
,
'__hash64_path_mapping'
+
label
,
new_hash64_path
)
setattr
(
module
,
'__path_hash64_mapping'
,
new_path_hash64
)
setattr
(
module
,
'__hash64_path_mapping'
,
new_hash64_path
)
master/bt5/slapos_metadata_transform_agent/PathTemplateItem/portal_callables/Metadata_convertDataStreamToArray.py
View file @
82cc5186
...
...
@@ -86,8 +86,8 @@ def get_uid_list(triplet_list, data_stream):
"""
uid_list
=
[]
for
triplet
in
triplet_list
:
data_stream
.
add_path
(
triplet
,
'test'
)
triplet_uid
=
data_stream
.
get_uid_from_path
(
triplet
,
'test'
)
data_stream
.
add_path
(
triplet
)
triplet_uid
=
data_stream
.
get_uid_from_path
(
triplet
)
uid_list
+=
[
triplet_uid
]
return
uid_list
...
...
master/bt5/slapos_metadata_transform_agent/PathTemplateItem/portal_callables/Metadata_convertDataStreamToArray.xml
View file @
82cc5186
...
...
@@ -149,7 +149,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
997.5910
6.5861.41472
</string>
</value>
<value>
<string>
997.5910
8.37105.43946
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -167,7 +167,7 @@
</tuple>
<state>
<tuple>
<float>
164372
7633.97
</float>
<float>
164372
8927.46
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
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