180608 - Apigee Edge for Public Cloud release notes

On Monday, September 24, 2018, we began releasing a new version of Apigee Edge Public Cloud.

Private Cloud customers: Is this cloud release included in your Private Cloud version? See your version's release notes to see which cloud releases it contains. Also, see About release numbering to understand how you can figure it out by comparing release numbers.

Questions or issues? Get help here.

Release notifications: Go to http://status.apigee.com and click Subscribe to Updates.

Release notes home page

New Features and Updates

Following are the new features and updates in this release.

Issue ID Component Name Description
67506562 API Runtime

SSL/TLS support in JavaScript policy

The JavaScript policy lets you configure <SSLInfo> for secure SSL/TLS calls to external services. For more information, see the JavaScript policy documentation.

77149507 API Runtime

SSL/TLS variables available on Edge routers

When Edge Public Cloud switched from Netty routers to Nginx, some SSL/TLS flow variables were no longer available. This update makes some SSL/TLS variables available again. For more information, see Accessing TLS connection information in an API proxy.

67310628 API Runtime

JavaScript callback support in httpClient for improved callouts

The httpClient object in Apigee's JavaScript Object Model lets you call external services from an API proxy. httpClient now supports callbacks, letting you streamline your callout code and make more performant callouts by not requiring waitForComplete().

Example: Before

ex1 = httpClient.get("http://example.com");
ex1.waitForComplete();

if (ex1.isSuccess())  {
    response1 = ex1.getResponse();
    context.setVariable('example.status',response1.status);
} else {
   error = ex1.getError();
   context.setVariable('example.error','Woops: ' + error);
}

Example: Now

function onComplete(response, error) {
    if (response) {
        context.setVariable('example.status', response.status);
    } else {
       context.setVariable('example.error', 'Woops: ' + error);
    }
}
// Function callback allowed as an argument.
httpClient.get("http://example.com", onComplete);
80298811 Management Server

New management API (Beta): Update API products assigned to a consumer key

Developer apps have consumer/API keys that are associated with specific API products. A new management API (Beta release) lets you change the API products that are associated with a single consumer key.

In the following cURL examples, assume that a consumer key is already associated with a product called product1. The API call changes the consumer key so that it's associated with product2 and product3 instead:

JSON payload

curl -i -X PUT -H "Content-Type: application/json" \
"https://api.enterprise.apigee.com/v1/organizations/org_name/\
developers/developer_email_or_id/apps/app_name/\
keys/consumer_key/apiproducts" \
-d '["product2","product3"]' \
-u account_email

XML payload

curl -i -X PUT -H "Content-Type: application/xml" \
"https://api.enterprise.apigee.com/v1/organizations/org_name/\
developers/developer_email_or_id/apps/app_name/\
keys/consumer_key/apiproducts" \
-d '<List><Item>product2</Item><Item>product3</Item></List>' \
-u account_email
113700413 Hosted Targets

Token refresh logic broken

112481174 Hosted Targets

Do not fail proxy undeploy due to Turbo error

111443934 Hosted Targets

Simplify deployment API implementation in Edge

110897740 Hosted Targets

Implement proper delete support of Turbo applications/revisions

110894391 Hosted Targets

Refactor TurboService in Edge to simplify HTTP requests/retries

110377069 Analytics

New analytics dimension and change to the x_forwarded_for_ip dimension

With this release of Edge for the Cloud, the way Edge sets the x_forwarded_for_ip dimension in Edge Analytics has changed. Previously, if there were multiple IP addresses in the X-Forwarded-For header, the x_forwarded_for_ip dimension contained only the last IP address listed. Customers often used the x_forwarded_for_ip dimension to determine the IP address of the client making the API request to Edge.

With this release, the x_forwarded_for_ip dimension now contains the complete list of IP addresses in the X-Forwarded-For header.

Warning: The X-Forwarded-For header has the potential for being spoofed by a blacklisted IP, except for the last address in the header, which is the IP address Edge received from the last external TCP handshake. To determine the original client IP address making the API request to Edge, this release adds a new dimension to Edge Analytics: ax_resolved_client_ip.

You can now use the ax_resolved_client_ip dimension in a custom report or in a filter condition in a custom report to determine the IP address of the client making the API request. See Analytics metrics, dimensions, and filters reference for more on the ax_resolved_client_ip dimension.

This change also affects the way the AccessControl policy handles the X-Forwarded-For header. You no longer have to set the feature.enableMultipleXForwardCheckForACL property in your organization to configure the X-Forwarded-For header to contain multiple IP addresses. However, that setting is still required for Edge for the Private Cloud. For more, see About the X-Forwarded-For HTTP header.

109955269 API Runtime

Update fh.properties for release branch Release_180608

80154696 Management Server

Include region and server details of each server in the deployment and undeployment status responses

80096158 Monetization

Add developer email in monetization dataset

80088703 Monetization

Revert default flag for BigQuery

79980234 API Runtime

Add resource type for different resource files

79979555 API Runtime

Ensure parent entities exist when doing create/read operations

79445195 Edge Micro

Microgateway support for mTLS when invoking management APIs

79165169 API Runtime

Sonar: view target http status and latency for each of the targets

79094567 Monetization

Add developer email column to monetization Summary report

78910936 API Runtime

Migrate MP dependency on isSenseEnabled to sense.protection

78911890 Management Server

New built-in Sense user roles: SenseOperator and SenseUser

78535353 API Runtime

Fix XFF when router is behind GCP http(s) GLB

78304706 API Runtime

MP should add compliance related headers

78297238 API Runtime

Add HTTP headers in router for PCI compliance

77543608 Monetization

Monetization: Add "Organization Profile Not Found"

72232364 Monetization

Create monetization environment for each organization

Bugs Fixed

The following bugs are fixed in this release. This list is primarily for users checking to see if their support tickets have been fixed. It's not designed to provide detailed information for all users.

Issue ID Component Name Description
113267243 API Runtime

jstack clearance from jstack-local-copy is not fast enough.

113222974 API Runtime

Disks in MP fill up with huge system.log*.tmp files

111671525 Hosted Targets

Non-success response codes from HT trigger fault flow in proxy

111416863 API Runtime

One proxy in an organization did not get deployed on 180608_03 release

111073791 Turbo

Polling logic can run forever if errors are constantly thrown

110924838 API Runtime

Trial pod routers are not loading upstreams for virtual hosts in R180608

110425503 API Runtime

nginx reload causes MP availability issues

79541171 API Runtime

The x_forwarded_for_ip analytics dimension reports only the first IP address in the list. It should report the complete list.

Internal fix to support future product update.

109673863 API Runtime

Fix a bug that in-use virtual host was allowed to be deleted

80538530 API Runtime

Client unable to deploy new proxy revision

80429941 API Runtime

CassandraRepositoryDelegate.exists() always returns true for /apiproxies/*/maskconfigs/* paths

80207872 API Runtime

Add logging to configstore services so it is easier to tell which configs you use when starting

80203732 API Runtime

Handle content types better in DeploymentStatusService http client

79993247 API Runtime

HEAD requests to Node.js targets hang

79944922 API Runtime

Hosted Targets bundles deployments fail with messaging.resource.UnknownResourceType

79939838 API Runtime

Make build.info file to work with kokoro for quality Db integration

79939496 API Runtime

OAuth token creation fails with NumberFormatException

79882402 API Runtime

JWT: TimeAllowance in VerifyJWT is not handled correctly

79876202 Monetization

Clean up mint scope from mxgroup as part of org delete

79752674 Management Server

Ignore loading of apps and companies while fetching developer-email for developer-id

79697050 API Runtime

Fix the day rollover calculation bug in non-CPS flow

79657368 API Runtime

API proxy deployment errors

79615400 Monetization

Set bigQuery flag to true by default

79578681 API Runtime

Cassandra large KMS keyspace issue

79439193 Monetization

Credit amount reset not working as expected for org

79418654 Monetization

Add comma delimiter for asynchronous detailed reports

79221633 API Runtime

Exiting NIOThread

78200288 Management Server

Some deployments fail if you disconnect MPs and Routers and then reconnect the Router

78190575 API Runtime

Ensure microkernel process restart doesn't result in duplicate Consul service tags

78088197 API Runtime

Excluding TLS cipher suites for Management Server doesn't work

77735168 API Runtime

Large *.tmp log files in MP fill up the disk

74484305 Monetization

Post CPS migration -> suspended_developers GET call is not returning new IDs

73597605 API Runtime

SharedFlow - MessageLogging policy is not executed

69045657 Management Server

Uploading individual ServiceCallout policy with LoadBalancer target or SSLInfo KeyStore config results in a NullPointerException

67664750 Monetization

Can't delete monetization data

67517550 Management Server

Deployment failure due to high latency in proxy bundle replication

67176875 Monetization

/delete-org-data fails with developer-specific rate plans