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

BT-711 Refresh SAS token for filesystem on expiry #6831

Merged
merged 18 commits into from
Sep 12, 2022
Merged

BT-711 Refresh SAS token for filesystem on expiry #6831

merged 18 commits into from
Sep 12, 2022

Conversation

kraefrei
Copy link
Contributor

No description provided.

def findNioPath(path: String, endpoint: String, container: String, blobTokenGenerator: BlobTokenGenerator): NioPath = (for {
fileSystem <- retrieveFilesystem(new URI("azb://?endpoint=" + endpoint), container, blobTokenGenerator)
nioPath <- Try(fileSystem.getPath(path))
} yield nioPath).get // Ideally we would unwrap this to a NioPath on success and on a access failure try to recover
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Running into issues here. If we can in theory know that the filesystem auth has expired in this method, we could essentially guarantee that we return a valid filesystem by trying to refresh. There are however some errors that I am not sure how we should process (like invalid path).

If we can figure out how to get this method and as a result the below nioPath method below to be the encapsulation of this refreshing behavior, we don't have to reimplement all of the filesystem methods that try to interact with the filesystem, which I think is ideal.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I think I figured out that using a method called checkAccess is how the AzureFileSystem provider approaches identifying if the path has the auth needed to proceed, so I used this to move the onus of the check to the findNioPath method. This meant that we can recover from the thrown exceptions when first building the path object, rather than when trying to access it, however this doesn't really address the use of exceptions for control flow which I am not sure is the best way to go.

@@ -37,7 +37,7 @@ final case class BlobPathBuilderFactory(globalConfig: Config, instanceConfig: Co
}

sealed trait BlobTokenGenerator {
def getAccessToken: String
def getAccessToken: AzureSasCredential
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR made me realize that we should rename this method. get makes it seem like a regular Java getter. Maybe something like generateAccessToken?

I also think we should change this method signature to return a Try[AzureSasCredential] rather than throwing from this method.

Apologies for the somewhat out-of-scope feedback, but I think the return type change will affect the refresh logic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made an attempt for this, but am struggling with a situation where I have nested try declarations that I am unsure how to flatten. It seems a little like one way or another this exception needs to feed into the top level try

@@ -45,7 +47,7 @@ object BlobPathBuilder {
val uri = parseURI(string)
val storageAccount = parseStorageAccount(parseURI(endpoint))
val hasContainer = uri.getPath().split("/").filter(!_.isEmpty()).headOption.contains(container)
def hasEndpoint = parseStorageAccount(uri).contains(storageAccount.get)
def hasEndpoint = storageAccount.map(parseStorageAccount(uri).contains(_)).getOrElse(false)
if (hasContainer && !storageAccount.isEmpty && hasEndpoint) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than !storageAccount.isEmpty you can use storageAccount.isDefined.

@@ -45,7 +47,7 @@ object BlobPathBuilder {
val uri = parseURI(string)
val storageAccount = parseStorageAccount(parseURI(endpoint))
val hasContainer = uri.getPath().split("/").filter(!_.isEmpty()).headOption.contains(container)
def hasEndpoint = parseStorageAccount(uri).contains(storageAccount.get)
def hasEndpoint = storageAccount.map(parseStorageAccount(uri).contains(_)).getOrElse(false)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can make this even better with storageAccount.exists(parseStorageAccount(uri).contains(_))

@@ -45,7 +47,7 @@ object BlobPathBuilder {
val uri = parseURI(string)
val storageAccount = parseStorageAccount(parseURI(endpoint))
val hasContainer = uri.getPath().split("/").filter(!_.isEmpty()).headOption.contains(container)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I'm in here taking credit for IntelliJ's recommendations... can replace .filter(...).headOption with .find(...).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oi, it seems Metals is letting me down at bit, I'll try working with intellij more.

@@ -55,8 +55,7 @@ class BlobPathBuilderSpec extends AnyFlatSpec with Matchers{
blobPath.endpoint should equal(endpoint)
blobPath.pathAsString should equal(testString)
blobPath.pathWithoutScheme should equal(endpointHost + "/" + store + evalPath)

val is = Files.newInputStream(blobPath.nioPath)
val is = blobPath.newInputStream()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this new way of getting the input stream use blobPath.nioPath under the covers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indeed, I think both ways work now, but I left it using this new way just since it was neater

// Add args for container, storage account name
case class BlobPath private[blob](nioPath: NioPath, endpoint: String, container: String) extends Path {
override protected def newPath(nioPath: NioPath): Path = BlobPath(nioPath, endpoint, container)
override protected def newPath(nioPath: NioPath): Path = BlobPath(nioPath.toString(), endpoint, container, blobTokenGenerator)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scala-ism: When calling no-arg Java accessors (like toString), we typically leave the parens off. In Scala, empty parens indicate that there are arguments, but we're using all default values instead of supplying them.

(AzureFileSystem.AZURE_STORAGE_SKIP_INITIAL_CONTAINER_CHECK, java.lang.Boolean.TRUE))
}

def findNioPath(path: String, endpoint: String, container: String, blobTokenGenerator: BlobTokenGenerator, attempted: Boolean = false): NioPath = (for {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally we'd have all this checking and retrying within retrieveFilesystem. I'm guessing you're not doing that because we don't actually know whether the filesystem doesn't work until we call checkAccess, for which we need to know the Blob file path. Let's discuss!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ay, there's the rub.

@kraefrei kraefrei marked this pull request as draft August 26, 2022 20:41
Copy link
Collaborator

@jgainerdewar jgainerdewar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a bunch of mostly-minor comments, overall I think the shape of this is good! Looking forward to seeing how well it supports testing.

override def pathAsString: String = List(endpoint, container, nioPath.toString()).mkString("/")
case class TokenExpiration(token: AzureSasCredential, buffer: TemporalAmount) {
val expiry = for {
expiryString <- token.getSignature.split("&").find(_.startsWith("se")).map(_.replaceFirst("se=","")).map(_.replace("%3A", ":"))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This parsing (String => Instant) is a good candidate for unit testing, maybe break it out into its own method?


override def pathAsString: String = List(endpoint, container, nioPath.toString()).mkString("/")
case class TokenExpiration(token: AzureSasCredential, buffer: TemporalAmount) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious why this class ended up in here and not in BlobPathBuilderFactory.


val blobTokenGenerator: BlobTokenGenerator = BlobTokenGenerator.createBlobTokenGenerator(
container, endpoint, Option(workspaceId), Option(workspaceManagerURL))
val fsm = FileSystemManager(container, endpoint, 10, workspaceId, workspaceManagerURL)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eventually we'll want this buffer time to be configurable.

}
}

case class FileSystemManager(container: String,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would name this something more specific, like BlobFileSystemManager.

@@ -110,6 +154,6 @@ case class NativeBlobTokenGenerator(container: String, endpoint: String) extends
blobContainerSasPermission
)

blobContainerClient.generateSas(blobServiceSasSignatureValues)
Try(new AzureSasCredential(blobContainerClient.generateSas(blobServiceSasSignatureValues)))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm guessing this is just a draft to get it to compile with the right signature rather than the intended final form of this method. I suggest instead wrapping the whole body of the method in a Try, since that will prevent it from throwing.

def findNioPath(path: String, endpoint: String, container: String): NioPath = (for {
fileSystem <- fsm.retrieveFilesystem()
nioPath = fileSystem.getPath(path)
} yield nioPath).get
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've discussed begrudgingly accepting that this method will throw. We should ensure it throws something useful, though. I think we should throw different informative error messages depending on whether we failed to get the filesystem or failed to create the NIO path.


override def pathWithoutScheme: String = parseURI(endpoint).getHost + "/" + container + "/" + nioPath.toString

def findNioPath(path: String, endpoint: String, container: String): NioPath = (for {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this method be private?

}
}

def generateFilesystem(uri: URI, container: String, token: AzureSasCredential): Try[FileSystem] = {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this method be private?


case class FileSystemManager(container: String,
endpoint: String,
preemptionMinutes: Long,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We use the term "preemption" for lower-cost cloud computing getting preempted, I'd rather not overload it. Maybe call this expiryBuffer or something?

import scala.jdk.CollectionConverters._
import scala.util.{Failure, Try}

final case class BlobFileSystemConfig(config: Config)
final case class BlobPathBuilderFactory(globalConfig: Config, instanceConfig: Config, singletonConfig: BlobFileSystemConfig) extends PathBuilderFactory {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have a LOT of important string identifiers floating around. Not necessarily in scope for this PR, but we should consider replacing them with simple case classes so that the compiler can check that we're passing them around correctly. Otherwise it's too easy to swap their ordering in a method call and introduce a very hard-to-find bug.

case class BlobContainerName(value: String)
case class StorageAccountName(value: String)
case class WorkspaceId(value: String)

...and so on.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I will give this a try, It will likely help me get the tests right without accidentally swapping strings

def parseStorageAccount(uri: URI) = uri.getHost().split("\\.").filter(!_.isEmpty()).headOption
def invalidBlobPathMessage(container: BlobContainerName, endpoint: EndpointURL) = s"Malformed Blob URL for this builder. Expecting a URL for a container $container and endpoint $endpoint"
def parseURI(string: String): URI = URI.create(UrlEscapers.urlFragmentEscaper().escape(string))
def parseStorageAccount(uri: URI): Try[StorageAccountName] = uri.getHost.split("\\.").find(_.nonEmpty).map(StorageAccountName(_)).fold[Try[StorageAccountName]](Failure(new Exception("bad")))(Success(_))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use more descriptive exception here

@kraefrei kraefrei marked this pull request as ready for review September 6, 2022 14:07
Copy link
Collaborator

@jgainerdewar jgainerdewar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking great! So many tests!!

@@ -1,50 +1,115 @@
package cromwell.filesystems.blob
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now is a good time to take another look at this file and see if there's anything we want to move out into other files in this package. There are a lot of top-level classes in here now, the whole group would probably be easier to understand with a little division.

private def findNioPath(path: String): NioPath = (for {
fileSystem <- fsm.retrieveFilesystem()
nioPath = fileSystem.getPath(path)
} yield nioPath) match {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've talked a lot about avoiding unprotected .get calls, but in this case it might be clearer to use one (and leave a comment explaining why we're deliberately throwing). That would make this a lot shorter, I think you can do something like:

fsm.retrieveFilesystem.map(_.getPath(path)).get

...though we'd then want to ensure that the error that shows up in the logs makes it obvious what the problem is.

val container: BlobContainerName = BlobContainerName(instanceConfig.as[String]("container"))
val endpoint: EndpointURL = EndpointURL(instanceConfig.as[String]("endpoint"))
val workspaceId: Option[WorkspaceId] = instanceConfig.as[Option[String]]("workspace-id").map(WorkspaceId(_))
val expiryBufferMinutes: Long = instanceConfig.as[Option[Long]]("expiry-buffer-minutes").getOrElse(10)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking out loud, once we have this base config checked into reference.conf it would be preferable to set the default there... but we can't do that yet, so here is good.

def hasTokenExpired(tokenExpiry: Instant, buffer: Duration): Boolean = Instant.now.plus(buffer).isAfter(tokenExpiry)
def uri(endpoint: EndpointURL) = new URI("azb://?endpoint=" + endpoint)
}
case class BlobFileSystemManager(container: BlobContainerName,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whitespace nitpick: I think it's standard to have a newline between ( and the first member of the case class, in cases where the members are split over multiple lines.

expiryBufferMinutes: Long,
blobTokenGenerator: BlobTokenGenerator,
fileSystemAPI: FileSystemAPI = FileSystemAPI(),
initialExpiration: Option[Instant] = None) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the use case for passing in an initial expiry time? Feels kind of weird since there's no enforcement that the filesystem exists.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mostly for testing to be honest, could make it a private arg possibly? I had been considering this or having a setter, but I liked a parameter that could only be set on construction better so that the internal timestamp wasn't something that could be easily modified.

def isTokenExpired: Boolean = expiry.exists(BlobFileSystemManager.hasTokenExpired(_, buffer))
def retrieveFilesystem(): Try[FileSystem] = {
synchronized {
(isTokenExpired, expiry) match {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional tweaking: I would find this clearer if the decision-making were pulled out into a boolean shouldReopenFilesystem method.

def parseTokenExpiry(token: AzureSasCredential): Option[Instant] = for {
expiryString <- token.getSignature.split("&").find(_.startsWith("se")).map(_.replaceFirst("se=","")).map(_.replace("%3A", ":"))
instant = Instant.parse(expiryString)
} yield instant
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm, do we expect to ever return None from this method? It looks like that would result in us getting a new token and refreshing the filesystem every time we need it. For now we should perhaps throw an error instead. I'd rather it blow up than silently refresh itself constantly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, good catch. I wrote this this way because it may turn up no expiration token in the general case, but for our purpose that is likely an error.

)

blobContainerClient.generateSas(blobServiceSasSignatureValues)
private def azure = AzureResourceManager.authenticate(azureCredentialBuilder, azureProfile).withSubscription("62b22893-6bc1-46d9-8a90-806bb3cce3c9")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not check in this subscription number. :) Does it need to be included in the config?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A config is a good idea! I have made this mistake a few times and the default doesn't seem to be working for me.

bcc = buildBlobContainerClient(sskc, endpoint, container)
bsssv = new BlobServiceSasSignatureValues(OffsetDateTime.now.plusDays(1), bcsp)
asc = new AzureSasCredential(bcc.generateSas(bsssv))
} yield asc
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So much cleaner! Nice!

val configMap = BlobFileSystemManager.buildConfigMap(sasToken, container)
val azureUri = BlobFileSystemManager.uri(endpoint)
// Need a fake filesystem to supply the getFileSystem simulated try
val dummyFileSystem = null
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way to do this without a null?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So yes, but it would involve another mock. I was using this way in favor of a mock mostly because we do not actually need the object, but the type signature, but I was mostly trying to use this as an exercise to only include the mocks we need to test against.

Copy link
Contributor

@breilly2 breilly2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 I didn't finish going through line-by-line, but we had a team review of Janet's feedback and that helped me understand some pieces better... enough to have confidence in these changes.

def parseStorageAccount(uri: URI) = uri.getHost().split("\\.").filter(!_.isEmpty()).headOption
def invalidBlobPathMessage(container: BlobContainerName, endpoint: EndpointURL) = s"Malformed Blob URL for this builder. Expecting a URL for a container $container and endpoint $endpoint"
def parseURI(string: String): URI = URI.create(UrlEscapers.urlFragmentEscaper().escape(string))
def parseStorageAccount(uri: URI): Try[StorageAccountName] = uri.getHost.split("\\.").find(_.nonEmpty).map(StorageAccountName(_)).fold[Try[StorageAccountName]](Failure(new Exception("Could not parse storage account")))(Success(_))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IntelliJ is telling me that .map(StorageAccountName(_)) can be just .map(StorageAccountName). But I'm also seeing it say that doesn't work in other cases and I don't understand why. 🤷‍♂️

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I was wondering about this shorthand. I may leave this to be consistent

def parseStorageAccount(uri: URI) = uri.getHost().split("\\.").filter(!_.isEmpty()).headOption
def invalidBlobPathMessage(container: BlobContainerName, endpoint: EndpointURL) = s"Malformed Blob URL for this builder. Expecting a URL for a container $container and endpoint $endpoint"
def parseURI(string: String): URI = URI.create(UrlEscapers.urlFragmentEscaper().escape(string))
def parseStorageAccount(uri: URI): Try[StorageAccountName] = uri.getHost.split("\\.").find(_.nonEmpty).map(StorageAccountName(_)).fold[Try[StorageAccountName]](Failure(new Exception("Could not parse storage account")))(Success(_))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fold doesn't feel natural to me when dealing with an Option (though I get that it works because it's essentially a container). Is this a common way to handle this in other places in Cromwell?

If not, what do you think of:

    maybeName.toRight(new Exception("Could not parse storage account")).toTry

or

    maybeName.map(Success(_)).getOrElse(Failure(new Exception("Could not parse storage account")))

(.map(Success(_)) is where IntelliJ complains if I try just .map(Success). 🤷‍♂️)
or even just pattern matching on Some/None?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the map approach! I'll go with that

val hasContainer = uri.getPath().split("/").filter(!_.isEmpty()).headOption.contains(container)
def hasEndpoint = parseStorageAccount(uri).contains(storageAccount.get)
if (hasContainer && !storageAccount.isEmpty && hasEndpoint) {
val storageAccount = parseStorageAccount(parseURI(endpoint.value))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be helpful to continue pushing this style through the whole function. Managing the Try returned here inside of a Try { } didn't make sense to me at first. I wonder if parseURI is the only other thing in here that could throw an exception... at which point a for-comprehension might be really easy to read.

val evalPath = "/path/to/file"
val testString = endpoint + "/" + container + evalPath
val testString = endpoint.value + "/" + container + evalPath
BlobPathBuilder.validateBlobPath(testString, container, endpoint) match {
case BlobPathBuilder.ValidBlobPath(path) => path should equal(evalPath)
case BlobPathBuilder.UnparsableBlobPath(errorMessage) => fail(errorMessage)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm interested in understanding if you found BlobPathValidation helped with testability or code clarity. When reading the code, I had assumed it would help with testability, but then this seems like more ceremony than should be necessary to interpret a UnpansableBlobPath as a test failure. It looks like this works for asserting the thing that this test cares about:

    BlobPathBuilder.validateBlobPath(testString, container, endpoint) should equal(BlobPathBuilder.ValidBlobPath(evalPath))

That said, I realize that this line isn't actually changed in this PR. 🤷‍♂️

Copy link
Collaborator

@jgainerdewar jgainerdewar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like I introduced some merge conflicts, once those are resolved and tests pass this should be good to go!

@kraefrei kraefrei merged commit 01d63af into develop Sep 12, 2022
henriqueribeiro added a commit to henriqueribeiro/cromwell that referenced this pull request Mar 20, 2023
* Update cromwell version from 83 to 84

* BW-1255 Implement POST /runs endpoint (broadinstitute#6779)

* Adding route

* Fixing HTTP method error

* All formFields made optional

* A compliling state

* Saving

* Saving

* All three endpoints functioning as expected; updated RESTAPI.md

* Updated response for submission from 200 to 201 to pass tests

* Test submission response

* Moved updated submission response to askSubmit

* test

* updating RESTAPI.md

* saving

* Adding utility file for submitRequest

* cleanup

* Update awssdkv from 2.17.152 to 2.17.194 (broadinstitute#6814)

* BW-1305 Swagger Update (broadinstitute#6818)

* Properly documenting metadataArchiveStatus in WorkflowQueryResult model

* Update docs

* BT-710 Add configs for BlobPathBuilderFactory (broadinstitute#6817)

BT-710 Add configs for BlobPathBuilderFactory

* BW-1305 Make "name" optional in workflow query response (broadinstitute#6821)

* BT-724 Fix BlobPathBuilder failing on retrieving existing filesystem (broadinstitute#6816)

Modify blobPathBuilder to fallback to creating a filesystem if one is not found

* Logging updates: (broadinstitute#6813)

* [BT-698] first pass on BlobTokenGenerator with E2E test (broadinstitute#6824)

* first pass on BlobTokenGenerator with E2E test

* update BlobPathBuilder constructor args in test

* account -> container level client

* [BT-687] specify correct types (broadinstitute#6829)

* specify correct types

* fix test with new type

* remove type declarations in function call

* remove unnecessary sas-token config

* BW-1206 - Combine all Wes Endpoints & add Tests (broadinstitute#6833)

* Add tests, getting frid of WesRunRoutes.scala

* wesWorkflowId fix, ec implicits errors gone

* Refactoring path for GET /runs

* Indentation fix

* Commit to rollback

* Revert "Indentation fix"

This reverts commit 63fc484.

* PR trigger

* Optimize imports

* Missed import

* BW-1354 - Porting CBAS preliminary step (broadinstitute#6837)

* Getting rid of shared utility file; Adding/Updating WES version of submit.

* Edit spec file

* Adding Wes-like error

* BW-1378 Addl CromIAM user enablement checks (broadinstitute#6826)

* Update cromwell version from 84 to 85

* BW-1393 Release doc updates (broadinstitute#6839)

* BT-732 Checksum validation for blobs read by engine (broadinstitute#6838)

* Draft support for optional FileHash

* Draft getMd5 for BlobPath

* Resolve non-parallel IO to fix tests

* Checksum validation for BlobPath

* Nicer error message

* Test for missing Blob hash

* Break attr acquisition into separate method

* Cleanup, comments

* In-progress tests of blob hash command

* Remove test

* Remove unused import

* BT-711 Refresh SAS token for filesystem on expiry (broadinstitute#6831)

* BT-711 Refresh SAS token for filesystem on expiry

* Rough cut of token refresh using exceptions

* Ignore tests, and minor cleanup

* Remove stray line

* Draft of manager class for handling expiring file systems

* Style fixes

* Refactor of blobfilesystemManager and tests covering its functionality

* Refined tests to validate close filesystem as separate unit

* Ignore connected tests

* Clean up of some things

* Refactor BlobFileSystemManager to separate file, and some other cleanup

* Some additional scala-ifying

* Small cleanup

* Correcting imports

* trigger tests

* trigger tests

* Batch 1 of scala steward updates (broadinstitute#6903)

* Batch 1 of scala steward updates

* Rollback snakeYAML

* Attempt 3, with only the passing dependancies

* Revert google API and Big Query udpates

* Winding back other google deps

* rollback remaining google updates

* trigger tests

* trigger tests

* [BW-1398] Migrate PKs to BIGINT (broadinstitute#6907)

* BT-745  Batch 2 of scala steward updates (broadinstitute#6906)

* Update SBT to 2.0.0

* Fix sbt-git import

* Update mouse to 1.0.11

* Update rhino 1.7.14

* SUP-692 Retry with more memory after RC 137 (broadinstitute#6912)

* Reorder execution result checks so 137 can retry with more memory

* Test for memory retry after 137 RC

* Fix test expectations

* Make memory retry checks consistent

* Revert changes to existing test

* Rename retryWithMoreMemory to outOfMemoryDetected

* Scala steward updates batch 3 (broadinstitute#6913)

* Scala steward updates batch 3

* WX-745 Batch 4 scala steward updates (broadinstitute#6916)

* WX-746 Localize all DRS inputs in a single Action (broadinstitute#6914)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WX-755 Build all images instead of just Cromwell (broadinstitute#6919)

* WX-755 Add `isRelease` option for Docker builds (broadinstitute#6923)

* WX-755 Cromwell/CromIAM automatically board train (broadinstitute#6924)

* WX-755 Fix environment variable syntax (broadinstitute#6926)

* WX-743 Enable TES task creation with BlobPaths (broadinstitute#6921)

* Give blob SAS tokens write permission

* Case class wrapper for subscription id

* Resolve duplicate container name in absolute BlobPath

* Ignored test demonstrating correct absolute path generation

* Update filesystems/blob/src/test/scala/cromwell/filesystems/blob/BlobPathBuilderSpec.scala

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* PR feedback

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* [WX-765] Update snakeyaml to 1.33 (broadinstitute#6927)

* update snakeyaml to 1.33

* Don't use deprecated no-arg Constructor constructor

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WM-1414 Refactoring WesRunLog to omit Cromwell's "workflowLog" object (broadinstitute#6925)

* Upgrade Postgres to 42.4.1 (broadinstitute#6932)

* WX-735 Fix incorrect and/or nondeterministic filesystem ordering (broadinstitute#6930)

* WX-772 Update Scala to 2.13.9 (broadinstitute#6928)

* Update Scala to 2.13.9

* Try updating sbt-scoverage

* Does this version exist anywhere we can see?

* This version actually exists

* Update library version to remove conflict

* Codegen version

* Fix fun new 2.13.9 compiler errors

* Resolve warnings

* Newest Scala?

* I guess not

* Does this please Travis?

* force ci

* Back out changes to generated code

Co-authored-by: Adam Nichols <aednichols@gmail.com>

* WX-781 Bump jackson-databind in /CromwellRefdiskManifestCreator (broadinstitute#6935)

Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.2.2 to 2.13.4.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* WX-808 Host allowlist for HTTP imports (broadinstitute#6938)

* `hostAllowlist` that allows everything

* Refactor

* Stick allow list in HttpResolver

* Better default config

* Allow list tests

* Make it build

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Update commons text to 1.10.0 (broadinstitute#6937)

* WX-751 Token refresh signal for monitoring (broadinstitute#6939)

* Log messages

* `DEBUG` -> `INFO`

* WX-744 Optionally rewrite blob paths to appear as local paths (broadinstitute#6941)

* Modify blob paths for TES

* Make blob transformation configurable

* Update supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesTask.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Apply PR feedback in second place

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Update changelog for wdl http allow list (broadinstitute#6944)

* WM-1491 Fixing Cromwell-client (broadinstitute#6943)

* More updated client for use in cbas

* Removing excess code

* Fix client build script (broadinstitute#6945)

* WX-837: Remove CWL references from documentation (broadinstitute#6949)

* wx-837 removed cwl references in markdown doc files

* wx-837 removed cwlParsingOverview.md, updated mkdocs.yml

* wx-837 updated cromwell.yaml, generated new RESTAPI file

* WX-728 Add configurable WSM client to Cromwell (broadinstitute#6948)

* Dependencies

* Compiles but no tests

* Formatting

* Moar exclusions

* Update to latest WSM

* Add additional dependency

* We need some UUID here to make the request

* Formatting

* Clarify what is fake

* Formatting

* Use our own version of Jersey and Jackson stuff

* Port-in Khalid's changes (thank you!)

Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* Test longevity

Don't break the test if someone decides to add a cert to `ws.org`

* Cleanup

* Cleanup

* Cleanup

* Adjust TES config file for CI

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* CROM-6554: Removed PAPIv1 references from doc (broadinstitute#6950)

* crom-6554 removed references to PAPI v1 from doc

* crom-6554 pr feedback, reworded doc to use example conf as a starting point

* WX-833 Real Azure DRS Credentials (broadinstitute#6952)

* Remove B2C reference from name

* Get token for current user rather than getting from KeyVault

* Remove KeyVault config for engine

* Remove KeyVault config for DRSLocalizer

* Remove KeyVault dependency

* Remove KeyVault support from localizer repo template

* Cleaned up and working Azure token acquisition for engine

* Collapse localizer's AccessTokenStrategy into DrsCredentials

* Cleanup

* WX-853 Remove most CWL (broadinstitute#6955)

* WX-696 Enable getting SAS token from WSM (broadinstitute#6954)

* WX-696 Enable getting SAS token from WSM

* Wire container resource id from config

* Move resource-container-id config path

* First pass at config for WSM

* Remove unused singleton config

* Tests for new config

* Fix config parsing

* Modified b2c token to be provided each time

* Remove singletonConfig arg from factory

* Restore types to factory configs

* Clean up comments and empty token default

* Default to config b2c before searching environment

* Fix token default on api client

* Fix test

* Refactor error handling for when there is no token

* Remove token constructor arg for clientProvider

* Move configs to global singleton config

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

* default -> override

* Add override token to test

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Parentheses

* Reduce token timeout

* Move AzureCredentials to separate file

* Make AzureCredentials an object

* WSM token cleanup

* Config refactor (broadinstitute#6960)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Initial blob token documentation

* Refine language in BlobSasTokenGenerator

* Update comment and formatting

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* WX-853 Remove CWL language factory, Centaur runner (broadinstitute#6961)

* WX-842 Add Pact Dependency for Cromwell (broadinstitute#6962)

* WX-842 Add Pact Dependency for Cromwell

* Remove incomplete test spec

* Initial Pact Test

* Fix pact so it compiles

* Add breadcrumb comment and clean up

* ID-125 Add support for drshub, rename all the things (broadinstitute#6959)

* Add support for drshub, rename all the things

* fallback to martha if resolver is not in config

* WX-867 Translate crc32c hashes to b64 for getm (broadinstitute#6970)

* Translate crc32c hashes to b64 for getm

* Update tests

* Remove obsolete b64 handling for md5, centralize hex validation

* Restore old test, fix other test

* WX-843 Workflow failure reason should accurately indicate issues opening blob filesystem (broadinstitute#6965)

* WX-859 Accept workflow execution identity in config (broadinstitute#6967)

* WX-892 Trim down `ValueStore` logging to prevent OOMs (broadinstitute#6981)

* Add Nirvana 3.18.1 reference image test, minor cleanup [VS-705] (broadinstitute#6975)

* WX-863 Turn off Azure NIO logging (broadinstitute#6982)

* Turn off Azure NIO logging

* Poke Travis

* WM-1616: Allow repeating attempts at initialization (take 2) (broadinstitute#6985)

* WX-878 Single shared BlobFileSystemManager (broadinstitute#6986)

* Make BlobFileSystemManager shared across all BlobPathBuilders

* Update TES conf file to reflect new singleton config

* Shell escape reference image  files [VS-796] [WX-910] (broadinstitute#6989)

* WX-769 `disks` compatibility for TES backend (broadinstitute#6991)

* Update FiveMinuteIntro.md (broadinstitute#6994)

* WX-906 Sbt Unit Tests as Github Actions (broadinstitute#6992)

* WX-926 Support falling back to OCI Manifest Format (broadinstitute#7003)

* WX-926 Support falling back to OCI Manifest Forma

* Only mount reference disks if requested [WX-925] (broadinstitute#7001)

* [WM-1646] Add missing fields for `WorkflowDescription` for WomTool /describe endpoint to Swagger (broadinstitute#7004)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status (broadinstitute#6980)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status

* Address feedback

* Address feedback (broadinstitute#6997)

* Address additional feedback (broadinstitute#7000)

* Fix copy/paste error (broadinstitute#7005)

* Address additional feedback

* Fix copy/paste error

* Trigger CI

---------

Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Centaur reference image test should validate symlinks [VS-796] (broadinstitute#6996)

* WX-903 Pre-GHA test suite disablement

* WX-877 Update CHANGELOG for release 85 (broadinstitute#7011)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
henriqueribeiro added a commit to henriqueribeiro/cromwell that referenced this pull request May 9, 2023
* 85 release (#28)

* Update cromwell version from 83 to 84

* BW-1255 Implement POST /runs endpoint (broadinstitute#6779)

* Adding route

* Fixing HTTP method error

* All formFields made optional

* A compliling state

* Saving

* Saving

* All three endpoints functioning as expected; updated RESTAPI.md

* Updated response for submission from 200 to 201 to pass tests

* Test submission response

* Moved updated submission response to askSubmit

* test

* updating RESTAPI.md

* saving

* Adding utility file for submitRequest

* cleanup

* Update awssdkv from 2.17.152 to 2.17.194 (broadinstitute#6814)

* BW-1305 Swagger Update (broadinstitute#6818)

* Properly documenting metadataArchiveStatus in WorkflowQueryResult model

* Update docs

* BT-710 Add configs for BlobPathBuilderFactory (broadinstitute#6817)

BT-710 Add configs for BlobPathBuilderFactory

* BW-1305 Make "name" optional in workflow query response (broadinstitute#6821)

* BT-724 Fix BlobPathBuilder failing on retrieving existing filesystem (broadinstitute#6816)

Modify blobPathBuilder to fallback to creating a filesystem if one is not found

* Logging updates: (broadinstitute#6813)

* [BT-698] first pass on BlobTokenGenerator with E2E test (broadinstitute#6824)

* first pass on BlobTokenGenerator with E2E test

* update BlobPathBuilder constructor args in test

* account -> container level client

* [BT-687] specify correct types (broadinstitute#6829)

* specify correct types

* fix test with new type

* remove type declarations in function call

* remove unnecessary sas-token config

* BW-1206 - Combine all Wes Endpoints & add Tests (broadinstitute#6833)

* Add tests, getting frid of WesRunRoutes.scala

* wesWorkflowId fix, ec implicits errors gone

* Refactoring path for GET /runs

* Indentation fix

* Commit to rollback

* Revert "Indentation fix"

This reverts commit 63fc484.

* PR trigger

* Optimize imports

* Missed import

* BW-1354 - Porting CBAS preliminary step (broadinstitute#6837)

* Getting rid of shared utility file; Adding/Updating WES version of submit.

* Edit spec file

* Adding Wes-like error

* BW-1378 Addl CromIAM user enablement checks (broadinstitute#6826)

* Update cromwell version from 84 to 85

* BW-1393 Release doc updates (broadinstitute#6839)

* BT-732 Checksum validation for blobs read by engine (broadinstitute#6838)

* Draft support for optional FileHash

* Draft getMd5 for BlobPath

* Resolve non-parallel IO to fix tests

* Checksum validation for BlobPath

* Nicer error message

* Test for missing Blob hash

* Break attr acquisition into separate method

* Cleanup, comments

* In-progress tests of blob hash command

* Remove test

* Remove unused import

* BT-711 Refresh SAS token for filesystem on expiry (broadinstitute#6831)

* BT-711 Refresh SAS token for filesystem on expiry

* Rough cut of token refresh using exceptions

* Ignore tests, and minor cleanup

* Remove stray line

* Draft of manager class for handling expiring file systems

* Style fixes

* Refactor of blobfilesystemManager and tests covering its functionality

* Refined tests to validate close filesystem as separate unit

* Ignore connected tests

* Clean up of some things

* Refactor BlobFileSystemManager to separate file, and some other cleanup

* Some additional scala-ifying

* Small cleanup

* Correcting imports

* trigger tests

* trigger tests

* Batch 1 of scala steward updates (broadinstitute#6903)

* Batch 1 of scala steward updates

* Rollback snakeYAML

* Attempt 3, with only the passing dependancies

* Revert google API and Big Query udpates

* Winding back other google deps

* rollback remaining google updates

* trigger tests

* trigger tests

* [BW-1398] Migrate PKs to BIGINT (broadinstitute#6907)

* BT-745  Batch 2 of scala steward updates (broadinstitute#6906)

* Update SBT to 2.0.0

* Fix sbt-git import

* Update mouse to 1.0.11

* Update rhino 1.7.14

* SUP-692 Retry with more memory after RC 137 (broadinstitute#6912)

* Reorder execution result checks so 137 can retry with more memory

* Test for memory retry after 137 RC

* Fix test expectations

* Make memory retry checks consistent

* Revert changes to existing test

* Rename retryWithMoreMemory to outOfMemoryDetected

* Scala steward updates batch 3 (broadinstitute#6913)

* Scala steward updates batch 3

* WX-745 Batch 4 scala steward updates (broadinstitute#6916)

* WX-746 Localize all DRS inputs in a single Action (broadinstitute#6914)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WX-755 Build all images instead of just Cromwell (broadinstitute#6919)

* WX-755 Add `isRelease` option for Docker builds (broadinstitute#6923)

* WX-755 Cromwell/CromIAM automatically board train (broadinstitute#6924)

* WX-755 Fix environment variable syntax (broadinstitute#6926)

* WX-743 Enable TES task creation with BlobPaths (broadinstitute#6921)

* Give blob SAS tokens write permission

* Case class wrapper for subscription id

* Resolve duplicate container name in absolute BlobPath

* Ignored test demonstrating correct absolute path generation

* Update filesystems/blob/src/test/scala/cromwell/filesystems/blob/BlobPathBuilderSpec.scala

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* PR feedback

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* [WX-765] Update snakeyaml to 1.33 (broadinstitute#6927)

* update snakeyaml to 1.33

* Don't use deprecated no-arg Constructor constructor

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WM-1414 Refactoring WesRunLog to omit Cromwell's "workflowLog" object (broadinstitute#6925)

* Upgrade Postgres to 42.4.1 (broadinstitute#6932)

* WX-735 Fix incorrect and/or nondeterministic filesystem ordering (broadinstitute#6930)

* WX-772 Update Scala to 2.13.9 (broadinstitute#6928)

* Update Scala to 2.13.9

* Try updating sbt-scoverage

* Does this version exist anywhere we can see?

* This version actually exists

* Update library version to remove conflict

* Codegen version

* Fix fun new 2.13.9 compiler errors

* Resolve warnings

* Newest Scala?

* I guess not

* Does this please Travis?

* force ci

* Back out changes to generated code

Co-authored-by: Adam Nichols <aednichols@gmail.com>

* WX-781 Bump jackson-databind in /CromwellRefdiskManifestCreator (broadinstitute#6935)

Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.2.2 to 2.13.4.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* WX-808 Host allowlist for HTTP imports (broadinstitute#6938)

* `hostAllowlist` that allows everything

* Refactor

* Stick allow list in HttpResolver

* Better default config

* Allow list tests

* Make it build

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Update commons text to 1.10.0 (broadinstitute#6937)

* WX-751 Token refresh signal for monitoring (broadinstitute#6939)

* Log messages

* `DEBUG` -> `INFO`

* WX-744 Optionally rewrite blob paths to appear as local paths (broadinstitute#6941)

* Modify blob paths for TES

* Make blob transformation configurable

* Update supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesTask.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Apply PR feedback in second place

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Update changelog for wdl http allow list (broadinstitute#6944)

* WM-1491 Fixing Cromwell-client (broadinstitute#6943)

* More updated client for use in cbas

* Removing excess code

* Fix client build script (broadinstitute#6945)

* WX-837: Remove CWL references from documentation (broadinstitute#6949)

* wx-837 removed cwl references in markdown doc files

* wx-837 removed cwlParsingOverview.md, updated mkdocs.yml

* wx-837 updated cromwell.yaml, generated new RESTAPI file

* WX-728 Add configurable WSM client to Cromwell (broadinstitute#6948)

* Dependencies

* Compiles but no tests

* Formatting

* Moar exclusions

* Update to latest WSM

* Add additional dependency

* We need some UUID here to make the request

* Formatting

* Clarify what is fake

* Formatting

* Use our own version of Jersey and Jackson stuff

* Port-in Khalid's changes (thank you!)

Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* Test longevity

Don't break the test if someone decides to add a cert to `ws.org`

* Cleanup

* Cleanup

* Cleanup

* Adjust TES config file for CI

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* CROM-6554: Removed PAPIv1 references from doc (broadinstitute#6950)

* crom-6554 removed references to PAPI v1 from doc

* crom-6554 pr feedback, reworded doc to use example conf as a starting point

* WX-833 Real Azure DRS Credentials (broadinstitute#6952)

* Remove B2C reference from name

* Get token for current user rather than getting from KeyVault

* Remove KeyVault config for engine

* Remove KeyVault config for DRSLocalizer

* Remove KeyVault dependency

* Remove KeyVault support from localizer repo template

* Cleaned up and working Azure token acquisition for engine

* Collapse localizer's AccessTokenStrategy into DrsCredentials

* Cleanup

* WX-853 Remove most CWL (broadinstitute#6955)

* WX-696 Enable getting SAS token from WSM (broadinstitute#6954)

* WX-696 Enable getting SAS token from WSM

* Wire container resource id from config

* Move resource-container-id config path

* First pass at config for WSM

* Remove unused singleton config

* Tests for new config

* Fix config parsing

* Modified b2c token to be provided each time

* Remove singletonConfig arg from factory

* Restore types to factory configs

* Clean up comments and empty token default

* Default to config b2c before searching environment

* Fix token default on api client

* Fix test

* Refactor error handling for when there is no token

* Remove token constructor arg for clientProvider

* Move configs to global singleton config

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

* default -> override

* Add override token to test

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Parentheses

* Reduce token timeout

* Move AzureCredentials to separate file

* Make AzureCredentials an object

* WSM token cleanup

* Config refactor (broadinstitute#6960)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Initial blob token documentation

* Refine language in BlobSasTokenGenerator

* Update comment and formatting

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* WX-853 Remove CWL language factory, Centaur runner (broadinstitute#6961)

* WX-842 Add Pact Dependency for Cromwell (broadinstitute#6962)

* WX-842 Add Pact Dependency for Cromwell

* Remove incomplete test spec

* Initial Pact Test

* Fix pact so it compiles

* Add breadcrumb comment and clean up

* ID-125 Add support for drshub, rename all the things (broadinstitute#6959)

* Add support for drshub, rename all the things

* fallback to martha if resolver is not in config

* WX-867 Translate crc32c hashes to b64 for getm (broadinstitute#6970)

* Translate crc32c hashes to b64 for getm

* Update tests

* Remove obsolete b64 handling for md5, centralize hex validation

* Restore old test, fix other test

* WX-843 Workflow failure reason should accurately indicate issues opening blob filesystem (broadinstitute#6965)

* WX-859 Accept workflow execution identity in config (broadinstitute#6967)

* WX-892 Trim down `ValueStore` logging to prevent OOMs (broadinstitute#6981)

* Add Nirvana 3.18.1 reference image test, minor cleanup [VS-705] (broadinstitute#6975)

* WX-863 Turn off Azure NIO logging (broadinstitute#6982)

* Turn off Azure NIO logging

* Poke Travis

* WM-1616: Allow repeating attempts at initialization (take 2) (broadinstitute#6985)

* WX-878 Single shared BlobFileSystemManager (broadinstitute#6986)

* Make BlobFileSystemManager shared across all BlobPathBuilders

* Update TES conf file to reflect new singleton config

* Shell escape reference image  files [VS-796] [WX-910] (broadinstitute#6989)

* WX-769 `disks` compatibility for TES backend (broadinstitute#6991)

* Update FiveMinuteIntro.md (broadinstitute#6994)

* WX-906 Sbt Unit Tests as Github Actions (broadinstitute#6992)

* WX-926 Support falling back to OCI Manifest Format (broadinstitute#7003)

* WX-926 Support falling back to OCI Manifest Forma

* Only mount reference disks if requested [WX-925] (broadinstitute#7001)

* [WM-1646] Add missing fields for `WorkflowDescription` for WomTool /describe endpoint to Swagger (broadinstitute#7004)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status (broadinstitute#6980)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status

* Address feedback

* Address feedback (broadinstitute#6997)

* Address additional feedback (broadinstitute#7000)

* Fix copy/paste error (broadinstitute#7005)

* Address additional feedback

* Fix copy/paste error

* Trigger CI

---------

Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Centaur reference image test should validate symlinks [VS-796] (broadinstitute#6996)

* WX-903 Pre-GHA test suite disablement

* WX-877 Update CHANGELOG for release 85 (broadinstitute#7011)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>

* Develop aws (#29)

* stuck on globbing

* efs works, no callcaching

* update readme

* extended EFS support

* fix for globbing in nested scatters

* updated config for globbing, to prevent issues with empty folders

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: geertvandeweyer <geertvandeweyer@gmail.com>
henriqueribeiro added a commit to henriqueribeiro/cromwell that referenced this pull request Sep 18, 2023
* 85 release (#28)

* Update cromwell version from 83 to 84

* BW-1255 Implement POST /runs endpoint (broadinstitute#6779)

* Adding route

* Fixing HTTP method error

* All formFields made optional

* A compliling state

* Saving

* Saving

* All three endpoints functioning as expected; updated RESTAPI.md

* Updated response for submission from 200 to 201 to pass tests

* Test submission response

* Moved updated submission response to askSubmit

* test

* updating RESTAPI.md

* saving

* Adding utility file for submitRequest

* cleanup

* Update awssdkv from 2.17.152 to 2.17.194 (broadinstitute#6814)

* BW-1305 Swagger Update (broadinstitute#6818)

* Properly documenting metadataArchiveStatus in WorkflowQueryResult model

* Update docs

* BT-710 Add configs for BlobPathBuilderFactory (broadinstitute#6817)

BT-710 Add configs for BlobPathBuilderFactory

* BW-1305 Make "name" optional in workflow query response (broadinstitute#6821)

* BT-724 Fix BlobPathBuilder failing on retrieving existing filesystem (broadinstitute#6816)

Modify blobPathBuilder to fallback to creating a filesystem if one is not found

* Logging updates: (broadinstitute#6813)

* [BT-698] first pass on BlobTokenGenerator with E2E test (broadinstitute#6824)

* first pass on BlobTokenGenerator with E2E test

* update BlobPathBuilder constructor args in test

* account -> container level client

* [BT-687] specify correct types (broadinstitute#6829)

* specify correct types

* fix test with new type

* remove type declarations in function call

* remove unnecessary sas-token config

* BW-1206 - Combine all Wes Endpoints & add Tests (broadinstitute#6833)

* Add tests, getting frid of WesRunRoutes.scala

* wesWorkflowId fix, ec implicits errors gone

* Refactoring path for GET /runs

* Indentation fix

* Commit to rollback

* Revert "Indentation fix"

This reverts commit 63fc484.

* PR trigger

* Optimize imports

* Missed import

* BW-1354 - Porting CBAS preliminary step (broadinstitute#6837)

* Getting rid of shared utility file; Adding/Updating WES version of submit.

* Edit spec file

* Adding Wes-like error

* BW-1378 Addl CromIAM user enablement checks (broadinstitute#6826)

* Update cromwell version from 84 to 85

* BW-1393 Release doc updates (broadinstitute#6839)

* BT-732 Checksum validation for blobs read by engine (broadinstitute#6838)

* Draft support for optional FileHash

* Draft getMd5 for BlobPath

* Resolve non-parallel IO to fix tests

* Checksum validation for BlobPath

* Nicer error message

* Test for missing Blob hash

* Break attr acquisition into separate method

* Cleanup, comments

* In-progress tests of blob hash command

* Remove test

* Remove unused import

* BT-711 Refresh SAS token for filesystem on expiry (broadinstitute#6831)

* BT-711 Refresh SAS token for filesystem on expiry

* Rough cut of token refresh using exceptions

* Ignore tests, and minor cleanup

* Remove stray line

* Draft of manager class for handling expiring file systems

* Style fixes

* Refactor of blobfilesystemManager and tests covering its functionality

* Refined tests to validate close filesystem as separate unit

* Ignore connected tests

* Clean up of some things

* Refactor BlobFileSystemManager to separate file, and some other cleanup

* Some additional scala-ifying

* Small cleanup

* Correcting imports

* trigger tests

* trigger tests

* Batch 1 of scala steward updates (broadinstitute#6903)

* Batch 1 of scala steward updates

* Rollback snakeYAML

* Attempt 3, with only the passing dependancies

* Revert google API and Big Query udpates

* Winding back other google deps

* rollback remaining google updates

* trigger tests

* trigger tests

* [BW-1398] Migrate PKs to BIGINT (broadinstitute#6907)

* BT-745  Batch 2 of scala steward updates (broadinstitute#6906)

* Update SBT to 2.0.0

* Fix sbt-git import

* Update mouse to 1.0.11

* Update rhino 1.7.14

* SUP-692 Retry with more memory after RC 137 (broadinstitute#6912)

* Reorder execution result checks so 137 can retry with more memory

* Test for memory retry after 137 RC

* Fix test expectations

* Make memory retry checks consistent

* Revert changes to existing test

* Rename retryWithMoreMemory to outOfMemoryDetected

* Scala steward updates batch 3 (broadinstitute#6913)

* Scala steward updates batch 3

* WX-745 Batch 4 scala steward updates (broadinstitute#6916)

* WX-746 Localize all DRS inputs in a single Action (broadinstitute#6914)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WX-755 Build all images instead of just Cromwell (broadinstitute#6919)

* WX-755 Add `isRelease` option for Docker builds (broadinstitute#6923)

* WX-755 Cromwell/CromIAM automatically board train (broadinstitute#6924)

* WX-755 Fix environment variable syntax (broadinstitute#6926)

* WX-743 Enable TES task creation with BlobPaths (broadinstitute#6921)

* Give blob SAS tokens write permission

* Case class wrapper for subscription id

* Resolve duplicate container name in absolute BlobPath

* Ignored test demonstrating correct absolute path generation

* Update filesystems/blob/src/test/scala/cromwell/filesystems/blob/BlobPathBuilderSpec.scala

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* PR feedback

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* [WX-765] Update snakeyaml to 1.33 (broadinstitute#6927)

* update snakeyaml to 1.33

* Don't use deprecated no-arg Constructor constructor

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WM-1414 Refactoring WesRunLog to omit Cromwell's "workflowLog" object (broadinstitute#6925)

* Upgrade Postgres to 42.4.1 (broadinstitute#6932)

* WX-735 Fix incorrect and/or nondeterministic filesystem ordering (broadinstitute#6930)

* WX-772 Update Scala to 2.13.9 (broadinstitute#6928)

* Update Scala to 2.13.9

* Try updating sbt-scoverage

* Does this version exist anywhere we can see?

* This version actually exists

* Update library version to remove conflict

* Codegen version

* Fix fun new 2.13.9 compiler errors

* Resolve warnings

* Newest Scala?

* I guess not

* Does this please Travis?

* force ci

* Back out changes to generated code

Co-authored-by: Adam Nichols <aednichols@gmail.com>

* WX-781 Bump jackson-databind in /CromwellRefdiskManifestCreator (broadinstitute#6935)

Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.2.2 to 2.13.4.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* WX-808 Host allowlist for HTTP imports (broadinstitute#6938)

* `hostAllowlist` that allows everything

* Refactor

* Stick allow list in HttpResolver

* Better default config

* Allow list tests

* Make it build

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Update commons text to 1.10.0 (broadinstitute#6937)

* WX-751 Token refresh signal for monitoring (broadinstitute#6939)

* Log messages

* `DEBUG` -> `INFO`

* WX-744 Optionally rewrite blob paths to appear as local paths (broadinstitute#6941)

* Modify blob paths for TES

* Make blob transformation configurable

* Update supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesTask.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Apply PR feedback in second place

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Update changelog for wdl http allow list (broadinstitute#6944)

* WM-1491 Fixing Cromwell-client (broadinstitute#6943)

* More updated client for use in cbas

* Removing excess code

* Fix client build script (broadinstitute#6945)

* WX-837: Remove CWL references from documentation (broadinstitute#6949)

* wx-837 removed cwl references in markdown doc files

* wx-837 removed cwlParsingOverview.md, updated mkdocs.yml

* wx-837 updated cromwell.yaml, generated new RESTAPI file

* WX-728 Add configurable WSM client to Cromwell (broadinstitute#6948)

* Dependencies

* Compiles but no tests

* Formatting

* Moar exclusions

* Update to latest WSM

* Add additional dependency

* We need some UUID here to make the request

* Formatting

* Clarify what is fake

* Formatting

* Use our own version of Jersey and Jackson stuff

* Port-in Khalid's changes (thank you!)

Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* Test longevity

Don't break the test if someone decides to add a cert to `ws.org`

* Cleanup

* Cleanup

* Cleanup

* Adjust TES config file for CI

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* CROM-6554: Removed PAPIv1 references from doc (broadinstitute#6950)

* crom-6554 removed references to PAPI v1 from doc

* crom-6554 pr feedback, reworded doc to use example conf as a starting point

* WX-833 Real Azure DRS Credentials (broadinstitute#6952)

* Remove B2C reference from name

* Get token for current user rather than getting from KeyVault

* Remove KeyVault config for engine

* Remove KeyVault config for DRSLocalizer

* Remove KeyVault dependency

* Remove KeyVault support from localizer repo template

* Cleaned up and working Azure token acquisition for engine

* Collapse localizer's AccessTokenStrategy into DrsCredentials

* Cleanup

* WX-853 Remove most CWL (broadinstitute#6955)

* WX-696 Enable getting SAS token from WSM (broadinstitute#6954)

* WX-696 Enable getting SAS token from WSM

* Wire container resource id from config

* Move resource-container-id config path

* First pass at config for WSM

* Remove unused singleton config

* Tests for new config

* Fix config parsing

* Modified b2c token to be provided each time

* Remove singletonConfig arg from factory

* Restore types to factory configs

* Clean up comments and empty token default

* Default to config b2c before searching environment

* Fix token default on api client

* Fix test

* Refactor error handling for when there is no token

* Remove token constructor arg for clientProvider

* Move configs to global singleton config

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

* default -> override

* Add override token to test

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Parentheses

* Reduce token timeout

* Move AzureCredentials to separate file

* Make AzureCredentials an object

* WSM token cleanup

* Config refactor (broadinstitute#6960)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Initial blob token documentation

* Refine language in BlobSasTokenGenerator

* Update comment and formatting

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* WX-853 Remove CWL language factory, Centaur runner (broadinstitute#6961)

* WX-842 Add Pact Dependency for Cromwell (broadinstitute#6962)

* WX-842 Add Pact Dependency for Cromwell

* Remove incomplete test spec

* Initial Pact Test

* Fix pact so it compiles

* Add breadcrumb comment and clean up

* ID-125 Add support for drshub, rename all the things (broadinstitute#6959)

* Add support for drshub, rename all the things

* fallback to martha if resolver is not in config

* WX-867 Translate crc32c hashes to b64 for getm (broadinstitute#6970)

* Translate crc32c hashes to b64 for getm

* Update tests

* Remove obsolete b64 handling for md5, centralize hex validation

* Restore old test, fix other test

* WX-843 Workflow failure reason should accurately indicate issues opening blob filesystem (broadinstitute#6965)

* WX-859 Accept workflow execution identity in config (broadinstitute#6967)

* WX-892 Trim down `ValueStore` logging to prevent OOMs (broadinstitute#6981)

* Add Nirvana 3.18.1 reference image test, minor cleanup [VS-705] (broadinstitute#6975)

* WX-863 Turn off Azure NIO logging (broadinstitute#6982)

* Turn off Azure NIO logging

* Poke Travis

* WM-1616: Allow repeating attempts at initialization (take 2) (broadinstitute#6985)

* WX-878 Single shared BlobFileSystemManager (broadinstitute#6986)

* Make BlobFileSystemManager shared across all BlobPathBuilders

* Update TES conf file to reflect new singleton config

* Shell escape reference image  files [VS-796] [WX-910] (broadinstitute#6989)

* WX-769 `disks` compatibility for TES backend (broadinstitute#6991)

* Update FiveMinuteIntro.md (broadinstitute#6994)

* WX-906 Sbt Unit Tests as Github Actions (broadinstitute#6992)

* WX-926 Support falling back to OCI Manifest Format (broadinstitute#7003)

* WX-926 Support falling back to OCI Manifest Forma

* Only mount reference disks if requested [WX-925] (broadinstitute#7001)

* [WM-1646] Add missing fields for `WorkflowDescription` for WomTool /describe endpoint to Swagger (broadinstitute#7004)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status (broadinstitute#6980)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status

* Address feedback

* Address feedback (broadinstitute#6997)

* Address additional feedback (broadinstitute#7000)

* Fix copy/paste error (broadinstitute#7005)

* Address additional feedback

* Fix copy/paste error

* Trigger CI

---------

Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Centaur reference image test should validate symlinks [VS-796] (broadinstitute#6996)

* WX-903 Pre-GHA test suite disablement

* WX-877 Update CHANGELOG for release 85 (broadinstitute#7011)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>

* Develop aws (#29)

* stuck on globbing

* efs works, no callcaching

* update readme

* extended EFS support

* fix for globbing in nested scatters

* updated config for globbing, to prevent issues with empty folders

* efs fixes : support paths with over 127 characters, fix delocalization of efs-based globs (#32)

* Develop aws (#34)

* efs fixes : support paths with over 127 characters, fix delocalization of efs-based globs

* add deployment manual, fix issue with empty disks

* update documentation

* update documentation

* update documentation

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: geertvandeweyer <geertvandeweyer@gmail.com>
henriqueribeiro added a commit to henriqueribeiro/cromwell that referenced this pull request Jan 8, 2024
* 85 release (#28)

* Update cromwell version from 83 to 84

* BW-1255 Implement POST /runs endpoint (broadinstitute#6779)

* Adding route

* Fixing HTTP method error

* All formFields made optional

* A compliling state

* Saving

* Saving

* All three endpoints functioning as expected; updated RESTAPI.md

* Updated response for submission from 200 to 201 to pass tests

* Test submission response

* Moved updated submission response to askSubmit

* test

* updating RESTAPI.md

* saving

* Adding utility file for submitRequest

* cleanup

* Update awssdkv from 2.17.152 to 2.17.194 (broadinstitute#6814)

* BW-1305 Swagger Update (broadinstitute#6818)

* Properly documenting metadataArchiveStatus in WorkflowQueryResult model

* Update docs

* BT-710 Add configs for BlobPathBuilderFactory (broadinstitute#6817)

BT-710 Add configs for BlobPathBuilderFactory

* BW-1305 Make "name" optional in workflow query response (broadinstitute#6821)

* BT-724 Fix BlobPathBuilder failing on retrieving existing filesystem (broadinstitute#6816)

Modify blobPathBuilder to fallback to creating a filesystem if one is not found

* Logging updates: (broadinstitute#6813)

* [BT-698] first pass on BlobTokenGenerator with E2E test (broadinstitute#6824)

* first pass on BlobTokenGenerator with E2E test

* update BlobPathBuilder constructor args in test

* account -> container level client

* [BT-687] specify correct types (broadinstitute#6829)

* specify correct types

* fix test with new type

* remove type declarations in function call

* remove unnecessary sas-token config

* BW-1206 - Combine all Wes Endpoints & add Tests (broadinstitute#6833)

* Add tests, getting frid of WesRunRoutes.scala

* wesWorkflowId fix, ec implicits errors gone

* Refactoring path for GET /runs

* Indentation fix

* Commit to rollback

* Revert "Indentation fix"

This reverts commit 63fc484.

* PR trigger

* Optimize imports

* Missed import

* BW-1354 - Porting CBAS preliminary step (broadinstitute#6837)

* Getting rid of shared utility file; Adding/Updating WES version of submit.

* Edit spec file

* Adding Wes-like error

* BW-1378 Addl CromIAM user enablement checks (broadinstitute#6826)

* Update cromwell version from 84 to 85

* BW-1393 Release doc updates (broadinstitute#6839)

* BT-732 Checksum validation for blobs read by engine (broadinstitute#6838)

* Draft support for optional FileHash

* Draft getMd5 for BlobPath

* Resolve non-parallel IO to fix tests

* Checksum validation for BlobPath

* Nicer error message

* Test for missing Blob hash

* Break attr acquisition into separate method

* Cleanup, comments

* In-progress tests of blob hash command

* Remove test

* Remove unused import

* BT-711 Refresh SAS token for filesystem on expiry (broadinstitute#6831)

* BT-711 Refresh SAS token for filesystem on expiry

* Rough cut of token refresh using exceptions

* Ignore tests, and minor cleanup

* Remove stray line

* Draft of manager class for handling expiring file systems

* Style fixes

* Refactor of blobfilesystemManager and tests covering its functionality

* Refined tests to validate close filesystem as separate unit

* Ignore connected tests

* Clean up of some things

* Refactor BlobFileSystemManager to separate file, and some other cleanup

* Some additional scala-ifying

* Small cleanup

* Correcting imports

* trigger tests

* trigger tests

* Batch 1 of scala steward updates (broadinstitute#6903)

* Batch 1 of scala steward updates

* Rollback snakeYAML

* Attempt 3, with only the passing dependancies

* Revert google API and Big Query udpates

* Winding back other google deps

* rollback remaining google updates

* trigger tests

* trigger tests

* [BW-1398] Migrate PKs to BIGINT (broadinstitute#6907)

* BT-745  Batch 2 of scala steward updates (broadinstitute#6906)

* Update SBT to 2.0.0

* Fix sbt-git import

* Update mouse to 1.0.11

* Update rhino 1.7.14

* SUP-692 Retry with more memory after RC 137 (broadinstitute#6912)

* Reorder execution result checks so 137 can retry with more memory

* Test for memory retry after 137 RC

* Fix test expectations

* Make memory retry checks consistent

* Revert changes to existing test

* Rename retryWithMoreMemory to outOfMemoryDetected

* Scala steward updates batch 3 (broadinstitute#6913)

* Scala steward updates batch 3

* WX-745 Batch 4 scala steward updates (broadinstitute#6916)

* WX-746 Localize all DRS inputs in a single Action (broadinstitute#6914)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WX-755 Build all images instead of just Cromwell (broadinstitute#6919)

* WX-755 Add `isRelease` option for Docker builds (broadinstitute#6923)

* WX-755 Cromwell/CromIAM automatically board train (broadinstitute#6924)

* WX-755 Fix environment variable syntax (broadinstitute#6926)

* WX-743 Enable TES task creation with BlobPaths (broadinstitute#6921)

* Give blob SAS tokens write permission

* Case class wrapper for subscription id

* Resolve duplicate container name in absolute BlobPath

* Ignored test demonstrating correct absolute path generation

* Update filesystems/blob/src/test/scala/cromwell/filesystems/blob/BlobPathBuilderSpec.scala

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* PR feedback

Co-authored-by: Brian Reilly <breilly@broadinstitute.org>

* [WX-765] Update snakeyaml to 1.33 (broadinstitute#6927)

* update snakeyaml to 1.33

* Don't use deprecated no-arg Constructor constructor

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* WM-1414 Refactoring WesRunLog to omit Cromwell's "workflowLog" object (broadinstitute#6925)

* Upgrade Postgres to 42.4.1 (broadinstitute#6932)

* WX-735 Fix incorrect and/or nondeterministic filesystem ordering (broadinstitute#6930)

* WX-772 Update Scala to 2.13.9 (broadinstitute#6928)

* Update Scala to 2.13.9

* Try updating sbt-scoverage

* Does this version exist anywhere we can see?

* This version actually exists

* Update library version to remove conflict

* Codegen version

* Fix fun new 2.13.9 compiler errors

* Resolve warnings

* Newest Scala?

* I guess not

* Does this please Travis?

* force ci

* Back out changes to generated code

Co-authored-by: Adam Nichols <aednichols@gmail.com>

* WX-781 Bump jackson-databind in /CromwellRefdiskManifestCreator (broadinstitute#6935)

Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.2.2 to 2.13.4.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* WX-808 Host allowlist for HTTP imports (broadinstitute#6938)

* `hostAllowlist` that allows everything

* Refactor

* Stick allow list in HttpResolver

* Better default config

* Allow list tests

* Make it build

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Update commons text to 1.10.0 (broadinstitute#6937)

* WX-751 Token refresh signal for monitoring (broadinstitute#6939)

* Log messages

* `DEBUG` -> `INFO`

* WX-744 Optionally rewrite blob paths to appear as local paths (broadinstitute#6941)

* Modify blob paths for TES

* Make blob transformation configurable

* Update supportedBackends/tes/src/main/scala/cromwell/backend/impl/tes/TesTask.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Apply PR feedback in second place

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Update changelog for wdl http allow list (broadinstitute#6944)

* WM-1491 Fixing Cromwell-client (broadinstitute#6943)

* More updated client for use in cbas

* Removing excess code

* Fix client build script (broadinstitute#6945)

* WX-837: Remove CWL references from documentation (broadinstitute#6949)

* wx-837 removed cwl references in markdown doc files

* wx-837 removed cwlParsingOverview.md, updated mkdocs.yml

* wx-837 updated cromwell.yaml, generated new RESTAPI file

* WX-728 Add configurable WSM client to Cromwell (broadinstitute#6948)

* Dependencies

* Compiles but no tests

* Formatting

* Moar exclusions

* Update to latest WSM

* Add additional dependency

* We need some UUID here to make the request

* Formatting

* Clarify what is fake

* Formatting

* Use our own version of Jersey and Jackson stuff

* Port-in Khalid's changes (thank you!)

Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* Test longevity

Don't break the test if someone decides to add a cert to `ws.org`

* Cleanup

* Cleanup

* Cleanup

* Adjust TES config file for CI

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Khalid Shakir <kshakir@broadinstitute.org>

* CROM-6554: Removed PAPIv1 references from doc (broadinstitute#6950)

* crom-6554 removed references to PAPI v1 from doc

* crom-6554 pr feedback, reworded doc to use example conf as a starting point

* WX-833 Real Azure DRS Credentials (broadinstitute#6952)

* Remove B2C reference from name

* Get token for current user rather than getting from KeyVault

* Remove KeyVault config for engine

* Remove KeyVault config for DRSLocalizer

* Remove KeyVault dependency

* Remove KeyVault support from localizer repo template

* Cleaned up and working Azure token acquisition for engine

* Collapse localizer's AccessTokenStrategy into DrsCredentials

* Cleanup

* WX-853 Remove most CWL (broadinstitute#6955)

* WX-696 Enable getting SAS token from WSM (broadinstitute#6954)

* WX-696 Enable getting SAS token from WSM

* Wire container resource id from config

* Move resource-container-id config path

* First pass at config for WSM

* Remove unused singleton config

* Tests for new config

* Fix config parsing

* Modified b2c token to be provided each time

* Remove singletonConfig arg from factory

* Restore types to factory configs

* Clean up comments and empty token default

* Default to config b2c before searching environment

* Fix token default on api client

* Fix test

* Refactor error handling for when there is no token

* Remove token constructor arg for clientProvider

* Move configs to global singleton config

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

* default -> override

* Add override token to test

* Update filesystems/blob/src/main/scala/cromwell/filesystems/blob/BlobFileSystemManager.scala

Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* Parentheses

* Reduce token timeout

* Move AzureCredentials to separate file

* Make AzureCredentials an object

* WSM token cleanup

* Config refactor (broadinstitute#6960)

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Initial blob token documentation

* Refine language in BlobSasTokenGenerator

* Update comment and formatting

Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>

* WX-853 Remove CWL language factory, Centaur runner (broadinstitute#6961)

* WX-842 Add Pact Dependency for Cromwell (broadinstitute#6962)

* WX-842 Add Pact Dependency for Cromwell

* Remove incomplete test spec

* Initial Pact Test

* Fix pact so it compiles

* Add breadcrumb comment and clean up

* ID-125 Add support for drshub, rename all the things (broadinstitute#6959)

* Add support for drshub, rename all the things

* fallback to martha if resolver is not in config

* WX-867 Translate crc32c hashes to b64 for getm (broadinstitute#6970)

* Translate crc32c hashes to b64 for getm

* Update tests

* Remove obsolete b64 handling for md5, centralize hex validation

* Restore old test, fix other test

* WX-843 Workflow failure reason should accurately indicate issues opening blob filesystem (broadinstitute#6965)

* WX-859 Accept workflow execution identity in config (broadinstitute#6967)

* WX-892 Trim down `ValueStore` logging to prevent OOMs (broadinstitute#6981)

* Add Nirvana 3.18.1 reference image test, minor cleanup [VS-705] (broadinstitute#6975)

* WX-863 Turn off Azure NIO logging (broadinstitute#6982)

* Turn off Azure NIO logging

* Poke Travis

* WM-1616: Allow repeating attempts at initialization (take 2) (broadinstitute#6985)

* WX-878 Single shared BlobFileSystemManager (broadinstitute#6986)

* Make BlobFileSystemManager shared across all BlobPathBuilders

* Update TES conf file to reflect new singleton config

* Shell escape reference image  files [VS-796] [WX-910] (broadinstitute#6989)

* WX-769 `disks` compatibility for TES backend (broadinstitute#6991)

* Update FiveMinuteIntro.md (broadinstitute#6994)

* WX-906 Sbt Unit Tests as Github Actions (broadinstitute#6992)

* WX-926 Support falling back to OCI Manifest Format (broadinstitute#7003)

* WX-926 Support falling back to OCI Manifest Forma

* Only mount reference disks if requested [WX-925] (broadinstitute#7001)

* [WM-1646] Add missing fields for `WorkflowDescription` for WomTool /describe endpoint to Swagger (broadinstitute#7004)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status (broadinstitute#6980)

* WX-876 Surface TES System Logs to Cromwell when TES backend returns task error status

* Address feedback

* Address feedback (broadinstitute#6997)

* Address additional feedback (broadinstitute#7000)

* Fix copy/paste error (broadinstitute#7005)

* Address additional feedback

* Fix copy/paste error

* Trigger CI

---------

Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>

* Centaur reference image test should validate symlinks [VS-796] (broadinstitute#6996)

* WX-903 Pre-GHA test suite disablement

* WX-877 Update CHANGELOG for release 85 (broadinstitute#7011)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>

* Develop aws (#29)

* stuck on globbing

* efs works, no callcaching

* update readme

* extended EFS support

* fix for globbing in nested scatters

* updated config for globbing, to prevent issues with empty folders

* efs fixes : support paths with over 127 characters, fix delocalization of efs-based globs (#32)

* Develop aws (#34)

* efs fixes : support paths with over 127 characters, fix delocalization of efs-based globs

* add deployment manual, fix issue with empty disks

* update documentation

* update documentation

* update documentation

* Options to publish status only (#36)

* add options to publish status only

* updated readme.md

---------

Co-authored-by: quekx <quekx@gene.com>

* Fix aws unit tests (#39)

* checkpoint

* fix ecr and batch tests

* fix AwsBatchJobSpec.scala

---------

Co-authored-by: quekx <quekx@gene.com>

* return bucket directly instead of listing and checking it (#38)

Co-authored-by: quekx <quekx@gene.com>

* Add evaluteOnExit for aws batch retry (#40)

Co-authored-by: quekx <quekx@gene.com>

* Improved tagging support (#37)

* efs fixes : support paths with over 127 characters, fix delocalization of efs-based globs

* add deployment manual, fix issue with empty disks

* update documentation

* update documentation

* update documentation

* support for tagging instances and volumes used in jobs, some support for spaces in file paths

* corrected workflow id in tagging

* redirect exit code 137 to retry-with-more-memory routine

---------

Co-authored-by: Henrique Ribeiro <henriqueribeiro@users.noreply.github.com>

* add gpu count (#41)

* add gpu count

* fix typo

---------

Co-authored-by: quekx <quekx@gene.com>
Co-authored-by: Henrique Ribeiro <henriqueribeiro@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Janet Gainer-Dewar <jdewar@broadinstitute.org>
Co-authored-by: Katrina P <68349264+kpierre13@users.noreply.github.com>
Co-authored-by: Chris Llanwarne <cjllanwarne@users.noreply.github.com>
Co-authored-by: Christian Freitas <christian.j.freitas@gmail.com>
Co-authored-by: Saloni Shah <salonipshah11@gmail.com>
Co-authored-by: kshakir <kshakir@broadinstitute.org>
Co-authored-by: mspector <michael.l.spector@gmail.com>
Co-authored-by: Adam Nichols <anichols@broadinstitute.org>
Co-authored-by: Brian Reilly <breilly@broadinstitute.org>
Co-authored-by: Adam Nichols <aednichols@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Justin Variath Thomas <JVThomas@users.noreply.github.com>
Co-authored-by: Christian Freitas <cfreitas@broadinstitute.org>
Co-authored-by: Trevyn Langsford <tlangs@broadinstitute.org>
Co-authored-by: Miguel Covarrubias <mcovarr@users.noreply.github.com>
Co-authored-by: ekiernan <55763654+ekiernan@users.noreply.github.com>
Co-authored-by: Tom Wiseman <tom.h.wiseman@gmail.com>
Co-authored-by: Blair Murri <BMurri@users.noreply.github.com>
Co-authored-by: geertvandeweyer <geertvandeweyer@gmail.com>
Co-authored-by: xquek <46759870+xquek@users.noreply.github.com>
Co-authored-by: quekx <quekx@gene.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants