Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better type database engine versions #6532

Closed
nija-at opened this issue Mar 2, 2020 · 1 comment · Fixed by #9016
Closed

Better type database engine versions #6532

nija-at opened this issue Mar 2, 2020 · 1 comment · Fixed by #9016
Assignees
Labels
@aws-cdk/aws-rds Related to Amazon Relational Database effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. in-progress This issue is being actively worked on.

Comments

@nija-at
Copy link
Contributor

nija-at commented Mar 2, 2020

Currently, the engineVersion of DatabaseInstance is a free-form string. Type it into something stronger, like a string enum, so that it's harder to make a mistake on.

See here for the list of supported database engine versions.


This is a 🚀 Feature Request

@nija-at nija-at added good first issue Related to contributions. See CONTRIBUTING.md feature-request A feature should be added or improved. @aws-cdk/aws-rds Related to Amazon Relational Database effort/small Small work item – less than a day of effort labels Mar 2, 2020
@nija-at nija-at self-assigned this Mar 2, 2020
@nija-at nija-at added effort/medium Medium work item – several days of effort and removed effort/small Small work item – less than a day of effort good first issue Related to contributions. See CONTRIBUTING.md labels Mar 2, 2020
@skinny85
Copy link
Contributor

skinny85 commented May 12, 2020

Or an enum-like class, perhaps something similar to Lambda's Runtime, so that our customers are not blocked from using a new engineVersion by a CDK upgrade.

skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jun 6, 2020
Change the types of the engine from DatabaseClusterEngine and its subclass,
DatabaseInstanceEngine, to 2 separate interfaces,
IClusterEngine and IInstanceEngine.
Add properties to each of them,
including engineVersion,
and thus stop taking engineVersion separately as a property for instances,
clusters and OptionGroups.
Allow changing the version of an existing engine to an arbitrary string.
Add a bind()-like protocol to both IClusterEngine and IInstanceEngine,
which allows expressing validation and default values logic directly in the engines,
instead of hard-coding them in cluster and instance.
Because of those changes, creating a default cluster with Aurora MySQL or Postgres engines now works out of the box,
instead of failing at deploy time.
We also correctly set the port for Postgres clusters to 5432,
instead of setting it to 3306 (which is the MySQL port).

Fixes aws#2213
Fixes aws#2512
Fixes aws#4150
Fixes aws#5126
Fixes aws#6532
Fixes aws#7072

BREAKING CHANGE: the class DatabaseClusterEngine has been replaced with the interface IClusterEngine in the type of DatabaseClusterProps.engine
* **rds**: the class DatabaseInstanceEngine has been replaced with the interface IInstanceEngine in the type of DatabaseInstanceSourceProps.engine
* **rds**: DatabaseClusterProps.engineVersion has been removed, in favor of the withVersion() method on IClusterEngine
* **rds**: DatabaseInstanceNewProps.instanceClass has been renamed to instanceType
* **rds**: DatabaseInstanceSourceProps.engineVersion has been removed, in favor of the withVersion() method on IInstanceEngine
* **rds**: the engine property can no longer be passed when creating a DatabaseInstanceReadReplica
* **rds**: the property majorEngineVersion can no longer be passed when creating an OptionGroup (instead, the version is taken directly from the passed engine)
@SomayaB SomayaB added the in-progress This issue is being actively worked on. label Jun 8, 2020
@skinny85 skinny85 added this to the RDS to 'developer preview' milestone Jul 8, 2020
@skinny85 skinny85 assigned skinny85 and unassigned nija-at Jul 9, 2020
skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jul 11, 2020
Change engine versions,
for boh cluster and instance engines,
from strings to strongly-typed interfaces with static constants representing common versions.

Fixes aws#6532
skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jul 15, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes aws#6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property engineVersion in IClusterEngine changed from an optional string to a required EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from an optional string to a required EngineVersion
skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jul 16, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes aws#6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property engineVersion in IClusterEngine changed from a string to EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from a string to EngineVersion
* **rds**: the property parameterGroupFamily in IClusterEngine changed from required to optional
* **rds**: the property parameterGroupFamily in IInstanceEngine changed from required to optional
skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jul 16, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes aws#6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property engineVersion in IClusterEngine changed from a string to EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from a string to EngineVersion
* **rds**: the property parameterGroupFamily in IClusterEngine changed from required to optional
* **rds**: the property parameterGroupFamily in IInstanceEngine changed from required to optional
skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jul 16, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes aws#6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property engineVersion in IClusterEngine changed from a string to EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from a string to EngineVersion
* **rds**: the property parameterGroupFamily in IClusterEngine changed from required to optional
* **rds**: the property parameterGroupFamily in IInstanceEngine changed from required to optional
skinny85 added a commit to skinny85/aws-cdk that referenced this issue Jul 16, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes aws#6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property engineVersion in IClusterEngine changed from a string to EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from a string to EngineVersion
* **rds**: the property parameterGroupFamily in IClusterEngine changed from required to optional
* **rds**: the property parameterGroupFamily in IInstanceEngine changed from required to optional
@mergify mergify bot closed this as completed in #9016 Jul 16, 2020
mergify bot pushed a commit that referenced this issue Jul 16, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes #6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property ParameterGroupProps.family has been renamed to engine, and its type changed from string to IEngine
* **rds**: the property engineVersion in IClusterEngine changed from a string to EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from a string to EngineVersion
* **rds**: the property parameterGroupFamily in IClusterEngine changed from required to optional
* **rds**: the property parameterGroupFamily in IInstanceEngine changed from required to optional
curtiseppel pushed a commit to curtiseppel/aws-cdk that referenced this issue Aug 11, 2020
Change engine versions, for boh cluster and instance engines,
from strings to strongly-typed classes with static constants representing common versions.

Fixes aws#6532

BREAKING CHANGE: the property 'version' has been changed from string to an engine-specific
  version class; use VersionClass.of() if you need to create a specific version of an engine from a string
* **rds**: the property ParameterGroupProps.family has been renamed to engine, and its type changed from string to IEngine
* **rds**: the property engineVersion in IClusterEngine changed from a string to EngineVersion
* **rds**: the property engineVersion in IInstanceEngine changed from a string to EngineVersion
* **rds**: the property parameterGroupFamily in IClusterEngine changed from required to optional
* **rds**: the property parameterGroupFamily in IInstanceEngine changed from required to optional
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@aws-cdk/aws-rds Related to Amazon Relational Database effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. in-progress This issue is being actively worked on.
Projects
None yet
3 participants