Packages
caffeine_lang
4.4.3
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@codegen@dynatrace.erl
-module(caffeine_lang@codegen@dynatrace).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/codegen/dynatrace.gleam").
-export([terraform_settings/0, provider/0, variables/0, window_to_evaluation_window/1, ir_to_terraform_resource/1, generate_resources/1, generate_terraform/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/codegen/dynatrace.gleam", 39).
?DOC(false).
-spec terraform_settings() -> terra_madre@terraform:terraform_settings().
terraform_settings() ->
caffeine_lang@codegen@generator_utils:build_terraform_settings(
<<"dynatrace"/utf8>>,
<<"dynatrace-oss/dynatrace"/utf8>>,
<<"~> 1.0"/utf8>>
).
-file("src/caffeine_lang/codegen/dynatrace.gleam", 49).
?DOC(false).
-spec provider() -> terra_madre@terraform:provider().
provider() ->
caffeine_lang@codegen@generator_utils:build_provider(
<<"dynatrace"/utf8>>,
[{<<"dt_env_url"/utf8>>,
terra_madre@hcl:ref(<<"var.dynatrace_env_url"/utf8>>)},
{<<"dt_api_token"/utf8>>,
terra_madre@hcl:ref(<<"var.dynatrace_api_token"/utf8>>)}]
).
-file("src/caffeine_lang/codegen/dynatrace.gleam", 61).
?DOC(false).
-spec variables() -> list(terra_madre@terraform:variable()).
variables() ->
[{variable,
<<"dynatrace_env_url"/utf8>>,
{some, {identifier, <<"string"/utf8>>}},
none,
{some, <<"Dynatrace environment URL"/utf8>>},
none,
none,
[]},
{variable,
<<"dynatrace_api_token"/utf8>>,
{some, {identifier, <<"string"/utf8>>}},
none,
{some, <<"Dynatrace API token"/utf8>>},
{some, true},
none,
[]}].
-file("src/caffeine_lang/codegen/dynatrace.gleam", 140).
?DOC(false).
-spec window_to_evaluation_window(integer()) -> binary().
window_to_evaluation_window(Days) ->
<<<<"-"/utf8, (erlang:integer_to_binary(Days))/binary>>/binary, "d"/utf8>>.
-file("src/caffeine_lang/codegen/dynatrace.gleam", 87).
?DOC(false).
-spec ir_to_terraform_resource(
caffeine_lang@linker@ir:intermediate_representation()
) -> {ok, terra_madre@terraform:resource()} |
{error, caffeine_lang@errors:compilation_error()}.
ir_to_terraform_resource(Ir) ->
Resource_name = terra_madre@common:sanitize_terraform_identifier(
erlang:element(3, Ir)
),
gleam@result:'try'(
caffeine_lang@codegen@generator_utils:require_slo_fields(
Ir,
<<"dynatrace"/utf8>>
),
fun(Slo) ->
gleam@result:'try'(
caffeine_lang@codegen@generator_utils:require_evaluation(
Slo,
Ir,
<<"dynatrace"/utf8>>
),
fun(Evaluation_expr) ->
gleam@result:'try'(
caffeine_lang@codegen@generator_utils:resolve_cql_expression(
Evaluation_expr,
erlang:element(3, Slo),
Ir,
<<"dynatrace"/utf8>>
),
fun(Metric_expression) ->
Evaluation_window = window_to_evaluation_window(
erlang:element(4, Slo)
),
Description = caffeine_lang@codegen@generator_utils:build_description(
Ir,
Slo
),
Resource = {resource,
<<"dynatrace_slo_v2"/utf8>>,
Resource_name,
maps:from_list(
[{<<"name"/utf8>>,
{string_literal,
erlang:element(
2,
erlang:element(2, Ir)
)}},
{<<"enabled"/utf8>>,
{bool_literal, true}},
{<<"custom_description"/utf8>>,
{string_literal, Description}},
{<<"evaluation_type"/utf8>>,
{string_literal,
<<"AGGREGATE"/utf8>>}},
{<<"evaluation_window"/utf8>>,
{string_literal, Evaluation_window}},
{<<"metric_expression"/utf8>>,
{string_literal, Metric_expression}},
{<<"metric_name"/utf8>>,
{string_literal, Resource_name}},
{<<"target_success"/utf8>>,
{float_literal,
erlang:element(2, Slo)}}]
),
[],
terra_madre@hcl:empty_meta(),
none},
{ok, Resource}
end
)
end
)
end
).
-file("src/caffeine_lang/codegen/dynatrace.gleam", 28).
?DOC(false).
-spec generate_resources(
list(caffeine_lang@linker@ir:intermediate_representation())
) -> {ok, {list(terra_madre@terraform:resource()), list(binary())}} |
{error, caffeine_lang@errors:compilation_error()}.
generate_resources(Irs) ->
caffeine_lang@codegen@generator_utils:generate_resources_simple(
Irs,
fun ir_to_terraform_resource/1
).
-file("src/caffeine_lang/codegen/dynatrace.gleam", 14).
?DOC(" Generate Terraform HCL from a list of Dynatrace IntermediateRepresentations.\n").
-spec generate_terraform(
list(caffeine_lang@linker@ir:intermediate_representation())
) -> {ok, binary()} | {error, caffeine_lang@errors:compilation_error()}.
generate_terraform(Irs) ->
caffeine_lang@codegen@generator_utils:generate_terraform(
Irs,
terraform_settings(),
provider(),
variables(),
fun generate_resources/1
).