updated
parent
ca13d89d28
commit
6f2d54be25
96
convert.py
96
convert.py
|
|
@ -9,12 +9,11 @@ from nested_lookup import nested_lookup
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
# defines
|
# defines
|
||||||
METRIC_KEYS = 4
|
|
||||||
SLOS_FOLDER_BASENAME = os.path.basename("slos")
|
SLOS_FOLDER_BASENAME = os.path.basename("slos")
|
||||||
OUTPUT_FOLDER_BASENAME = os.path.basename("output")
|
OUTPUT_FOLDER_BASENAME = os.path.basename("output")
|
||||||
TEMPLATE_FOLDER_BASENAME = os.path.basename("templates")
|
TEMPLATE_FOLDER_BASENAME = os.path.basename("templates")
|
||||||
TEMPLATE_FILES = {
|
TEMPLATE_FILES = {
|
||||||
"terraform-template.j2":["builtin:service.keyRequest.errors.fivexx.rate"],
|
"terraform-template.j2": ["builtin:service.keyRequest.errors.fivexx.rate"],
|
||||||
"terraform-template-2.j2":["builtin:service.keyRequest.errors.server.successCount",
|
"terraform-template-2.j2":["builtin:service.keyRequest.errors.server.successCount",
|
||||||
"builtin:service.keyRequest.count.server"],
|
"builtin:service.keyRequest.count.server"],
|
||||||
"terraform-template-3.j2":["builtin:service.keyRequest.errors.fivexx.count",
|
"terraform-template-3.j2":["builtin:service.keyRequest.errors.fivexx.count",
|
||||||
|
|
@ -31,28 +30,28 @@ FOLDERS = {"My Journey":"DE-3",
|
||||||
"China Services":"EC-DE"}
|
"China Services":"EC-DE"}
|
||||||
|
|
||||||
# methods
|
# methods
|
||||||
def homogenize_keyRequests(keyRequests):
|
def homogenize_metrics(metricList):
|
||||||
for metric in metrics:
|
for metric in metricList:
|
||||||
if len(metrics) < METRIC_KEYS:
|
if len(metricList) < 4:
|
||||||
metrics.append('')
|
metricList.append('')
|
||||||
return metrics
|
return metricList
|
||||||
|
|
||||||
def homogenize_services(services):
|
def homogenize_services(serviceList):
|
||||||
for metric in metrics:
|
for service in serviceList:
|
||||||
if len(metrics) < METRIC_KEYS:
|
if len(serviceList) < 2:
|
||||||
metrics.append('')
|
serviceList.append('')
|
||||||
return metrics
|
return serviceList
|
||||||
|
|
||||||
def homogenize_metrics(metrics):
|
def homogenize_keyRequests(keyRequestLists):
|
||||||
for metric in metrics:
|
for keyRequestList in keyRequestLists:
|
||||||
if len(metrics) < METRIC_KEYS:
|
if len(keyRequestLists) < 2:
|
||||||
metrics.append('')
|
keyRequestLists.append('')
|
||||||
return metrics
|
return keyRequestLists
|
||||||
|
|
||||||
|
def template_logic(metricList):
|
||||||
def template_logic(metrics,TEMPLATE_FILES):
|
for template,metricTemplate in TEMPLATE_FILES.items():
|
||||||
for template,metric in TEMPLATE_FILES.items():
|
if all([item in metricTemplate for item in metricList]):
|
||||||
if set(metrics) == set(metric):
|
# if set(metricList) == set(metricTemplate):
|
||||||
return template
|
return template
|
||||||
print("Problem occured while matching metric: Exiting program...")
|
print("Problem occured while matching metric: Exiting program...")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
@ -68,10 +67,11 @@ def main(configFile):
|
||||||
doc_url = None
|
doc_url = None
|
||||||
slo_definition_tresholds_warning = None
|
slo_definition_tresholds_warning = None
|
||||||
slo_definition_tresholds_failure = None
|
slo_definition_tresholds_failure = None
|
||||||
metrics = {}
|
|
||||||
services = {}
|
|
||||||
keyRequests = {}
|
|
||||||
environments = {}
|
environments = {}
|
||||||
|
template = None
|
||||||
|
metricList = []
|
||||||
|
serviceList = []
|
||||||
|
keyRequestList = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# read yaml file
|
# read yaml file
|
||||||
|
|
@ -101,42 +101,40 @@ def main(configFile):
|
||||||
if "CN-Prod" in slo["slo_definition"]:
|
if "CN-Prod" in slo["slo_definition"]:
|
||||||
environments["CN-Prod"] = slo["slo_definition"][env]
|
environments["CN-Prod"] = slo["slo_definition"][env]
|
||||||
|
|
||||||
# for environment in environments:
|
|
||||||
# metrics[environment] = nested_lookup('metric',slo["slo_definition"][environment])
|
|
||||||
|
|
||||||
# for m,metric in enumerate(metrics):
|
|
||||||
# services[metric] = '~",\n\t\t\t\t~"'.join(nested_lookup('service',slo["slo_definition"][environment][m]["filter"]))
|
|
||||||
|
|
||||||
# keyRequests[environment] = nested_lookup('keyRequests',slo["slo_definition"][environment])
|
|
||||||
# keyRequests[environment] = '~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(keyRequests[environment]))
|
|
||||||
|
|
||||||
|
|
||||||
# read template file
|
# read template file
|
||||||
jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(TEMPLATE_FOLDER_BASENAME),
|
jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(TEMPLATE_FOLDER_BASENAME),
|
||||||
trim_blocks=True,
|
trim_blocks=True,
|
||||||
lstrip_blocks=True)
|
lstrip_blocks=True)
|
||||||
|
|
||||||
# generate terraform file
|
# generate terraform file
|
||||||
for environment in environments:
|
for i,(environment,ev) in enumerate(environments.items()):
|
||||||
folder_path = os.path.join(cwd,OUTPUT_FOLDER_BASENAME,environment.replace('-','_'),"slo")
|
folder_path = os.path.join(cwd,OUTPUT_FOLDER_BASENAME,environment.replace('-','_'),"slo")
|
||||||
if not os.path.exists(folder_path):
|
if not os.path.exists(folder_path):
|
||||||
os.makedirs(folder_path)
|
os.makedirs(folder_path)
|
||||||
with open(os.path.join(folder_path,module_name+".tf"),"w+") as file:
|
template = template_logic(nested_lookup('metric',ev))
|
||||||
t = template_logic(nested_lookup('metric',environments[environment]),TEMPLATE_FILES)
|
metricList = homogenize_metrics(nested_lookup('metric',ev))
|
||||||
m = homogenize_metrics(nested_lookup('metric',environments[environment]))
|
|
||||||
s = homogenize_services(nested_lookup('service',environments[environment]))
|
for service in ev[i]["filter"]:
|
||||||
k = homogenize_keyRequests(nested_lookup('keyRequests',environments[environment]))
|
serviceList.append(nested_lookup('service',service))
|
||||||
jinja_template = jinja_environment.get_template(t)
|
keyRequestList.append(nested_lookup('keyRequests',service))
|
||||||
file.write(jinja_template.render(module=module_name,
|
i = 0
|
||||||
slo_name=slo_name,
|
|
||||||
metric=m[0],metricA=m[0],metricB=m[1],metricC=m[2],metricD=m[3],
|
with open(os.path.join(folder_path,module_name+".tf"),"w+") as file:
|
||||||
description=description,
|
jinja_template = jinja_environment.get_template(template)
|
||||||
|
file.write(jinja_template.render(module=module_name,
|
||||||
|
slo_name=slo_name,
|
||||||
|
metric=metricList[0],
|
||||||
|
metricA=metricList[0],metricB=metricList[1],metricC=metricList[2],metricD=metricList[3],
|
||||||
|
description=description,
|
||||||
|
services='~",\n\t\t\t\t~"'.join(serviceList[0]),
|
||||||
|
servicesA='~",\n\t\t\t\t~"'.join(serviceList[0]),servicesB='~",\n\t\t\t\t~"'.join(serviceList[1]),
|
||||||
|
keyRequests='~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(keyRequestList[0])),
|
||||||
|
keyRequestsA='~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(keyRequestList[0])),
|
||||||
|
keyRequestsB='~",\n\t\t\t\t~"'.join(itertools.chain.from_iterable(keyRequestList[1])),
|
||||||
|
target=slo_definition_tresholds_failure,
|
||||||
|
warning=slo_definition_tresholds_warning))
|
||||||
|
|
||||||
services=s[0],servicesA=s[0],servicesB=s[1],
|
|
||||||
keyRequests=k[0],keyRequestsA=k[0],keyRequestsB=k[1],
|
|
||||||
|
|
||||||
target=slo_definition_tresholds_failure,
|
|
||||||
warning=slo_definition_tresholds_warning))
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
module TP_Mobile_Send2VehicleMGU {
|
|
||||||
|
|
||||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
|
||||||
|
|
||||||
name = "TP_Mobile_Send2VehicleMGU"
|
|
||||||
|
|
||||||
description = "2.0 SLO Mobile"
|
|
||||||
|
|
||||||
# entity selector object
|
|
||||||
filter = ""
|
|
||||||
|
|
||||||
# metric expression of the calculation as done in data explorer ui
|
|
||||||
metric_expression = <<EOT
|
|
||||||
(100)*((builtin:service.keyRequest.errors.server.successCount:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"TripService - PROD~",
|
|
||||||
~"TripService - PROD~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"/v3/motorist/[UUID]/trips~",
|
|
||||||
~"/v2/motorist/[UUID]/trips~",
|
|
||||||
~"/v3/motorist/[UUID]/trips~",
|
|
||||||
~"/v2/motorist/[UUID]/trips~"
|
|
||||||
)"))))):splitBy())
|
|
||||||
/
|
|
||||||
(builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"TripService - PROD~",
|
|
||||||
~"TripService - PROD~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"/v3/motorist/[UUID]/trips~",
|
|
||||||
~"/v2/motorist/[UUID]/trips~",
|
|
||||||
~"/v3/motorist/[UUID]/trips~",
|
|
||||||
~"/v2/motorist/[UUID]/trips~"
|
|
||||||
)"))))):splitBy()))
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# if not set (removed) it's defaulted to "-1d"
|
|
||||||
timeframe = "-1d"
|
|
||||||
|
|
||||||
# currently the only possible value
|
|
||||||
evaluation = "AGGREGATE"
|
|
||||||
|
|
||||||
# target and warning percentage of the SLO as double
|
|
||||||
target = 98 # if not set(removed) it's defaulted to 98
|
|
||||||
warning = 99 # if not set(removed) it's defaulted to 99
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
module TP_Mobile_Send2VehicleMGU {
|
||||||
|
|
||||||
|
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
||||||
|
|
||||||
|
name = "TP_Mobile_Send2VehicleMGU"
|
||||||
|
|
||||||
|
description = "2.0 SLO Mobile"
|
||||||
|
|
||||||
|
# entity selector object
|
||||||
|
filter = ""
|
||||||
|
|
||||||
|
# metric expression of the calculation as done in data explorer ui
|
||||||
|
metric_expression = <<EOT
|
||||||
|
(100)*((builtin:service.keyRequest.errors.server.successCount:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
||||||
|
fromRelationship.isServiceMethodOfService(
|
||||||
|
type(~"SERVICE~"),entityName.in(
|
||||||
|
~"T~",
|
||||||
|
~"r~",
|
||||||
|
~"i~",
|
||||||
|
~"p~",
|
||||||
|
~"S~",
|
||||||
|
~"e~",
|
||||||
|
~"r~",
|
||||||
|
~"v~",
|
||||||
|
~"i~",
|
||||||
|
~"c~",
|
||||||
|
~"e~",
|
||||||
|
~" ~",
|
||||||
|
~"-~",
|
||||||
|
~" ~",
|
||||||
|
~"P~",
|
||||||
|
~"R~",
|
||||||
|
~"O~",
|
||||||
|
~"D~"
|
||||||
|
)
|
||||||
|
),entityName.in(
|
||||||
|
~"/~",
|
||||||
|
~"v~",
|
||||||
|
~"3~",
|
||||||
|
~"/~",
|
||||||
|
~"m~",
|
||||||
|
~"o~",
|
||||||
|
~"t~",
|
||||||
|
~"o~",
|
||||||
|
~"r~",
|
||||||
|
~"i~",
|
||||||
|
~"s~",
|
||||||
|
~"t~",
|
||||||
|
~"/~",
|
||||||
|
~"[~",
|
||||||
|
~"U~",
|
||||||
|
~"U~",
|
||||||
|
~"I~",
|
||||||
|
~"D~",
|
||||||
|
~"]~",
|
||||||
|
~"/~",
|
||||||
|
~"t~",
|
||||||
|
~"r~",
|
||||||
|
~"i~",
|
||||||
|
~"p~",
|
||||||
|
~"s~",
|
||||||
|
~"/~",
|
||||||
|
~"v~",
|
||||||
|
~"2~",
|
||||||
|
~"/~",
|
||||||
|
~"m~",
|
||||||
|
~"o~",
|
||||||
|
~"t~",
|
||||||
|
~"o~",
|
||||||
|
~"r~",
|
||||||
|
~"i~",
|
||||||
|
~"s~",
|
||||||
|
~"t~",
|
||||||
|
~"/~",
|
||||||
|
~"[~",
|
||||||
|
~"U~",
|
||||||
|
~"U~",
|
||||||
|
~"I~",
|
||||||
|
~"D~",
|
||||||
|
~"]~",
|
||||||
|
~"/~",
|
||||||
|
~"t~",
|
||||||
|
~"r~",
|
||||||
|
~"i~",
|
||||||
|
~"p~",
|
||||||
|
~"s~"
|
||||||
|
)"))))):splitBy())
|
||||||
|
/
|
||||||
|
(builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
||||||
|
fromRelationship.isServiceMethodOfService(
|
||||||
|
type(~"SERVICE~"),entityName.in(
|
||||||
|
~"~"
|
||||||
|
)
|
||||||
|
),entityName.in(
|
||||||
|
~"~"
|
||||||
|
)"))))):splitBy()))
|
||||||
|
EOT
|
||||||
|
|
||||||
|
# if not set (removed) it's defaulted to "-1d"
|
||||||
|
timeframe = "-1d"
|
||||||
|
|
||||||
|
# currently the only possible value
|
||||||
|
evaluation = "AGGREGATE"
|
||||||
|
|
||||||
|
# target and warning percentage of the SLO as double
|
||||||
|
target = 98 # if not set(removed) it's defaulted to 98
|
||||||
|
warning = 99 # if not set(removed) it's defaulted to 99
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
module TP_Vehicle_FTS {
|
|
||||||
|
|
||||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
|
||||||
|
|
||||||
name = "TP_Vehicle_FTS"
|
|
||||||
|
|
||||||
description = "CoCo-QM-Report_Draft"
|
|
||||||
|
|
||||||
# entity selector object
|
|
||||||
filter = ""
|
|
||||||
|
|
||||||
# metric expression of the calculation as done in data explorer ui
|
|
||||||
metric_expression = <<EOT
|
|
||||||
(100)-(builtin:service.keyRequest.errors.fivexx.rate:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"SimplePOIs~",
|
|
||||||
~"POIs~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"getSimplePOIs (FTS Calls)~",
|
|
||||||
~"getPOIs (FTS Calls)~"
|
|
||||||
)"))))):splitBy())
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# if not set (removed) it's defaulted to "-1d"
|
|
||||||
timeframe = "-1d"
|
|
||||||
|
|
||||||
# currently the only possible value
|
|
||||||
evaluation = "AGGREGATE"
|
|
||||||
|
|
||||||
# target and warning percentage of the SLO as double
|
|
||||||
target = 98 # if not set(removed) it's defaulted to 98
|
|
||||||
warning = 99 # if not set(removed) it's defaulted to 99
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
module TP_Vehicle_eRoute {
|
|
||||||
|
|
||||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
|
||||||
|
|
||||||
name = "TP_Vehicle_eRoute"
|
|
||||||
|
|
||||||
description = "CoCo QM-Report_Vehicle"
|
|
||||||
|
|
||||||
# entity selector object
|
|
||||||
filter = ""
|
|
||||||
|
|
||||||
# metric expression of the calculation as done in data explorer ui
|
|
||||||
metric_expression = <<EOT
|
|
||||||
(100)-(builtin:service.keyRequest.errors.fivexx.rate:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"Netty on 0.0.0.0:8080 - eroute-ext - prod~",
|
|
||||||
~"Netty on 0.0.0.0:8080 - eroute-adapter - prod~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"/api/eu/2.5/eroute/protobuf3~",
|
|
||||||
~"/api/eu/2.5/eroute-costs/protobuf3~",
|
|
||||||
~"/route/eroute~"
|
|
||||||
)"))))):splitBy())
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# if not set (removed) it's defaulted to "-1d"
|
|
||||||
timeframe = "-1d"
|
|
||||||
|
|
||||||
# currently the only possible value
|
|
||||||
evaluation = "AGGREGATE"
|
|
||||||
|
|
||||||
# target and warning percentage of the SLO as double
|
|
||||||
target = 98 # if not set(removed) it's defaulted to 98
|
|
||||||
warning = 99 # if not set(removed) it's defaulted to 99
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
module TP_Mobile_Send2VehicleMGU {
|
|
||||||
|
|
||||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
|
||||||
|
|
||||||
name = "TP_Mobile_Send2VehicleMGU"
|
|
||||||
|
|
||||||
description = "2.0 SLO Mobile"
|
|
||||||
|
|
||||||
# entity selector object
|
|
||||||
filter = ""
|
|
||||||
|
|
||||||
# metric expression of the calculation as done in data explorer ui
|
|
||||||
metric_expression = <<EOT
|
|
||||||
(100)*((builtin:service.keyRequest.errors.server.successCount:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"TripService - PROD~",
|
|
||||||
~"TripService - PROD~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"/v2/motorist/[UUID]/trips~",
|
|
||||||
~"/v3/motorist/[UUID]/trips~",
|
|
||||||
~"/v2/motorist/[UUID]/trips~",
|
|
||||||
~"/v3/motorist/[UUID]/trips~"
|
|
||||||
)"))))):splitBy())
|
|
||||||
/
|
|
||||||
(builtin:service.keyRequest.count.server:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"TripService - PROD~",
|
|
||||||
~"TripService - PROD~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"/v2/motorist/[UUID]/trips~",
|
|
||||||
~"/v3/motorist/[UUID]/trips~",
|
|
||||||
~"/v2/motorist/[UUID]/trips~",
|
|
||||||
~"/v3/motorist/[UUID]/trips~"
|
|
||||||
)"))))):splitBy()))
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# if not set (removed) it's defaulted to "-1d"
|
|
||||||
timeframe = "-1d"
|
|
||||||
|
|
||||||
# currently the only possible value
|
|
||||||
evaluation = "AGGREGATE"
|
|
||||||
|
|
||||||
# target and warning percentage of the SLO as double
|
|
||||||
target = 98 # if not set(removed) it's defaulted to 98
|
|
||||||
warning = 99 # if not set(removed) it's defaulted to 99
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
module TP_Vehicle_eRoute {
|
|
||||||
|
|
||||||
source = "../../_dynatrace-base-modules/dynatrace-service-level-objective"
|
|
||||||
|
|
||||||
name = "TP_Vehicle_eRoute"
|
|
||||||
|
|
||||||
description = "CoCo QM-Report_Vehicle"
|
|
||||||
|
|
||||||
# entity selector object
|
|
||||||
filter = ""
|
|
||||||
|
|
||||||
# metric expression of the calculation as done in data explorer ui
|
|
||||||
metric_expression = <<EOT
|
|
||||||
(100)-(builtin:service.keyRequest.errors.fivexx.rate:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
|
||||||
fromRelationship.isServiceMethodOfService(
|
|
||||||
type(~"SERVICE~"),entityName.in(
|
|
||||||
~"Netty on 0.0.0.0:8080 - eroute-ext - prod~",
|
|
||||||
~"Netty on 0.0.0.0:8080 - eroute-adapter - prod~"
|
|
||||||
)
|
|
||||||
),entityName.in(
|
|
||||||
~"/api/eu/2.5/eroute/protobuf3~",
|
|
||||||
~"/api/eu/2.5/eroute-costs/protobuf3~",
|
|
||||||
~"/route/eroute~"
|
|
||||||
)"))))):splitBy())
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# if not set (removed) it's defaulted to "-1d"
|
|
||||||
timeframe = "-1d"
|
|
||||||
|
|
||||||
# currently the only possible value
|
|
||||||
evaluation = "AGGREGATE"
|
|
||||||
|
|
||||||
# target and warning percentage of the SLO as double
|
|
||||||
target = 98 # if not set(removed) it's defaulted to 98
|
|
||||||
warning = 99 # if not set(removed) it's defaulted to 99
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -23,10 +23,10 @@ module {{ module }} {
|
||||||
({{ metricB }}:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
({{ metricB }}:filter(and(or(in("dt.entity.service_method",entitySelector("type(service_method),
|
||||||
fromRelationship.isServiceMethodOfService(
|
fromRelationship.isServiceMethodOfService(
|
||||||
type(~"SERVICE~"),entityName.in(
|
type(~"SERVICE~"),entityName.in(
|
||||||
~"{{ servicesA }}~"
|
~"{{ servicesB }}~"
|
||||||
)
|
)
|
||||||
),entityName.in(
|
),entityName.in(
|
||||||
~"{{ keyRequestsA }}~"
|
~"{{ keyRequestsB }}~"
|
||||||
)"))))):splitBy()))
|
)"))))):splitBy()))
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue