Skip to main content
Version: Develop

Service Plans

This section describes how to configuer a Service Plan for a Service Offering within the Service Catalog.

Service Plan Object

Each Service Plan has the following properties:

PropertyTypeDescription
name*stringThe name of the Service Plan. MUST be unique within the Service, but can can als be used in other Services as Service Plan name. Using a CLI-friendly name is RECOMMENDED.
guid*stringThe GUID of the service plan. This MUST be unique across the entire platform.
description*stringA short description of the Service Plan.
freebooleanWhen false, service instances of this service plan have a cost. The default is true.
template_namestringDeprecated in favor of template_name_v2.
template_name_v2*stringA template name described in Available Templates. This template is used when a service instance with this service plan is created.
sslbooleantrue when a TLS/SSL template is used, false otherwise. The default is false.
service_deployment_prefixDeploymentNamePrefixThe deployment name prefix for service instances created with this plan.
default_placeholder_values*DefaultPlaceholderValuesA list of values that will be replaced in the used template for this service plan.
migration_paths*MigrationPathsThe list of allowed plan updates.
custom_param_configCustomParameterConfigurationThe name of the template that should be used when a service instance of this service plan is created.

NOTE: Fields with an asterisk (*) are REQUIRED.

Example:

postgresql-single-small-ssl:
guid: a6747d74-580f-4520-98c5-5ffe3dc20b5a
description: A small single instance
free: true
template_name_v2: postgresql13-single-ssl
ssl: true
service_deployment_prefix: pg
default_placeholder_values:
vm_type: a9svs-postgresql-single-small
persistent_disk_type: a9svs-postgresql-single-small
network_type: a9svs-postgresql-single-small
migration_paths:
- postgresql-single-medium-ssl
- postgresql-single-large-ssl
custom_param_config:
max_connections:
default_value: 100
modifiable: false

Deployment Name Prefix

By default, the deployment names for the service instances that the a9s Service Broker creates are in the schema d<2 digits><2 hex digits>. These names can be extended with a prefix that can be configured per service plan via the service_deployment_prefix property. The prefix can be changed at any time without affecting the service instances already provisioned.

danger

The prefix must only contain small letters [a-z] and should not exceed the length of 3 characters (otherwise problems with the generated DNS names may occur).

Default Placeholder Values

The property default_placeholder_values is a list of values that will be replaced in the template that is used for the given service plan. The templates themselves are YAML files that contain ERB tags with variables that can be replaced.

The following placeholder values are supported by the Available Templates:

PropertyTypeDefault ValueDescription
vm_typestringThe VM type that should be used for the Service Instance. MUST match one of the VM types defined in the Cloud Config of the used BOSH Director.
persistent_disk_typestringThe persistent disk type that should be used for the Service Instance. MUST match one of the disk types defined in the Cloud Config of the used BOSH Director.
network_typestringThe configured service_network in the a9s Template Uploader ErrandThe network that should be used by the Service Instance. MUST match one of the networks defined in the Cloud Config of the used BOSH Director.

Example:

postgresql_service:
services:
a9s-postgresql13:
plans:
postgresql-single-small-ssl:
default_placeholder_values:
vm_type: postgresql-single-small-vm
persistent_disk_type: postgresql-single-small-disk
network_type: postgresql-single-small-network

Network Per Plan

In order to configure a different network per Service Plan, it is necessary to modify the Service Plan configuration and add network_type property under the default_placeholder_values property in each desired Service Plan.

In the following configuration snippet, the Service Plan postgresql-single-nano has been configured to use the network <your_desired_network>:

---
postgresql_service:
services:
a9s-postgresql13:
plans:
postgresql-single-nano:
default_placeholder_values:
network_type: "<your_desired_network>"
vm_type: a9svs-postgresql-single-nano
postgresql-single-small:
default_placeholder_values:
vm_type: a9svs-postgresql-single-small

On the other hand, the plan postgresql-single-small in the above example will be deployed to the default network, given by the template variable service_network in the a9s Template Uploader Errand configuration, since the property network_type has not been set.

Migration Paths

The migration_paths property defines to which Service Plans the given Service Plan can be migrated. In the example above the postgresql-single-small-ssl plan can be migrated to the plans:

  • postgresql-single-medium-ssl
  • postgresql-single-large-ssl
Migration Limitations

The following limitations apply to all a9s Data Services:

  • The a9s Data Services do NOT support the migration from templates from one major version to templates from another major version of the same a9s Data Service. For example, it is not possible to migrate from a PostgreSQL 11 Service Instance to a PostgreSQL 13 Service Instance.
  • The a9s Data Services do NOT support Service Plan migrations from a larger VM type to a smaller VM type.
  • The a9s Data Services do NOT support Service Plan migrations from a larger persistent disk to a smaller persistent disk.
  • The a9s Data Services do NOT support Service Plan migrations from clustered to single Service Instances.
  • The a9s Data Services do NOT support Service Plan migrations from Non-SSL/TLS to SSL/TLS Service Instances.

If you face one of these limitations, we recommend to create a new Service Instance that fulfills the new requirements and migrate the data to it accordingly. You have to make sure that the new Service Instance has enough disk space available to hold the user data.

a9s Redis

a9s Redis 6 and above do NOT support Service Plan migrations from single to clustered Service Instances.

a9s Prometheus

a9s Prometheus does NOT support Service Plan migrations from Service Instances created with plans containing Grafana 5 (prometheus-legacy) to any other type of a9s Prometheus Service Instance, as the current migration paths only allow this for plans that containing Grafana 8 (promgraf) to plans that containing Grafana 10 (prometheus2).

Custom Parameter Configuration

Some a9s SPIs allow the Platform Operator to give default values to custom parameters in the SPI configuration. If the Platform Operator doesn't configure the SPI configuration, the anynines defaults get used as described in the individual SPI configuration page:

You can configure those properties per plan under the property custom_param_config. The same configuration structure applies.

For example, the following configuration for the plan postgresql-single-nano would set the max_connections custom parameter default value to 100 and would not allow the Application Developer to modify this value:

...
plans:
postgresql-single-nano:
custom_param_config:
max_connections:
default_value: 100
modifiable: false
...

IMPORTANT: When the platform operator configures the SPI's and a plan's custom parameter configuration, the plan's custom parameter configuration will completely replace the SPI's custom parameter configuration for that specific plan.

Let's take the following example for a SPI and plan configuration:

postgresql-spi:
service_instance:
custom_param_config:
max_connections:
default_value: 200
modifiable: true
metric_pg_database_size:
default_value: 600
modifiable: false
...
plans:
postgresql-single-nano:
custom_param_config:
max_connections:
default_value: 100
modifiable: false
...

In this case, an instance of plan postgresql-single-nano would be configured to set the max_connections default value to 100 and be not modifiable for the application developer. The custom parameter metric_pg_database_size would not be set to the values configured in the SPI configuration, but the SPI default values for that custom parameter.