Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
lookup-rule
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
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sabari T
lookup-rule
Commits
ef7a808c
Commit
ef7a808c
authored
Aug 25, 2021
by
charankumar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modified
parent
d33b9882
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
171 additions
and
143 deletions
+171
-143
conf/service.yml
conf/service.yml
+2
-1
main.py
main.py
+23
-7
scripts/handler/rule_configuration_handler.py
scripts/handler/rule_configuration_handler.py
+1
-1
scripts/handler/rule_engine_update.py
scripts/handler/rule_engine_update.py
+145
-134
No files found.
conf/service.yml
View file @
ef7a808c
...
@@ -7,7 +7,8 @@ log:
...
@@ -7,7 +7,8 @@ log:
back_up_count
:
10
back_up_count
:
10
mongo_db
:
mongo_db
:
URI
:
mongodb://192.168.0.220:2717/
URI
:
mongodb://ilens:iLens%231234@192.168.0.207:2117/ilens_configuration?authSource=admin
URI_
:
mongodb://192.168.0.220:2717
REDIS
:
REDIS
:
REDIS_HOST
:
192.168.0.220
REDIS_HOST
:
192.168.0.220
...
...
main.py
View file @
ef7a808c
...
@@ -5,16 +5,32 @@ from scripts.handler.rule_engine_update import RuleUpdate
...
@@ -5,16 +5,32 @@ from scripts.handler.rule_engine_update import RuleUpdate
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
try
:
try
:
logger
.
debug
(
"main block started"
)
logger
.
debug
(
"main block started"
)
status
=
RuleUpdate
()
.
rule_update
()
# status = RuleUpdate().rule_update(request_payload)
if
status
:
# status = RuleUpdate().fetch_hireares('MODBUS_DELTA_UPDATED')
print
(
"Created successfully"
)
lst
=
[[
"rule_errorcode_1"
,
"tag_194"
,
"tag_352"
,
"rule_engine_131"
],
else
:
[
"rule_errorcode_2"
,
"tag_197"
,
"tag_353"
,
"rule_engine_132"
],
print
(
"Some records are not created successfully, Please check the log file"
)
[
"rule_errorcode_3"
,
"tag_200"
,
"tag_354"
,
"rule_engine_133"
],
[
"rule_errorcode_4"
,
"tag_202"
,
"tag_355"
,
"rule_engine_134"
],
[
"rule_errorcode_5"
,
"tag_205"
,
"tag_356"
,
"rule_engine_135"
],
[
"rule_errorcode_6"
,
"tag_207"
,
"tag_357"
,
"rule_engine_136"
],
[
"rule_errorcode_7"
,
"tag_208"
,
"tag_358"
,
"rule_engine_137"
],
[
"rule_errorcode_8"
,
"tag_209"
,
"tag_359"
,
"rule_engine_139"
],
[
"rule_errorcode_9"
,
"tag_210"
,
"tag_360"
,
"rule_engine_140"
]]
for
each
in
lst
:
status
=
RuleUpdate
()
.
fetch_hireares
(
'MODBUS_DELTA_UPDATED'
,
each
[
0
]
.
split
(
'rule_'
)[
0
],
input_tag
=
each
[
1
],
output_tag
=
each
[
2
],
rule_id
=
each
[
-
1
],
lookup_name
=
each
[
0
])
# status = RuleUpdate().rule_update(request_payload, 'error_code_1')
if
status
.
get
(
'status'
)
==
'success'
:
print
(
f
"Created successfully: {each}"
)
else
:
print
(
"Some records are not created successfully, Please check the log file"
)
except
RequiredFieldsMissing
:
except
RequiredFieldsMissing
:
logger
.
exception
(
"Required Fields are missing in the static JSON"
)
logger
.
exception
(
"Required Fields are missing in the static JSON"
)
print
(
"Required Fields are missing in the static JSON"
)
print
(
"Required Fields are missing in the static JSON"
)
except
Exception
as
e
:
except
Exception
as
e
:
logger
.
exception
(
"Exception in the main block"
+
str
(
e
))
logger
.
exception
(
"Exception in the main block"
+
str
(
e
))
print
(
"Exception in the main block"
+
str
(
e
))
print
(
"Exception in the main block"
+
str
(
e
))
scripts/handler/rule_configuration_handler.py
View file @
ef7a808c
...
@@ -359,7 +359,7 @@ class RuleConfigurationHandler(object):
...
@@ -359,7 +359,7 @@ class RuleConfigurationHandler(object):
this will check whether that rule already exists while creations
this will check whether that rule already exists while creations
"""
"""
exists
=
self
.
rules_mongo
.
find_one_rule
(
query
=
{
"ruleName"
:
input_data
[
"ruleName"
]})
exists
=
self
.
rules_mongo
.
find_one_rule
(
query
=
{
"ruleName"
:
input_data
[
"ruleName"
]})
if
exists
is
not
None
:
if
exists
:
return
True
return
True
else
:
else
:
return
False
return
False
...
...
scripts/handler/rule_engine_update.py
View file @
ef7a808c
...
@@ -9,6 +9,8 @@ from scripts.db.mongo.ilens_configuration.aggregates.site_conf import SiteConfAg
...
@@ -9,6 +9,8 @@ from scripts.db.mongo.ilens_configuration.aggregates.site_conf import SiteConfAg
from
scripts.handler.rule_configuration_handler
import
RuleConfigurationHandler
from
scripts.handler.rule_configuration_handler
import
RuleConfigurationHandler
from
scripts.errors.module_exceptions
import
RequiredFieldsMissing
from
scripts.errors.module_exceptions
import
RequiredFieldsMissing
hirearchy_name_mapping
=
{}
class
RuleUpdate
:
class
RuleUpdate
:
def
__init__
(
self
):
def
__init__
(
self
):
...
@@ -17,54 +19,133 @@ class RuleUpdate:
...
@@ -17,54 +19,133 @@ class RuleUpdate:
self
.
sites_mongo
=
SiteConf
(
mongo_client
=
mongo_client
)
self
.
sites_mongo
=
SiteConf
(
mongo_client
=
mongo_client
)
self
.
sites_aggregate
=
SiteConfAggregate
self
.
sites_aggregate
=
SiteConfAggregate
self
.
rule_configuration_handler
=
RuleConfigurationHandler
()
self
.
rule_configuration_handler
=
RuleConfigurationHandler
()
self
.
assign_hirearchies
=
[]
self
.
hirearchy_name_mapping
=
{}
def
rule_update
(
self
):
def
fetch_hireares
(
self
,
model_id
,
errr_name
,
input_tag
,
output_tag
,
rule_id
,
lookup_name
):
final_json
=
{}
try
:
try
:
request_payload
=
[{
final_json
[
"data"
]
=
[]
"lookup_name"
:
"Rule_lookup_one"
,
each_site
=
self
.
sites_mongo
.
find_site_by_site_id
(
site_id
=
'site_101'
)
"match_type"
:
"exact"
,
try
:
"hierarchy_ste"
:
[
"[Kite:AC VOLTAGE-1]"
,
dept_exists
=
False
"[Kite:Temperature]"
],
dept_mapping
=
{}
"complete_tag_id"
:
"tag_36980"
,
line_mapping
=
{}
"selected_tags"
:
[
line_exists
=
False
"site_305$tag_125"
,
hire_str_label
=
each_site
[
'site_id'
]
"site_305$tag_100"
hire_str_value
=
each_site
[
'site_info'
][
'site_name'
]
],
self
.
tag_update
(
each_site
[
'site_info'
][
'tags'
],
hire_str_label
,
hire_str_value
)
"output_device"
:
[
"site_305"
]
if
"dept"
in
each_site
and
each_site
[
"dept"
]:
},
dept_exists
=
True
{
for
each_dept
in
each_site
[
"dept"
]:
"lookup_name"
:
"Rule_lookup_two"
,
temp_hire_str_value
=
f
"{hire_str_value}>{each_dept['dept_name']}"
temp_hire_str_label
=
f
"{hire_str_label}${each_dept['dept_id']}"
dept_mapping
[
each_dept
[
'dept_id'
]]
=
each_dept
[
'dept_name'
]
self
.
tag_update
(
each_dept
[
'tags'
],
temp_hire_str_label
,
temp_hire_str_value
)
if
"line"
in
each_site
and
each_site
[
'line'
]:
for
each_line
in
each_site
[
'line'
]:
line_exists
=
True
try
:
line_mapping
[
each_line
[
'line_id'
]]
=
each_line
[
'line_name'
]
if
dept_exists
:
temp_hire_str_value
=
f
"{hire_str_value}>{dept_mapping[each_line['dept_id']]}>{each_line['line_name']}"
temp_hire_str_label
=
f
"{hire_str_label}${each_line['dept_id']}${each_line['line_id']}"
else
:
temp_hire_str_value
=
f
"{hire_str_value}>{each_line['line_name']}"
temp_hire_str_label
=
f
"{hire_str_label}${each_line['line_id']}"
self
.
tag_update
(
each_line
[
'tags'
],
temp_hire_str_label
,
temp_hire_str_value
)
except
Exception
as
e
:
logger
.
exception
(
e
)
if
"equipment"
in
each_site
and
each_site
[
'equipment'
]:
for
each_equip
in
each_site
[
'equipment'
]:
try
:
eq_hir_str
=
hire_str_value
eq_hir_id
=
hire_str_label
if
dept_exists
:
eq_hir_str
=
eq_hir_str
+
f
">{dept_mapping[each_equip['dept_id']]}"
eq_hir_id
=
eq_hir_id
+
f
"${each_equip['dept_id']}"
if
line_exists
:
eq_hir_str
=
eq_hir_str
+
f
">{line_mapping[each_equip['line_id']]}"
eq_hir_id
=
eq_hir_id
+
f
"${each_equip['line_id']}"
eq_hir_str
=
eq_hir_str
+
f
">{each_equip['equipment_name']}"
eq_hir_id
=
eq_hir_id
+
f
"${each_equip['equipment_id']}"
if
each_equip
[
'make_model'
]
.
lower
()
==
model_id
.
lower
():
# todo
self
.
assign_hirearchies
.
append
([
eq_hir_str
,
eq_hir_id
])
self
.
tag_update
(
each_equip
[
'tags'
],
eq_hir_id
,
eq_hir_str
)
except
Exception
as
e
:
logger
.
exception
(
e
)
except
Exception
as
e
:
logger
.
exception
(
str
(
e
))
selected_list
=
[]
for
each
in
self
.
assign_hirearchies
:
selected_list
.
append
({
"id"
:
each
[
1
],
"itemName"
:
each
[
0
]
})
status
=
self
.
form_insert_json
(
errr_name
,
selected_list
,
input_tag
,
output_tag
,
rule_id
,
lookup_name
)
except
Exception
as
e
:
logger
.
exception
(
e
)
status
=
{
'status'
:
'Failed'
}
return
status
def
tag_update
(
self
,
tag_list
,
hire_id
,
hire_str
):
self
.
hirearchy_name_mapping
[
hire_id
]
=
hire_str
for
each_tag
in
tag_list
:
self
.
hirearchy_name_mapping
[
f
"{hire_id}${each_tag['value']}"
]
=
\
f
"{hire_str}:{each_tag['label']}"
def
form_insert_json
(
self
,
errr_name
,
selected_list
,
input_tag
,
output_tag
,
rule_id
,
lookup_name
):
final_insert_list
=
[]
c
=
0
for
each_hi
in
self
.
assign_hirearchies
:
try
:
final_insert_list
.
append
({
"lookup_name"
:
lookup_name
,
"match_type"
:
"exact"
,
"match_type"
:
"exact"
,
"hierarchy_ste"
:
"[Kite:AC VOLTAGE-1]"
,
"hierarchy_ste"
:
[
"complete_tag_id"
:
"tag_36980"
,
self
.
hirearchy_name_mapping
[
f
"{each_hi[1]}${input_tag}"
]
"selected_tags"
:
[
"site_305$tag_125"
],
],
"output_devices"
:
[
"complete_tag_id"
:
output_tag
,
"site_305"
"selected_tags"
:
[
f
"{each_hi[1]}${input_tag}"
],
"output_device"
:
[
each_hi
[
1
]
]
]
})
except
Exception
as
e
:
c
+=
1
logger
.
info
(
f
"No Mapping: {e} - {c}"
)
logger
.
exception
(
e
)
status
=
self
.
rule_update
(
final_insert_list
,
errr_name
,
selected_list
,
rule_id
)
return
status
}]
def
rule_update
(
self
,
request_payload
,
rulename
,
selected_list
,
rule_id
):
try
:
project_id
=
"project_101"
user_id
=
"user_100"
static_json
=
{
static_json
=
{
"rule_engine_id"
:
""
,
"rule_engine_id"
:
rule_id
,
"Selected_device"
:
[]
,
"Selected_device"
:
selected_list
,
"Selected_ruleType"
:
"
"
,
# todo
"Selected_ruleType"
:
"
Real Time"
,
"calcFormulaList"
:
[],
"calcFormulaList"
:
[],
"deviceDescription"
:
"
"
,
# todo
"deviceDescription"
:
f
"Manually created rule from code for lookup - {rulename}
"
,
# todo
"disable_all"
:
""
,
# todo --> bool
"disable_all"
:
False
,
"execute_on"
:
{},
# todo --> Optional
"execute_on"
:
{},
"processOn"
:
"
"
,
# todo
"processOn"
:
"
server"
,
"project_id"
:
"project_099"
,
# todo
"project_id"
:
project_id
,
# todo
"ruleName"
:
"
"
,
# todo
"ruleName"
:
f
"Lookup-{rulename}
"
,
# todo
"s
chedule"
:
""
,
# todo --> bool --> Optional
"s
elected_device_meta"
:
{},
"
selected_device_meta"
:
{},
# todo --> Optional
"
transformation_type"
:
"validation_and_transformation"
,
"
transformation_type"
:
""
,
# todo --> Optional
"
user_id"
:
user_id
,
"
user_id"
:
""
,
# todo
"
tz"
:
"Asia/Kolkata"
,
"
status"
:
""
# todo --> Optional
"
language"
:
"en"
}
}
required_fields
=
[
"Selected_ruleType"
,
"deviceDescription"
,
"disable_all"
,
"processOn"
,
"project_id"
,
"ruleName"
,
"user_id"
]
# required fields
for
each_rule_index
,
each_rule
in
enumerate
(
request_payload
):
for
each_rule_index
,
each_rule
in
enumerate
(
request_payload
):
static_calc_form_json
=
{}
static_calc_form_json
=
{
static_calc_form_json
=
{
"code"
:
"
"
,
"code"
:
f
"lookup({each_rule['hierarchy_ste']}, '{each_rule['lookup_name']}', 'exact')
"
,
"parsedCode"
:
{
"parsedCode"
:
{
"type"
:
"Program"
,
"type"
:
"Program"
,
"body"
:
[
"body"
:
[
...
@@ -76,7 +157,22 @@ class RuleUpdate:
...
@@ -76,7 +157,22 @@ class RuleUpdate:
"type"
:
"Identifier"
,
"type"
:
"Identifier"
,
"name"
:
"lookup"
"name"
:
"lookup"
},
},
"arguments"
:
[]
"arguments"
:
[
{
"type"
:
"Identifier"
,
"name"
:
each_rule
[
'selected_tags'
][
0
]
},
{
"type"
:
"Literal"
,
"value"
:
each_rule
[
'lookup_name'
],
"raw"
:
f
"'{each_rule['lookup_name']}'"
},
{
"type"
:
"Literal"
,
"value"
:
"match-type"
,
"raw"
:
"'match-type'"
}
]
}
}
}
}
],
],
...
@@ -87,10 +183,10 @@ class RuleUpdate:
...
@@ -87,10 +183,10 @@ class RuleUpdate:
"status"
:
True
,
"status"
:
True
,
"message"
:
"Correct , Valid rule"
"message"
:
"Correct , Valid rule"
},
},
"completeTagId"
:
""
,
"completeTagId"
:
each_rule
[
'complete_tag_id'
]
,
"selectedTags"
:
[
],
"selectedTags"
:
each_rule
[
'selected_tags'
],
"previousTags"
:
[
],
"previousTags"
:
each_rule
[
'selected_tags'
],
"output_devices"
:
[
],
"output_devices"
:
each_rule
[
'output_device'
],
"output_type"
:
[
"output_type"
:
[
"data_store"
"data_store"
],
],
...
@@ -109,100 +205,15 @@ class RuleUpdate:
...
@@ -109,100 +205,15 @@ class RuleUpdate:
"output_tags"
:
[],
"output_tags"
:
[],
"disable"
:
False
,
"disable"
:
False
,
"execute_on_tag"
:
[],
"execute_on_tag"
:
[],
"block_id"
:
""
,
"rule_block_parent"
:
[],
"rule_block_parent"
:
[],
"execute_on"
:
{},
"execute_on"
:
{}
"completeTagName"
:
""
}
identifier_dict
=
{
"type"
:
"Identifier"
,
"name"
:
""
}
literal_dict
=
{
"type"
:
"Literal"
,
"value"
:
""
,
"raw"
:
""
}
selected_device_dict
=
{
"id"
:
""
,
"itemName"
:
""
}
}
code_name
=
""
static_json
[
'calcFormulaList'
]
.
append
(
static_calc_form_json
)
if
isinstance
(
each_rule
.
get
(
"hierarchy_ste"
),
list
):
for
each_hierarchy_ste
in
each_rule
.
get
(
"hierarchy_ste"
,
[]):
if
code_name
==
""
:
code_name
+=
each_hierarchy_ste
else
:
code_name
+=
", "
+
each_hierarchy_ste
else
:
code_name
+=
each_rule
.
get
(
"hierarchy_ste"
)
code_name
+=
", "
+
"'"
+
each_rule
.
get
(
"lookup_name"
,
""
)
+
"'"
code_name
+=
", "
+
"'"
+
each_rule
.
get
(
"match_type"
,
""
)
+
"'"
static_calc_form_json
[
"code"
]
=
"lookup"
+
"("
+
code_name
+
")"
if
isinstance
(
each_rule
.
get
(
"selected_tags"
),
list
):
for
each_hierarchy
in
each_rule
.
get
(
"selected_tags"
,
[]):
identifier_dict
[
"name"
]
=
each_hierarchy
static_calc_form_json
[
"parsedCode"
][
"body"
][
0
][
"expression"
][
"arguments"
]
.
append
(
deepcopy
(
identifier_dict
))
else
:
identifier_dict
[
"name"
]
=
each_rule
.
get
(
"selected_tags"
,
""
)
static_calc_form_json
[
"parsedCode"
][
"body"
][
0
][
"expression"
][
"arguments"
]
.
append
(
deepcopy
(
identifier_dict
))
literal_dict
[
"value"
]
=
each_rule
.
get
(
"lookup_name"
,
""
)
literal_dict
[
"raw"
]
=
"'"
+
each_rule
.
get
(
"lookup_name"
,
""
)
+
"'"
static_calc_form_json
[
"parsedCode"
][
"body"
][
0
][
"expression"
][
"arguments"
]
.
append
(
deepcopy
(
literal_dict
))
literal_dict
[
"value"
]
=
each_rule
.
get
(
"match_type"
,
""
)
literal_dict
[
"raw"
]
=
"'"
+
each_rule
.
get
(
"match_type"
,
""
)
+
"'"
static_calc_form_json
[
"parsedCode"
][
"body"
][
0
][
"expression"
][
"arguments"
]
.
append
(
deepcopy
(
literal_dict
))
static_calc_form_json
[
"completeTagId"
]
=
each_rule
.
get
(
"complete_tag_id"
)
static_calc_form_json
[
"selectedTags"
]
=
each_rule
.
get
(
"selected_tags"
,
[])
static_calc_form_json
[
"previousTags"
]
=
each_rule
.
get
(
"selected_tags"
,
[])
static_calc_form_json
[
"output_devices"
]
=
each_rule
.
get
(
"output_devices"
,
[])
if
each_rule
.
get
(
"complete_tag_name"
):
static_calc_form_json
[
"completeTagName"
]
=
each_rule
.
get
(
"complete_tag_name"
)
else
:
complete_tag_name_query
=
self
.
tags_aggregate
.
tag_id_name_map
complete_tag_name
=
self
.
tags_mongo
.
find_by_aggregate
(
complete_tag_name_query
)
if
complete_tag_name
:
complete_tag_name
=
complete_tag_name
[
0
]
static_calc_form_json
[
"completeTagName"
]
=
complete_tag_name
[
"tag_id_name"
][
each_rule
.
get
(
"complete_tag_id"
)]
block_id
=
"block_"
+
str
((
each_rule_index
+
1
))
static_calc_form_json
[
"block_id"
]
=
block_id
static_json
[
"calcFormulaList"
]
.
append
(
static_calc_form_json
)
for
each_selected_tags
in
each_rule
.
get
(
"selected_tags"
,
[]):
selected_device_array
=
each_selected_tags
.
split
(
"$tag"
)
if
selected_device_array
:
selected_device
=
selected_device_array
[
0
]
selected_device_dict
[
"id"
]
=
selected_device
device_exist
=
False
for
each_selected_device
in
static_json
.
get
(
"Selected_device"
,
[]):
if
selected_device_dict
[
"id"
]
==
each_selected_device
.
get
(
"id"
):
device_exist
=
True
if
not
device_exist
:
hierarchy_name_array
=
selected_device_dict
[
"id"
]
.
split
(
"$"
)
request_dict
=
{
"project_id"
:
static_json
[
"project_id"
]}
for
each_level
in
hierarchy_name_array
:
if
'site'
in
each_level
:
request_dict
.
update
({
"site_id"
:
each_level
})
elif
'dept'
in
each_level
:
request_dict
.
update
({
"dept_id"
:
each_level
})
elif
'line'
in
each_level
:
request_dict
.
update
({
"line_id"
:
each_level
})
elif
'equipment'
in
each_level
:
request_dict
.
update
({
"equipment_id"
:
each_level
})
name_hierarchy_query
=
self
.
sites_aggregate
.
find_hierarchy_name
(
request_dict
)
name_hierarchy
=
self
.
sites_mongo
.
find_site_by_aggregate
(
name_hierarchy_query
)
if
name_hierarchy
:
name_hierarchy
=
name_hierarchy
[
0
]
selected_device_dict
[
"itemName"
]
=
name_hierarchy
.
get
(
"itemName"
)
static_json
[
"Selected_device"
]
.
append
(
deepcopy
(
selected_device_dict
))
for
each_required_field
in
required_fields
:
if
not
static_json
.
get
(
each_required_field
):
raise
RequiredFieldsMissing
# Raise error if required fields are not filled
print
(
static_json
)
print
(
static_json
)
return_json
=
self
.
rule_configuration_handler
.
create_rule_engine
(
static_json
)
#
return_json = self.rule_configuration_handler.create_rule_engine(static_json)
print
(
return_json
)
# logger.info
(return_json)
except
Exception
as
e
:
except
Exception
as
e
:
logger
.
exception
(
str
(
e
))
logger
.
exception
(
str
(
e
))
raise
raise
return
{
'status'
:
'success'
}
# return return_json
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