mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
Ledger id requirement (#6323)
* Add option based constructor for LedgerIdRequirement changelog_begin changelog_end * Make option based consructor the default, deprecate old constructor * Update with review comments
This commit is contained in:
parent
3351dd8963
commit
5329a4f97f
@ -141,7 +141,7 @@ object ReplServiceMain extends App {
|
||||
val applicationId = ApplicationId("daml repl")
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = applicationId.unwrap,
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = config.tlsConfig.flatMap(_.client),
|
||||
token = config.accessTokenFile.map(new TokenHolder(_)).flatMap(_.token),
|
||||
|
@ -110,7 +110,7 @@ object RunnerMain {
|
||||
val tokenHolder = config.accessTokenFile.map(new TokenHolder(_))
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = config.tlsConfig.flatMap(_.client),
|
||||
token = tokenHolder.flatMap(_.token),
|
||||
|
@ -52,7 +52,7 @@ object TestMain extends StrictLogging {
|
||||
val applicationId = ApplicationId("Script Test")
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None
|
||||
)
|
||||
|
@ -76,7 +76,7 @@ class TestRunner(
|
||||
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = applicationId.unwrap,
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = rootCa.flatMap(file =>
|
||||
TlsConfiguration.Empty.copy(trustCertCollectionFile = Some(file)).client),
|
||||
|
@ -256,7 +256,7 @@ class Extractor[T](config: ExtractorConfig, target: T)(
|
||||
.maxInboundMessageSize(config.ledgerInboundMessageSizeMax),
|
||||
LedgerClientConfiguration(
|
||||
config.appId,
|
||||
LedgerIdRequirement(ledgerId = "", enabled = false),
|
||||
LedgerIdRequirement.none,
|
||||
CommandClientConfiguration(1, 1, java.time.Duration.ofSeconds(20L)),
|
||||
sslContext = config.tlsConfig.client,
|
||||
tokenHolder.flatMap(_.token)
|
||||
|
@ -34,8 +34,7 @@ case class LedgerClientConfig(
|
||||
ssl.map(_.sslContext)
|
||||
)
|
||||
|
||||
private val ledgerIdRequirement = ledgerId.fold(LedgerIdRequirement("", enabled = false))(lid =>
|
||||
LedgerIdRequirement(lid, enabled = true))
|
||||
private val ledgerIdRequirement = LedgerIdRequirement(ledgerId)
|
||||
}
|
||||
|
||||
object LedgerClientConfig {
|
||||
|
@ -86,7 +86,7 @@ class ScalaCodeGenIT
|
||||
|
||||
private val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = applicationId,
|
||||
ledgerIdRequirement = LedgerIdRequirement(ledgerId, enabled = true),
|
||||
ledgerIdRequirement = LedgerIdRequirement.matching(ledgerId),
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None
|
||||
)
|
||||
|
@ -57,7 +57,7 @@ object IouMain extends App with StrictLogging {
|
||||
|
||||
private val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None
|
||||
)
|
||||
|
@ -63,7 +63,7 @@ object IouMain extends App with StrictLogging {
|
||||
// <doc-ref:ledger-client-configuration>
|
||||
private val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None,
|
||||
token = None
|
||||
|
@ -183,7 +183,7 @@ object HttpServiceTestFixture {
|
||||
useTls: UseTls = UseTls.NoTls): LedgerClientConfiguration =
|
||||
LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = if (useTls) clientTlsConfig.client else None,
|
||||
token = token
|
||||
|
@ -100,7 +100,7 @@ object HttpService extends StrictLogging {
|
||||
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = tlsConfig.client,
|
||||
token = tokenHolder.flatMap(_.token),
|
||||
|
@ -24,7 +24,7 @@ final class LedgerClientIT
|
||||
"shut down the channel when closed" in {
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = classOf[LedgerClientIT].getSimpleName,
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None,
|
||||
token = None,
|
||||
|
@ -4,11 +4,20 @@
|
||||
package com.daml.ledger.client.configuration
|
||||
|
||||
/**
|
||||
* @param ledgerId The ID of the target ledger.
|
||||
* @param enabled If true, the client will only communicate with ledgers that have the expected LedgerId.
|
||||
* Note that this setting only affects the binding process, when the ledger ID on the server is checked.
|
||||
* @param ledgerId The ID of the target ledger. If defined, the client will only communicate with ledgers that have the
|
||||
* expected LedgerId. Note that this setting only affects the binding process, when the ledger ID
|
||||
* on the server is checked.
|
||||
*/
|
||||
final case class LedgerIdRequirement(ledgerId: String, enabled: Boolean) {
|
||||
|
||||
def isAccepted(checkedLedgerId: String): Boolean = !enabled || checkedLedgerId == ledgerId
|
||||
final case class LedgerIdRequirement(ledgerId: Option[String]) {
|
||||
def isAccepted(checkedLedgerId: String): Boolean = ledgerId.fold(true)(checkedLedgerId.equals)
|
||||
}
|
||||
|
||||
object LedgerIdRequirement {
|
||||
|
||||
val none: LedgerIdRequirement = LedgerIdRequirement(None)
|
||||
def matching(ledgerId: String): LedgerIdRequirement = LedgerIdRequirement(Some(ledgerId))
|
||||
|
||||
@deprecated("Use option based constructor", "1.3.0")
|
||||
def apply(ledgerId: String, enabled: Boolean): LedgerIdRequirement =
|
||||
LedgerIdRequirement(if (enabled) Some(ledgerId) else None)
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
// Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package com.daml.ledger.client.configuration
|
||||
|
||||
import org.scalatest.{Matchers, WordSpec}
|
||||
|
||||
class LedgerIdRequirementTest extends WordSpec with Matchers {
|
||||
|
||||
"LedgerIdRequirement" should {
|
||||
|
||||
"allow accept matching ledger" in {
|
||||
val expected = "ledger-a"
|
||||
LedgerIdRequirement.matching(expected).isAccepted(expected) shouldBe true
|
||||
}
|
||||
|
||||
"allow not accept non-matching ledger" in {
|
||||
LedgerIdRequirement.matching("ledger-b").isAccepted("not-b") shouldBe false
|
||||
}
|
||||
|
||||
"empty constructor should allow any ledger" in {
|
||||
LedgerIdRequirement.none.isAccepted("any-ledger") shouldBe true
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -37,7 +37,7 @@ class TlsIT extends AsyncWordSpec with SandboxFixture with SuiteResourceManageme
|
||||
|
||||
private lazy val tlsEnabledConfig = LedgerClientConfiguration(
|
||||
"appId",
|
||||
LedgerIdRequirement("", enabled = false),
|
||||
LedgerIdRequirement.none,
|
||||
CommandClientConfiguration.default,
|
||||
TlsConfiguration(
|
||||
enabled = true,
|
||||
|
@ -281,7 +281,7 @@ class PlatformStore(
|
||||
|
||||
val configuration = LedgerClientConfiguration(
|
||||
applicationId,
|
||||
LedgerIdRequirement("_", enabled = false),
|
||||
LedgerIdRequirement.none,
|
||||
CommandClientConfiguration(
|
||||
maxCommandsInFlight,
|
||||
maxParallelSubmissions,
|
||||
|
@ -79,7 +79,7 @@ object RunnerMain {
|
||||
val applicationId = ApplicationId("Trigger Runner")
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient =
|
||||
CommandClientConfiguration.default.copy(defaultDeduplicationTime = config.commandTtl),
|
||||
sslContext = config.tlsConfig.flatMap(_.client),
|
||||
|
@ -71,7 +71,7 @@ object TriggerRunnerImpl {
|
||||
val appId = ApplicationId(name)
|
||||
val clientConfig = LedgerClientConfiguration(
|
||||
applicationId = appId.unwrap,
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default.copy(
|
||||
defaultDeduplicationTime = config.ledgerConfig.commandTtl),
|
||||
sslContext = None,
|
||||
|
@ -171,7 +171,7 @@ object TriggerServiceFixture {
|
||||
token: Option[String] = None): LedgerClientConfiguration =
|
||||
LedgerClientConfiguration(
|
||||
applicationId = ApplicationId.unwrap(applicationId),
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None,
|
||||
token = token
|
||||
|
@ -41,7 +41,7 @@ trait AbstractTriggerTest extends SandboxFixture with TestCommands {
|
||||
protected def ledgerClientConfiguration =
|
||||
LedgerClientConfiguration(
|
||||
applicationId = MockMessages.applicationId,
|
||||
ledgerIdRequirement = LedgerIdRequirement("", enabled = false),
|
||||
ledgerIdRequirement = LedgerIdRequirement.none,
|
||||
commandClient = CommandClientConfiguration.default,
|
||||
sslContext = None,
|
||||
token = None
|
||||
|
Loading…
Reference in New Issue
Block a user