Skip to content
Snippets Groups Projects
Commit f9a5f531 authored by Andrea Michelotti's avatar Andrea Michelotti
Browse files

update vdouble

parent b31513b1
No related branches found
No related tags found
No related merge requests found
Pipeline #128506 failed
...@@ -32,8 +32,8 @@ build_image: ...@@ -32,8 +32,8 @@ build_image:
script: script:
- docker login baltig.infn.it:4567 -u amichelo -p ${DOCKER_REGISTRY} - docker login baltig.infn.it:4567 -u amichelo -p ${DOCKER_REGISTRY}
- docker build --no-cache -f Dockerfile -t baltig.infn.it:4567/lnf-da-control/memcached2influx . - docker build --no-cache -f Dockerfile -t baltig.infn.it:4567/lnf-da-control/memcached2influx:1.0 .
- docker push baltig.infn.it:4567/lnf-da-control/memcached2influx - docker push baltig.infn.it:4567/lnf-da-control/memcached2influx:1.0
deploy_dafne: deploy_dafne:
stage: deploy stage: deploy
......
...@@ -180,47 +180,96 @@ elif args.file: ...@@ -180,47 +180,96 @@ elif args.file:
memData = clientMemcached.get(k['keybind']) memData = clientMemcached.get(k['keybind'])
cache[k['keybind']]={'data':memData,'time':now} cache[k['keybind']]={'data':memData,'time':now}
k['time']=now k['time']=now
byteArray=memData[k['offset']:k['offset']+k['len']] if k['type'] == "json":
fields = {} jvalue=memData.decode('utf-8')
offset_value=0 dictj=json.loads(jvalue)
factor_value=1 if len(dictj.keys())==1:
bigendian="" ## the dict is named
value = None val=next(iter(dictj.values()))
if 'lbe' in k and not k['lbe']: ## big endian if isinstance(val,dict):
bigendian=">" dictj=val
if 'factor' in k: for item in dictj.items():
factor_value=k['factor'] key, value = item
if 'offset_value' in k: if isinstance(value, (int, float, str, bool)):
offset_value=k['offset_value'] no_spaces = key.replace(" ", "")
if k['type'] == "double": pattern = re.compile('[\W_]+')
value = struct.unpack(bigendian+'d', byteArray)[0] result = re.sub(pattern, '', no_spaces)
value = value*factor_value + offset_value # print(f'Key: {result.lower()}, Value: {value}')
if k['type'] == "int" or k['type'] == "int32": data_point = {
value = struct.unpack(bigendian+'i', byteArray)[0] "measurement": k['name'],
value = value*factor_value + offset_value "time": datetime.utcnow(),
"fields": {result.lower():value}
}
vdatapoints.append(data_point)
else:
if k['offset']<0:
## start from end
k['offset']=len(memData)+k['offset']
byteArray=memData[k['offset']:k['offset']+k['len']]
fields = {}
offset_value=0
factor_value=1
bigendian=""
value = None
if 'lbe' in k and not k['lbe']: ## big endian
bigendian=">"
if 'factor' in k:
factor_value=k['factor']
if 'offset_value' in k:
offset_value=k['offset_value']
if k['type'] == "int64" : if k['type'] == "double":
value = struct.unpack(bigendian+'q', byteArray)[0] value = struct.unpack(bigendian+'d', byteArray)[0]
value = value*factor_value + offset_value value = value*factor_value + offset_value
if k['type'] == "bool" : if k['type'] == "int" or k['type'] == "int32":
value =bool(byteArray[0]) value = struct.unpack(bigendian+'i', byteArray)[0]
if k['type'] == "string" : value = value*factor_value + offset_value
value =byteArray
if value: if k['type'] == "int64" :
if 'varname' in k: value = struct.unpack(bigendian+'q', byteArray)[0]
fields = {k['varname']: value} value = value*factor_value + offset_value
else: if k['type'] == "bool" :
fields = {'val': value} value =bool(byteArray[0])
if k['type'] == "string" :
value =byteArray.decode('utf8')
data_point = { if k['type'] == "vdouble":
"measurement": k['name'], nvals=k['len']//8
"time": datetime.utcnow(), value = struct.unpack(bigendian+'d'*nvals, byteArray)
"fields": fields result_vector = [(val * factor_value + offset_value) for val in value]
} value=result_vector
vdatapoints.append(data_point)
if value is not None:
fname='val'
if 'varname' in k:
fname=k['varname']
if isinstance(value,list):
cnt=0
for v in value:
if isinstance(fname,list):
fields = {fname[cnt]: v}
else:
fields = {fname+str(cnt): v}
data_point = {
"measurement": k['name'],
"time": datetime.utcnow(),
"fields": fields
}
vdatapoints.append(data_point)
cnt=cnt+1
else:
fields = {fname: value}
data_point = {
"measurement": k['name'],
"time": datetime.utcnow(),
"fields": fields
}
vdatapoints.append(data_point)
if len(vdatapoints): if len(vdatapoints):
print(vdatapoints) print(vdatapoints)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment