Skip to content

Releases: Azure/apiops

APIOps Toolkit for Azure APIM v7.0.0-alpha.2.0.0

07 Jan 18:05

Choose a tag to compare

Added

  • Added unit tests for the extractor and publisher.
  • We now support a dry-run option for the publisher (#754). It will process files normally but not make any changes to APIM. This is useful for validating configurations and previewing changes before executing them. This is disabled by default, but you can control this by:
    • Setting the DRY_RUN configuration value to true | false
    • Passing --dry-run to the publisher executable. This naked flag enables dry run mode.
    • Passing --dry-run true|false to the publisher executable.
  • The publisher now attempts to validate resource state before making changes to APIM. This reduces the chances of failing mid-run because of an issue that could have been caught earlier. Specifically, it checks that:
    • Resources don't have cyclical relationships (e.g. subscription A depends on group B which depends on API C which depends on subscription A). This shouldn't happen if teams rely on the extractor, but code-first deployments or editing the extracted JSON incorrectly can cause this.
    • Resources aren't missing predecessors. For example, let's say we put policy A that uses named value B. The publisher will check whether named value B is also in source control. If the predecessor is missing:
      • If the configuration STRICT_VALIDATION is set to true, then the publisher will throw an error.
      • Otherwise, the publisher will log a warning saying that the named value was not found in source. This allows for scenarios where different teams manage different resources (maybe another team is responsible for managing named values).

Fixed

  • Fixed a bug when publishing workspace API revisions

Full Changelog: v7.0.0-alpha.1.0.4...v7.0.0-alpha.2.0.0

APIOps Toolkit for Azure APIM v7.0.0-alpha.1.0.4

04 Dec 00:29

Choose a tag to compare

APIOps Toolkit for Azure APIM v7.0.0-alpha.1.0.3

03 Dec 16:19

Choose a tag to compare

APIOps Toolkit for Azure APIM v7.0.0-alpha.1.0.2

19 Nov 16:07

Choose a tag to compare

Fix for #760

APIOps Toolkit for Azure APIM v7.0.0-alpha.1.0.1

18 Nov 15:59

Choose a tag to compare

What's new

Better ID references

Many APIM resources reference others through IDs. For example, here is a diagnostic that references a logger through the loggerId property:

{
 "properties": {
   ...
   "loggerId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ApiManagement/service/apimService1/loggers/azuremonitor"
   ...
 }
}

If we publish this diagnostic as-is to another APIM instance, the publisher will fail. The logger reference is specific to APIM instance apimService1 in resource group rg1 and subscription 00000000-0000-0000-0000-000000000000. To work around this, we have to edit the JSON or override the publisher configuration to reference the new APIM instance.

As of v7, the extractor will use relative references where possible. In the above scenario, it will write loggerId: "/loggers/azuremonitor". This relative reference will work when publishing across instances.

Note

This change was manually implemented across resources. We're not aware of a way to ask the APIM REST API to return relative references. Some resources may have been missed. If you'd like to request that we add a missed resource, please raise an issue.

Nested configuration

We now support nested levels of configuration for the extractor and publisher. This allows the configuration of child resources (e.g. api operations, workspace api diagnostics, etc).

Sample extractor configuration

Only operations 1 and 2 will be extracted in api 1. All operations in api 2 will be extracted.

apis:
- api1:
    operations:
    - operation1
    - operation2
- api2
...

Sample publisher configuration

The display name of diagnostic 3 in api 2 in workspace 1 will be overriden with my display name.

workspaces:
- workspace1:
    apis:
    - api2:
        diagnostics:
        - diagnostic3:
            properties:
              displayName: my display name
...

Empty configuration in extractor

Previously, if we wanted to skip extracting all resources of a type, we had to put a random placeholder value (e.g. ignore). We now support the more intuitive [].

Before

apis: ignore # Workaround to skip extracting all APIs.

After

apis: [] # All APIs will be skipped.

Breaking changes

New section names in extractor configuration

We've made the section names in the extractor and publisher identical. This provides a more consistent experience and greatly simplifies code maintenance.

Before (extractor configuration)

apiNames:
- api1
- api2
productNames:
- product1
- product2

After (extractor configuration)

apis:
- api1
- api2
products:
- product1
- product2

APIOps Toolkit for Azure APIM v6.0.2

17 Nov 15:39
35a0fdd

Choose a tag to compare

What's Changed

  • Fix 'PessimisticConcurrencyConflict' next to 'Conflict' error codes by @LockTar in #799

Full Changelog: v6.0.1.10...v6.0.2

APIOps Toolkit for Azure APIM v6.0.1.10

18 Sep 15:42
bf11787

Choose a tag to compare

What's Changed

  • Add retry logic for 409 response with specific Conflict error code by @LockTar in #787

Full Changelog: v6.0.1.9...v6.0.1.10

APIOps Toolkit for Azure APIM v6.0.1.9

23 Aug 01:44
9ccaaae

Choose a tag to compare

What's Changed

Full Changelog: v6.0.1.8...v6.0.1.9

APIOps Toolkit for Azure APIM v6.0.1.8

22 Aug 01:53
89d194d

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v6.0.1.7...v6.0.1.8

APIOps Toolkit for Azure APIM v6.0.1.7

17 Apr 14:22
e154e8a

Choose a tag to compare

What's Changed

Full Changelog: v6.0.1.6...v6.0.1.7