feat: Implement EFS IOPs specification in Project YAML#313
Conversation
| Type: "wdl", | ||
| Engine: "miniwdl", | ||
| Filesystem: Filesystem{ | ||
| FSType: "S3", |
There was a problem hiding this comment.
Should this be EFS?
| - type: wdl | ||
| engine: miniwdl | ||
| filesystem: | ||
| fsType: S3 |
| - type: wdl | ||
| engine: cromwell | ||
| filesystem: | ||
| fsType: EFS |
There was a problem hiding this comment.
Cromwell can't use EFS. This test should probably fail.
| Type: "wdl", | ||
| Engine: "miniwdl", | ||
| Filesystem: Filesystem{ | ||
| FSType: "S3", |
| Engine: "nextflow", | ||
| Filesystem: Filesystem{ | ||
| FSType: "S3", | ||
| Configuration: FSConfig{FSProvisionedThroughput: 0}, |
There was a problem hiding this comment.
S3 doesn't have a provisioned throughput. We should prevent this configuration from being an option with S3
| Type: "wdl", | ||
| Engine: "miniwdl", | ||
| Filesystem: Filesystem{ | ||
| FSType: "S3", |
| Type: "wdl", | ||
| Engine: "miniwdl", | ||
| Filesystem: Filesystem{ | ||
| FSType: "S3", |
| */ | ||
| public readonly engineName: string; | ||
| /** | ||
| * Name of the filesystem to use. |
There was a problem hiding this comment.
Name of the filesystem type to use (e.g. EFS, S3)
|
Can you check and see if it's possible to enforce values for engine and filesystem in the You will also need to add logic so that the fileystem information is passed through to the cdk that generates the filesystem so that the resulting EFS volume has the desired provisioned IOPs. |
| }); | ||
| } | ||
|
|
||
| protected createAccessPointcreateFileSystem(vpc: IVpc): FileSystem { |
There was a problem hiding this comment.
Should this just be createFileSystem It doesn't create an access point unless you meant to call that method internally?
| */ | ||
| public readonly filesystemType?: string; | ||
| /** | ||
| * Name of the filesystem type to use (e.g. EFS, S3). |
There was a problem hiding this comment.
This code comment is wrong, should be something like "Amount of provisioned IOPs"
| /** | ||
| * Filesystem provisioned throughput to use for EFS. | ||
| */ | ||
| readonly iops: Size; |
There was a problem hiding this comment.
I think this should be an optional parameter. When the filesystem is S3 you can't supply iops and when the filesystem is EFS then iops is an option.
|
Looking good. General comments:
|
|
|
||
| switch (engineName) { | ||
| case ENGINE_CROMWELL: | ||
| if (filesystemType != "S3") { |
There was a problem hiding this comment.
I'm a bit confused here. What's the point of exposing filesystemType if we error on any non-default values?
There was a problem hiding this comment.
I think the plan here is to have other filesystem types in the future.
Description of Changes
We want to be able to specify the filesystem used and the throughput. This allows customers with large numbers of large files to accelerate workflows. Filesystem options are S3 and EFS, with a default of S3 for Cromwell and Nextflow and a default of EFS for MiniWDL. Valid throughput values are 1 to 1024.
Description of how you validated changes
I have added a test that checks that the default throughput is set. I have run
./scripts/run-dev.shandagc project validatewith a valid agc-project.yaml and an invalid version containing an invalid filesystem.Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license