first commit
commit
954914b26e
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Directories
|
||||||
|
venv/
|
||||||
|
output/
|
||||||
|
input/
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
[PATHS]
|
||||||
|
Output=./output/
|
||||||
|
Templates=./templates/
|
||||||
|
|
||||||
|
[MISC]
|
||||||
|
;; It could be possible that specific Regex semantics require escaping, especially for terraform, e.g.:
|
||||||
|
;; ,([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}),\w{32} becomes
|
||||||
|
;; ,([0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}),\\w{32} as an example!
|
||||||
|
RegEx=,(c5c454c1-6470-407c-9b22-b9af4560d65c|9d4af2c8-ca3f-4c4e-99c4-64081581d7c4|c62b49db-9280-4ab5-90dc-1b2064c76ef1|0086883d-4a6c-4a75-b9ac-bf3a87fb1cc1|33b74d0b-c434-4805-b6ae-370d53c335ad|ce497550-91ec-46c8-add0-8f3d1845bfbb|e9a38fab-abb9-4fb8-9313-b8822062c1b1|dcdf4b77-f5dd-49f1-a9c8-72a700cf34ee|fea3f54c-eea7-4ee5-9774-8e3d31670cf5|5a5d6213-1775-4351-b4c1-5dfadb55997d|b0879f10-53f1-4d62-be9c-b3bcac3ca939|17a446e4-bad2-4409-b9bf-e655466c3e97|4fff324a-1319-441f-a517-b3b8e2177e05|60fcaf1a-dd64-4654-8c90-34cba6c07e75|a5b5c07c-b283-477e-9e04-a864a7d85c16|b454347d-d4af-4f94-a9eb-fc5f012b13e5|4ef8be65-b891-4379-96b5-a9dd960f1986|1bd821b8-dadb-457b-8601-273c296bff83|d4895ef8-81ae-4047-9b1e-e7ae910a1ad6|eb5d9864-ce0f-4ccb-a37a-d83ba975d323|bf57d8d8-320f-4b10-bd18-2845720511c5|fe6a1f25-1198-4459-a886-35610b3a6fc5|7895bf57-8614-4a42-bb94-9147e379e0dc|e2c5bfd6-56bc-425e-8317-5b1c5ac1b724|5dcab5ff-4f3c-4b2c-816d-d198ce994198),\\w{32}
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
Info: Please add the regex definition into the config.ini file. It could be possible that specific Regex semantics
|
||||||
|
require escaping, especially for terraform, e.g.:
|
||||||
|
,([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}),\w{32} becomes
|
||||||
|
,([0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}),\\w{32} as an example!
|
||||||
|
|
||||||
|
Usage: python3 main.py -n Connected_Friction
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import configparser
|
||||||
|
import csv
|
||||||
|
import jinja2
|
||||||
|
import logging
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT = '%(asctime)s %(message)s'
|
||||||
|
logging.basicConfig(format=FORMAT)
|
||||||
|
logger = logging.getLogger('main')
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read("config.ini")
|
||||||
|
|
||||||
|
DEFAULT_OUTPUT_PATH = pathlib.Path(config['PATHS']['Output']).absolute()
|
||||||
|
DEFAULT_TEMPLATES_PATH = pathlib.Path(config['PATHS']['Templates']).absolute()
|
||||||
|
REGEX = config['MISC']['RegEx']
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="Name of the Services' Chain, e.g. Connected_Friction")
|
||||||
|
parser.add_argument("--name", "-n", type=str, metavar='', required=True, help="Example: Connected_Friction")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
env = jinja2.Environment(loader=jinja2.FileSystemLoader(DEFAULT_TEMPLATES_PATH))
|
||||||
|
template = env.get_template("regex.request_attribute.j2")
|
||||||
|
|
||||||
|
def checkDirectories(DEFAULT_OUTPUT_PATH, DEFAULT_TEMPLATES_PATH):
|
||||||
|
for dir in [DEFAULT_OUTPUT_PATH, DEFAULT_TEMPLATES_PATH]:
|
||||||
|
|
||||||
|
try:
|
||||||
|
pathlib.Path.mkdir(dir)
|
||||||
|
logger.info("Directory created: %s", dir)
|
||||||
|
except FileExistsError:
|
||||||
|
logger.info("Directory already exists: %s", dir)
|
||||||
|
|
||||||
|
def renderFile(args, DEFAULT_OUTPUT_PATH):
|
||||||
|
logger.info("Generating file for: %s", args.name)
|
||||||
|
content = template.render(ServiceName = str(args.name), RegEx = REGEX)
|
||||||
|
filename = pathlib.PurePath.joinpath(DEFAULT_OUTPUT_PATH, str(args.name) + ".request_attribute.tf")
|
||||||
|
|
||||||
|
with open(filename, mode='w+', encoding="utf-8") as output:
|
||||||
|
output.write(content)
|
||||||
|
logger.info("Generated: %s", pathlib.PurePath(filename).name)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
checkDirectories(DEFAULT_OUTPUT_PATH, DEFAULT_TEMPLATES_PATH)
|
||||||
|
renderFile(args, DEFAULT_OUTPUT_PATH)
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
resource "dynatrace_request_attribute" "{{ServiceName}}" {
|
||||||
|
name = "{{ServiceName}}"
|
||||||
|
enabled = true
|
||||||
|
aggregation = "FIRST"
|
||||||
|
# confidential = false
|
||||||
|
data_type = "STRING"
|
||||||
|
normalization = "ORIGINAL"
|
||||||
|
# skip_personal_data_masking = false
|
||||||
|
data_sources {
|
||||||
|
enabled = true
|
||||||
|
source = "METHOD_PARAM"
|
||||||
|
technology = "JAVA"
|
||||||
|
methods {
|
||||||
|
argument_index = 1
|
||||||
|
capture = "ARGUMENT"
|
||||||
|
deep_object_access = ".toString()"
|
||||||
|
method {
|
||||||
|
argument_types = [ "java.lang.Object", "de.audi.acdc.connectors.common.messages.MessageOffset", "de.audi.acdc.connectors.common.messages.MessageMetadata", "de.audi.acdc.platform.telemetry.api.TelemetryContext" ]
|
||||||
|
class_name = "de.audi.acdc.connectors.common.messages.IncomingMessage$"
|
||||||
|
method_name = "apply"
|
||||||
|
return_type = "de.audi.acdc.connectors.common.messages.IncomingMessage"
|
||||||
|
visibility = "PUBLIC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
methods {
|
||||||
|
argument_index = 1
|
||||||
|
capture = "ARGUMENT"
|
||||||
|
deep_object_access = ".toString()"
|
||||||
|
method {
|
||||||
|
argument_types = [ "java.lang.Object", "de.audi.acdc.connectors.common.messages.MessageOffset", "long", "de.audi.acdc.connectors.common.messages.MessageMetadata", "de.audi.acdc.platform.telemetry.api.TelemetryContext" ]
|
||||||
|
class_name = "de.audi.acdc.connectors.common.messages.IncomingMessage$"
|
||||||
|
method_name = "apply"
|
||||||
|
return_type = "de.audi.acdc.connectors.common.messages.IncomingMessage"
|
||||||
|
visibility = "PUBLIC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
methods {
|
||||||
|
argument_index = 1
|
||||||
|
capture = "ARGUMENT"
|
||||||
|
deep_object_access = ".toString()"
|
||||||
|
method {
|
||||||
|
argument_types = [ "java.lang.Object", "de.audi.acdc.connectors.common.messages.MessageOffset", "de.audi.acdc.platform.telemetry.api.TelemetryContext" ]
|
||||||
|
class_name = "de.audi.acdc.connectors.common.messages.IncomingMessage$"
|
||||||
|
method_name = "apply"
|
||||||
|
return_type = "de.audi.acdc.connectors.common.messages.IncomingMessage"
|
||||||
|
visibility = "PUBLIC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value_processing {
|
||||||
|
# split_at = ""
|
||||||
|
# trim = false
|
||||||
|
value_extractor_regex = "{{RegEx}}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data_sources {
|
||||||
|
enabled = true
|
||||||
|
source = "METHOD_PARAM"
|
||||||
|
technology = "JAVA"
|
||||||
|
methods {
|
||||||
|
argument_index = 1
|
||||||
|
capture = "ARGUMENT"
|
||||||
|
deep_object_access = ".toString()"
|
||||||
|
method {
|
||||||
|
argument_types = [ "java.lang.Object", "de.audi.acdc.connectors.common.messages.MessageOffset", "int", "long", "long", "de.audi.acdc.platform.telemetry.api.TelemetryContext" ]
|
||||||
|
class_name = "de.audi.acdc.connectors.common.messages.OutgoingMessage$"
|
||||||
|
method_name = "apply"
|
||||||
|
return_type = "de.audi.acdc.connectors.common.messages.OutgoingMessage"
|
||||||
|
visibility = "PUBLIC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
methods {
|
||||||
|
argument_index = 1
|
||||||
|
capture = "ARGUMENT"
|
||||||
|
deep_object_access = ".toString()"
|
||||||
|
method {
|
||||||
|
argument_types = [ "java.lang.Object", "de.audi.acdc.connectors.common.messages.MessageOffset", "int", "long", "long", "long", "de.audi.acdc.connectors.common.messages.MessageMetadata", "de.audi.acdc.platform.telemetry.api.TelemetryContext" ]
|
||||||
|
class_name = "de.audi.acdc.connectors.common.messages.OutgoingMessage$"
|
||||||
|
method_name = "apply"
|
||||||
|
return_type = "de.audi.acdc.connectors.common.messages.OutgoingMessage"
|
||||||
|
visibility = "PUBLIC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
methods {
|
||||||
|
argument_index = 1
|
||||||
|
capture = "ARGUMENT"
|
||||||
|
deep_object_access = ".toString()"
|
||||||
|
method {
|
||||||
|
argument_types = [ "java.lang.Object", "de.audi.acdc.connectors.common.messages.MessageOffset", "int", "long", "long", "de.audi.acdc.connectors.common.messages.MessageMetadata", "de.audi.acdc.platform.telemetry.api.TelemetryContext" ]
|
||||||
|
class_name = "de.audi.acdc.connectors.common.messages.OutgoingMessage$"
|
||||||
|
method_name = "apply"
|
||||||
|
return_type = "de.audi.acdc.connectors.common.messages.OutgoingMessage"
|
||||||
|
visibility = "PUBLIC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value_processing {
|
||||||
|
# split_at = ""
|
||||||
|
# trim = false
|
||||||
|
value_extractor_regex = "{{RegEx}}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue