PCF Tile Developers Guide v1.12

PCF v1.12 Partners Release Notice

This topic describes the changes that Pivotal Cloud Foundry (PCF) v1.12 introduces which may be relevant to partner service tiles.

Additional Credential Migrations

Version 1.11.0 of PCF introduced CredHub for credential management, and PCF v1.11.1 added support for migrating secret credentials to CredHub.

Ops Manager v1.12 added support for migrating additional credential types, including rsa_pkey_credential and simple_credential types in the v1.12 Alpha release and salted_credential in the v1.12 Beta release. Tile developers can migrate these credential types using the same JavaScript migration process as secret credentials.

Breaking Change: When migrating salted_credentials, CredHub does not retain the salt. If your tile depends on the salt, refactor before migrating to CredHub.

See Migrating Existing Credentials to CredHub for more information.

Ternary Operator Evaluates Boolean Constants

Ops Manager v1.12 adds support for evaluating boolean constants using ternary operators. Previously, the ternary operator supported string constants, property references, or named_manifest declarations.

Breaking Change: If you define true and false in any property_blueprint names, as shown in the workaround below, update your job manifest to use boolean constants.

In previous versions of Ops Manager, to expose a property to operators as a checkbox that is checked by default, a tile author defined the true and false properties in the job manifest as a workaround. In the following example, the disable_security_protocols job spec property takes a boolean value:

- name: true
  type: boolean
  configurable: false
  default: true
- name: false
  type: boolean
  configurable: false
  default: false

  disable_security_protocols: '(( .properties.secure_the_system ? .properties.false : .properties.true ))

In Ops Manager v1.12, the ternary operator manages boolean values natively. A tile author can rewrite the above example using the following syntax:

disable_security_protocols: '(( .properties.secure_the_system ? false : true ))'

When using this syntax, enclose everything following the initial colon with either single or double quotation marks and include the space between the boolean expression and the question mark, as shown above.

Support for Empty Arrays in Double Parentheses

Ops Manager now supports empty arrays in double parentheses. For more information, see the Double-Parentheses Expressions section of the Property Reference topic.

Resource Config Pane Hides Zero-Instance Jobs

A service tile’s Resource Config pane lists the jobs that the service runs and lets operators allocate resources to the jobs that are configurable.

Tiles can define a job as non_configurable and set its instance count to 0. This prevents the job from running, but lets external services access the job properties. The Ops Manager 1.12 Resource Config pane and API endpoints do not include these zero-instance jobs.

Elastic Runtime Tile Property Changes

Properties in the Elastic Runtime tile have changed. Tile developers must change any (( )) calls accordingly if their tiles access Elastic Runtime property values.

The following tables list the properties that Pivotal removed, added, renamed, and retyped between Elastic Runtime v1.11 and v1.12:

Removed Properties
Added Properties
Renamed Properties
v1.11 Namev1.12 Name
Retyped Properties
Propertyv1.11 Typev1.12 Type

Product Dependency Syntax

Tile authors can specify product version dependencies in tile metadata using ~>. Ops Manager interprets this operator based on the context in the metadata. For example:

- name: cf
  version: "~> 1.8"
- name: example-product
  version: "~> 1.12.1"

If the version number contains only two segments, Ops Manager interprets ~> as >=. In the example above, this includes all versions of cf greater than 1.8.

If the version number contains more than two segments, Ops Manager evaluates ~> for the final segment. In the example above, this includes versions 1.12.x only of example-product.

Create a pull request or raise an issue on the source for this page in GitHub