Skip to content

Releases: Dynatrace/dynatrace-configuration-as-code

2.0.0

04 Apr 11:23
Compare
Choose a tag to compare

Monaco 2.0.0

Version 2.x tries to achieve three main goals:

  • Make the CLI and configuration clearer to understand​
    • With more explicit commands​
    • Structured configuration YAML​
  • Decouple from the file-path 
    • Monaco 1.x was impacted by the location it was executed in, in relation to the configuration​
  • Provide general support for Settings 2.0 configuration​
    • Monaco 2.0 does not need to be updated to support future settings schemas​
    • In part possible due to the new structure​

To achieve these goals, configuration structure changes substantially over version 1.x.

Getting Started

The documentation for 2.0.0 is available here

Also, check out the Observability Clinic introducing Monaco 2.0.

And the related sample configurations

Migrating from 1.x

We aim to make migration a no-effort change.

To learn how you can use the monaco convert command to migrate to 2.x, follow this guide.


Major Changes


Breaking changes over preview release versions

If you have already been using the preview release versions, first off: thank you for your feedback!

Second, there are a few changes to be aware of:

Breaking changes over latest rc.8 preview

Usage for the monaco dowload and monaco delete commands changes compared to the latest rc.8 preview.

Download changes

Rather than having download manifest and download direct sub-commands, configuration is moved to flags.

Download can be called as:

# download from  specific environment defined in manifest.yaml
monaco download [--manifest manifest.yaml] --environment MY_ENV ...

# download without manifest
monaco download --url url --token DT_TOKEN [--oauth-client-id CLIENT_ID --oauth-client-secret CLIENT_SECRET] ...

Note that this also introduces --oauth authentication flags for downloading from Platform environments.

Delete changes

Delete gains a matching manifest flag and default values for both the manifest and delete file name

monaco delete --manifest <manifest.yaml> --file <delete.yaml> [flags]

Breaking changes introduced in the latest rc.8 preview release

If you had not yet upgraded to the latest preview version, be aware of the following breaking changes compared to earlier versions:

The manifest.yaml-configurations are not fully compatible with the rc.6 preview:

  • Specifying [config].token will now throw an error. It has to be moved to [config].auth.token. For example:
    manifestVersion: 1.0
    
    projects: 
    - name: project
    
    environmentGroups:
    - name: environment-group
      environments:
      - name: environment-name
        url:
          value: "https://example.com"
        auth:
          token:
            name: TOKEN_ENV_VAR
  • Removal of [config].type. If you downloaded Dynatrace configuration using monaco download …, it might be that you have to remove this field.

Container image

Images are available at https://hub.docker.com/r/dynatrace/dynatrace-configuration-as-code

The image can be used directly, passing command arguments to the CLI directly, or in CI with a monaco executable available in the container.

docker pull dynatrace/dynatrace-configuration-as-code:2.0.0

Full Changelog: v1.8.9...v2.0.0

Preview Release 2.0.0-rc.8

20 Mar 16:43
Compare
Choose a tag to compare
Pre-release

⚠️ Preview Release

This is a pre-release of monaco 2.0.0.

  • this does not yet reflect the full content or quality of the final release
  • no official support is provided for the pre-release version
  • please let us know your feedback #813

Monaco 2.0.0 Changes

Version 2.x tries to achieve three main goals:

  • Make the CLI and configuration clearer to understand​
    • With more explicit commands​
    • Structured configuration YAML​
  • Decouple from the file-path 
    • Monaco 1.x was impacted by the location it was executed in, in relation to the configuration​
  • Provide general support for Settings 2.0 configuration​
    • Monaco 2.0 does not need to be updated to support future settings schemas​
    • In part possible due to the new structure​

Getting Started

A preview of the documentation for 2.0.0 is available here

Also, check out the Observability Clinic introducing Monaco 2.0.

And the related sample configurations

⚠️ Breaking changes since rc.6:

The manifest.yaml-configurations are not fully compatible with the rc.6 preview:

  • Specifying [config].token will now throw an error. It has to be moved to [config].auth.token. For example:
    manifestVersion: 1.0
    
    projects: 
    - name: project
    
    environmentGroups:
    - name: environment-group
      environments:
      - name: environment-name
        url:
          value: "https://example.com"
        auth:
          token:
            name: TOKEN_ENV_VAR
  • Removal of [config].type. If you downloaded Dynatrace configuration using monaco download …, it might be that you have to remove this field.

What's Changed

  • Allow users to specify oauth credentials in the manifest by @Laubi in #876
  • chore: refactored deploy function by @warber in #881
  • fix: fix failing v1 test by @warber in #884
  • fix: fix Dockerfile by @jskelin in #882
  • build: Ensure build-release make target works without arguments by @UnseenWizzard in #885
  • Fix SBOM content and change action to upload to release directly by @UnseenWizzard in #886
  • fix(docker): Ensure additional arguments can actually be passed to Docker container by @UnseenWizzard in #887
  • Refactor/remove interface from api by @jskelin in #860
  • fix(config): Add 'name' to list of reserved parameters by @UnseenWizzard in #888
  • feat: check cluster generation download/deploy by @warber in #883
  • chore: general cleanup by @warber in #893
  • feat: Load only required environments by @Laubi in #889
  • chore(deps): bump actions/setup-go from 3 to 4 by @dependabot in #896
  • fix: Field names are wrong in warning message by @Laubi in #897
  • chore: Add GitHub PR-template by @warber in #894
  • Feat: Enable explicit specification of SSO OAuth token_endpoint in manifest.yaml by @jskelin in #892
  • ci: Rename docker container image to dynatrace-configuration-as-code by @UnseenWizzard in #899
  • Fix: Enhance cluster generation checks by @warber in #895
  • chore: Add 'unit' build tag to newly added test by @UnseenWizzard in #901
  • Change naming in pkg/manifest according to best practices / conventions by @jskelin in #900
  • ⚠️ Remove [config].token and [config].type (breaking change) by @Laubi in #898
  • fix: Log underlying error when Dynatrace generation check fails by @UnseenWizzard in #902

Full Changelog: v2.0.0-rc.6...v2.0.0-rc.8

Preview Release 2.0.0-rc.6

13 Mar 09:51
Compare
Choose a tag to compare
Pre-release

ℹ️ A newer Preview Relase of Monaco 2.0.0 is available ℹ️

⚠️ Preview Release

This is a pre-release of monaco 2.0.0.

  • this does not yet reflect the full content or quality of the final release
  • no official support is provided for the pre-release version
  • please let us know your feedback #813

Monaco 2.0.0 Changes

Version 2.x tries to achieve three main goals:

  • Make the CLI and configuration clearer to understand​
    • With more explicit commands​
    • Structured configuration YAML​
  • Decouple from the file-path 
    • Monaco 1.x was impacted by the location it was executed in, in relation to the configuration​
  • Provide general support for Settings 2.0 configuration​
    • Monaco 2.0 does not need to be updated to support future settings schemas​
    • In part possible due to the new structure​

Getting Started

A preview of the documentation for 2.0.0 is available here

Also, check out the Observability Clinic introducing Monaco 2.0.

And the related sample configurations


What's Changed

  • docs: Add correct links to v2 preview release and discussion by @UnseenWizzard in #814
  • refactor: Remove legacy deploy by @Laubi in #815
  • Ci/explicit workflow permissions by @UnseenWizzard in #823
  • feat: Implement Version Check for Settings 2.0 Upload on older DT servers by @warber in #818
  • feat: Added monaco version command by @warber in #822
  • Refactor: Remove dead code & move simple packages by @Laubi in #820
  • refactor: simplify filtering in api by @jskelin in #821
  • 🐛 Windows can't store files with a colon ( : ) by @Laubi in #826
  • feat: Allow HTTP urls by @Laubi in #827
  • ci(e2e): Only run release binary build on main or e2e label by @UnseenWizzard in #830
  • ci(e2e): Actually match checkout conditions to run e2e build step by @UnseenWizzard in #831
  • Ci/adapt nosemgrep location by @UnseenWizzard in #829
  • chore: move code from public util package to internal by @warber in #832
  • chore: cleanup packages by @warber in #833
  • Fix/rewrite settings ids for e2e tests by @UnseenWizzard in #835
  • Include license texts in generated SBOM by @UnseenWizzard in #838
  • Fix: Enhance settings upsert logic to work with current enhancements of the settings API by @warber in #834
  • Fix/make test suffix available as env var by @UnseenWizzard in #840
  • chore(deps): bump github.com/spf13/afero from 1.9.3 to 1.9.4 by @dependabot in #839
  • chore: Fix dependabot reviewer group by @UnseenWizzard in #841
  • chore(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2 by @dependabot in #842
  • Fix/setup client correctly in e2e tests by @UnseenWizzard in #844
  • test(e2e): Assert created configs instead of logs in pagination test by @UnseenWizzard in #843
  • Improve dependency resolution & topology sort performance by @Laubi in #836
  • Restructure cmd package and split runner.go by @Laubi in #845
  • chore: Cleanup v1 environment interface by @warber in #847
  • refactor: Remove dependency from client to manfiest and extract/reuse E2E test util code by @UnseenWizzard in #846
  • refactor: Remove unused getToken method by @Laubi in #849
  • feat: Allow defining the environment-type in the manifest by @Laubi in #850
  • fix: References are not parsed correctly by @Laubi in #852
  • Feat: Prepare DynatraceClient to support OAuth authorization by @warber in #851
  • fix: Conversion - Create config name where none exists by @Laubi in #854
  • chore(deps): bump golang.org/x/net from 0.6.0 to 0.7.0 by @dependabot in #853
  • chore(deps): bump golang.org/x/oauth2 from 0.5.0 to 0.6.0 by @dependabot in #859
  • refactor: remove unused argument by @jskelin in #855
  • refactor: remove usage of deprecated function by @jskelin in #856
  • Fix: Handle duplicate config IDs when converting v1 config by @warber in #858
  • Refactor: Small cleanups of deploy logic by @warber in #862
  • chore(deps): bump github.com/spf13/afero from 1.9.4 to 1.9.5 by @dependabot in #864
  • ♻️ Simplify Manifest URL handling by @Laubi in #863
  • feat: Define internal representation for OAuth by @Laubi in #865
  • refactor: Removed getEnvFromManifest file by @warber in #866
  • feat(delete): Remove restriction on delete yaml filename by @UnseenWizzard in #867
  • feat(download): Reduce default concurrent downloads to 5 by @UnseenWizzard in #873
  • Feat/sign binaries 3 by @jskelin in #872
  • feat(docker): Update base image to latest 3.17 alpine by @UnseenWizzard in #875
  • fix: remove warning about unset server version in dynatrace client by @warber in #877
  • fix: Extend error handling for paginated downloads / multithreaded downloads / entity downloads by @dcryans in #871
  • feat(download): Rename concurrent request limit env var by @UnseenWizzard in #878
  • fix(config): Wrap type definition errors in DefinitionParserError by @UnseenWizzard in #880

New Contributors

Full Changelog: v2.0.0-rc.4...v2.0.0-rc.6

Preview Release 2.0.0

14 Feb 16:00
Compare
Choose a tag to compare
Preview Release 2.0.0 Pre-release
Pre-release

ℹ️ A newer Preview Relase of Monaco 2.0.0 is available ℹ️


⚠️ Preview Release

This is a pre-release of monaco 2.0.0.

  • this does not yet reflect the full content or quality of the final release
  • no official support is provided for the pre-release version
  • please let us know your feedback #813

Monaco 2.0.0 Changes

Version 2.x tries to achieve three main goals:

  • Make the CLI and configuration clearer to understand​
    • With more explicit commands​
    • Structured configuration YAML​
  • Decouple from the file-path 
    • Monaco 1.x was impacted by the location it was executed in, in relation to the configuration​
  • Provide general support for Settings 2.0 configuration​
    • Monaco 2.0 does not need to be updated to support future settings schemas​
    • In part possible due to the new structure​

⚠️ Limitiations/Known Issues ⚠️

  • ⚠️ In this preview release, re-applying downloaded settings objects to the same environment may result in duplicated settings. Manual cleanup is needed for this case. Creating new settings objects works without limitations.
  • ⚠️ Downloading Settings produces invalid filenames on Windows #837
    To download Settings on Windows, please use the Linux version in WSL

Getting Started

A preview of the documentation for 2.0.0 is available here

Also, check out the Observability Clinic introducing Monaco 2.0.

And the related sample configurations

Release v1.8.9

01 Dec 09:21
Compare
Choose a tag to compare

Release 1.8.9 fixes an issue introduced by the extended handling of SLOs in 1.8.8

While 1.8.8 adds a query parameter to SLO API calls to ensure that disabled SLOs are fetched as well, this did interfere with query parameters sent for pagination (the SLO API returns pages of 10 objects), resulting in only the first 10 SLOs being fetched.

1.8.9 correctly handles both getting all SLOs from the API and dealing with pagination to fetch all existing SLOs for updates.

🐛 Bug fixes

  • 28d8950 Correctly handle pagination when other query parameters are set
  • d6cb41d Introduce retry mechanism for GET requests

Known Issues

  • Project folders can not end with extension (and likely other configuration type's names). If they do they are silently omitted from being loaded. This issue is solved in 2.x versions.

[Defective] Release v1.8.8

29 Nov 09:21
0a79c10
Compare
Choose a tag to compare

This fix interferes with pagination on the SLO API and will cause failures if an environment has > 10 SLOs configured.
We are working on a full fix to be released as 1.8.9 ASAP - please skip this 1.8.8 release

🐛 Bug fixes

🔧 Chores and Improvements

  • f8af139 (deps) bump loader-utils from 2.0.3 to 2.0.4 in /documentation

📦 Other

  • c2a221b Add additional information about name configuration

Release v1.8.7

15 Nov 14:28
Compare
Choose a tag to compare

Release 1.8.7 fixes three issues in monaco:

  • Download APIs where the id contains characters that need escaping no longer error
  • Predefined anomaly-detection-metrics are now ignored during download
  • HTTP errors and responses are logged when retrying

Additionally, the documentation has been updated to include

  1. what and why configs are skipped during download, and
  2. how to migrate app-detection-rules.

🐛 Bug fixes

  • 2c6b39c (download) Don't double-escape ids
  • a4f51f6 (download) Skip plugin-definitions of ad-metrics
  • 8437d71 (rest) Log http error and response in case of retry failures

🔧 Chores and Improvements

  • 92d4de1 (deps) bump github.com/spf13/afero from 1.9.2 to 1.9.3
  • e6f9c5b (deps) bump golangci/golangci-lint-action from 3.3.0 to 3.3.1
  • ee85da7 (deps) bump loader-utils from 2.0.2 to 2.0.3 in /documentation
  • cf45d54 (deps) bump github.com/urfave/cli/v2 from 2.23.4 to 2.23.5
  • 31eaf01 (deps) bump github.com/urfave/cli/v2 from 2.23.0 to 2.23.4

📦 Other

  • 0142a54 Release 1.8.7
  • b4d55cc (download) Add documentation of the configurations skipped during download
  • 93222f9 Update 1.8.x documentation for latest 1.8.6 version
  • dd15f33 Document App Detection Rule ordering workaround
  • 865f423 Add migration guide for app-detection-rules renamed by settings migration

Release v1.8.6

03 Nov 11:44
Compare
Choose a tag to compare

Release 1.8.6 fixes an issue of monaco not ignoring hidden sub-folders - like its own .logs/ - in some cases.

Up to now, hidden directories were ignored only if they were in the 'top' level of a loaded project.
If a hidden directory was inside a sub-folder below that, it was not.

With this fix:

  1. hidden directories can no longer be projects
  2. having hidden directories inside project folders works now

🐛 Bug fixes

  • 0923d5d Project loading should ignore hidden directories

🔧 Chores and Improvements

  • 435cef9 (deps) bump golangci/golangci-lint-action from 3.2.0 to 3.3.0
  • 17dd64f (deps) bump github.com/urfave/cli/v2 from 2.20.2 to 2.23.0
  • e4c61d8 (deps) bump github.com/urfave/cli/v2 from 2.17.1 to 2.20.2
  • 023fa16 (deps) bump github.com/urfave/cli/v2 from 2.16.3 to 2.17.1
  • a0c8bdf (deps) bump actions/checkout from 3.0.2 to 3.1.0

Release v1.8.5

26 Sep 14:27
Compare
Choose a tag to compare

Release 1.8.4 introduced a 'fix' to always escape the content of variables (from a YAML) before placing it
into a JSON template.

This can cause issues for certain usecases in which the content filled into a template is needed to create
a valid JSON and must not be escaped - e.g. if the template introduces double-quotes needed in the JSON payload.

1.8.5 reverts the eager escaping for JSON and instead escapes only known characters at specific points -
double-quotes when downloading and newline characters when templating for deployment.


🐛 Bug fixes

  • 52fff6a (download) Escape quotes in download name properties
  • 6c6eda7 Revert escaping all JSON characters for templating

[Defective] Release v1.8.4

22 Sep 11:49
Compare
Choose a tag to compare

❗ The fix for escaping all characters for JSON templating can cause issues if configuration contains lists in the format suggested here https://github.com/dynatrace-oss/dynatrace-monitoring-as-code/discussions/494.
This is fixed in 1.8.5 - please skip this 1.8.4 release

This release includes several small fixes making monaco more resilient.

List of changes

🐛 Bug fixes

  • 9ef99e8 fix: Include already read response body in optional response log (#744)
  • 5cf194c fix: Include last API error when failing retries (#744)
  • f8d307c fix: Escape all characters for JSON templating (#741)
  • ec92caa fix: More leniently handle Dynatrace errors that are ususally caused by newly created applications not being found yet
  • e11c45b fix(deploy): URL Path escape identifiers when reading Dynatrace entities by ID

📖 Documentation

  • dc9818d docs: Fix MAC installation links
  • d1b66ba fix(docs): Configure all links as relative or absolute from content root (#738)
  • 4b1c504 docs: Better describe special types of configuration (#718)
  • 647bb7e fix(docs): Fix link to config types in add-new-api guide (#736)

🔧 Chores and Improvements

Misc changes:

  • 084ad54 refactor: Replace deprecated ioutil.ReadAll
  • 2946ec1 test: Extend special character config E2E test (#121, #741)
  • 083c46a fix(test): Add missing build tag on logging_test
  • bump github.com/urfave/cli/v2 dependency from 2.11.2 to 2.16.3
    • cdf298c chore(deps): bump github.com/urfave/cli/v2 from 2.16.2 to 2.16.3
    • 4ed67ac chore(deps): bump github.com/urfave/cli/v2 from 2.14.1 to 2.16.2
    • 22da053 chore(deps): bump github.com/urfave/cli/v2 from 2.11.2 to 2.14.1
  • 7a3a6e8 chore(deps): bump github.com/google/go-cmp from 0.5.8 to 0.5.9