mirror of
https://github.com/corda/corda.git
synced 2025-02-06 11:09:18 +00:00
CORDA-1938 Adding version info to the node info submission request (#3854)
This commit is contained in:
parent
dbc1088417
commit
f22d9ad411
@ -259,7 +259,7 @@ The protocol is:
|
|||||||
|
|
||||||
* If $URL = ``https://some.server.com/some/path``
|
* If $URL = ``https://some.server.com/some/path``
|
||||||
* Node submits a PKCS#10 certificate signing request using HTTP POST to ``$URL/certificate``. It will have a MIME
|
* Node submits a PKCS#10 certificate signing request using HTTP POST to ``$URL/certificate``. It will have a MIME
|
||||||
type of ``application/octet-stream``. The ``Client-Version`` header is set to be "1.0".
|
type of ``application/octet-stream``. The ``Platform-Version`` header is set to be "1.0" and the ``Client-Version`` header to reflect the node software version.
|
||||||
* The server returns an opaque string that references this request (let's call it ``$requestid``, or an HTTP error if something went wrong.
|
* The server returns an opaque string that references this request (let's call it ``$requestid``, or an HTTP error if something went wrong.
|
||||||
* The returned request ID should be persisted to disk, to handle zones where approval may take a long time due to manual
|
* The returned request ID should be persisted to disk, to handle zones where approval may take a long time due to manual
|
||||||
intervention being required.
|
intervention being required.
|
||||||
|
@ -146,7 +146,7 @@ abstract class AbstractNode<S>(val configuration: NodeConfiguration,
|
|||||||
val checkpointStorage = DBCheckpointStorage()
|
val checkpointStorage = DBCheckpointStorage()
|
||||||
@Suppress("LeakingThis")
|
@Suppress("LeakingThis")
|
||||||
val transactionStorage = makeTransactionStorage(configuration.transactionCacheSizeBytes).tokenize()
|
val transactionStorage = makeTransactionStorage(configuration.transactionCacheSizeBytes).tokenize()
|
||||||
val networkMapClient: NetworkMapClient? = configuration.networkServices?.let { NetworkMapClient(it.networkMapURL) }
|
val networkMapClient: NetworkMapClient? = configuration.networkServices?.let { NetworkMapClient(it.networkMapURL, versionInfo) }
|
||||||
private val metricRegistry = MetricRegistry()
|
private val metricRegistry = MetricRegistry()
|
||||||
val attachments = NodeAttachmentService(metricRegistry, database, configuration.attachmentContentCacheSizeBytes, configuration.attachmentCacheBound).tokenize()
|
val attachments = NodeAttachmentService(metricRegistry, database, configuration.attachmentContentCacheSizeBytes, configuration.attachmentCacheBound).tokenize()
|
||||||
val cordappProvider = CordappProviderImpl(cordappLoader, CordappConfigFileProvider(), attachments).tokenize()
|
val cordappProvider = CordappProviderImpl(cordappLoader, CordappConfigFileProvider(), attachments).tokenize()
|
||||||
|
@ -11,6 +11,7 @@ import net.corda.core.serialization.serialize
|
|||||||
import net.corda.core.utilities.contextLogger
|
import net.corda.core.utilities.contextLogger
|
||||||
import net.corda.core.utilities.seconds
|
import net.corda.core.utilities.seconds
|
||||||
import net.corda.core.utilities.trace
|
import net.corda.core.utilities.trace
|
||||||
|
import net.corda.node.VersionInfo
|
||||||
import net.corda.node.utilities.registration.cacheControl
|
import net.corda.node.utilities.registration.cacheControl
|
||||||
import net.corda.nodeapi.internal.SignedNodeInfo
|
import net.corda.nodeapi.internal.SignedNodeInfo
|
||||||
import net.corda.nodeapi.internal.network.NetworkMap
|
import net.corda.nodeapi.internal.network.NetworkMap
|
||||||
@ -23,7 +24,7 @@ import java.security.cert.X509Certificate
|
|||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class NetworkMapClient(compatibilityZoneURL: URL) {
|
class NetworkMapClient(compatibilityZoneURL: URL, private val versionInfo: VersionInfo) {
|
||||||
companion object {
|
companion object {
|
||||||
private val logger = contextLogger()
|
private val logger = contextLogger()
|
||||||
}
|
}
|
||||||
@ -45,7 +46,9 @@ class NetworkMapClient(compatibilityZoneURL: URL) {
|
|||||||
fun ackNetworkParametersUpdate(signedParametersHash: SignedData<SecureHash>) {
|
fun ackNetworkParametersUpdate(signedParametersHash: SignedData<SecureHash>) {
|
||||||
val ackURL = URL("$networkMapUrl/ack-parameters")
|
val ackURL = URL("$networkMapUrl/ack-parameters")
|
||||||
logger.trace { "Sending network parameters with hash ${signedParametersHash.raw.deserialize()} approval to $ackURL." }
|
logger.trace { "Sending network parameters with hash ${signedParametersHash.raw.deserialize()} approval to $ackURL." }
|
||||||
ackURL.post(signedParametersHash.serialize())
|
ackURL.post(signedParametersHash.serialize(),
|
||||||
|
"Platform-Version" to "${versionInfo.platformVersion}",
|
||||||
|
"Client-Version" to versionInfo.releaseVersion)
|
||||||
logger.trace { "Sent network parameters approval to $ackURL successfully." }
|
logger.trace { "Sent network parameters approval to $ackURL successfully." }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,9 @@ class HTTPNetworkRegistrationService(compatibilityZoneURL: URL, val versionInfo:
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun submitRequest(request: PKCS10CertificationRequest): String {
|
override fun submitRequest(request: PKCS10CertificationRequest): String {
|
||||||
return String(registrationURL.post(OpaqueBytes(request.encoded), "Client-Version" to "${versionInfo.platformVersion}"))
|
return String(registrationURL.post(OpaqueBytes(request.encoded),
|
||||||
|
"Platform-Version" to "${versionInfo.platformVersion}",
|
||||||
|
"Client-Version" to versionInfo.releaseVersion))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import net.corda.core.crypto.sha256
|
|||||||
import net.corda.core.internal.sign
|
import net.corda.core.internal.sign
|
||||||
import net.corda.core.serialization.serialize
|
import net.corda.core.serialization.serialize
|
||||||
import net.corda.core.utilities.seconds
|
import net.corda.core.utilities.seconds
|
||||||
|
import net.corda.node.VersionInfo
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
import net.corda.testing.core.ALICE_NAME
|
import net.corda.testing.core.ALICE_NAME
|
||||||
import net.corda.testing.core.BOB_NAME
|
import net.corda.testing.core.BOB_NAME
|
||||||
@ -40,7 +41,8 @@ class NetworkMapClientTest {
|
|||||||
fun setUp() {
|
fun setUp() {
|
||||||
server = NetworkMapServer(cacheTimeout)
|
server = NetworkMapServer(cacheTimeout)
|
||||||
val address = server.start()
|
val address = server.start()
|
||||||
networkMapClient = NetworkMapClient(URL("http://$address")).apply { start(DEV_ROOT_CA.certificate) }
|
networkMapClient = NetworkMapClient(URL("http://$address"),
|
||||||
|
VersionInfo(1, "TEST", "TEST", "TEST")).apply { start(DEV_ROOT_CA.certificate) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
@ -13,6 +13,7 @@ import net.corda.core.messaging.ParametersUpdateInfo
|
|||||||
import net.corda.core.node.NodeInfo
|
import net.corda.core.node.NodeInfo
|
||||||
import net.corda.core.serialization.serialize
|
import net.corda.core.serialization.serialize
|
||||||
import net.corda.core.utilities.millis
|
import net.corda.core.utilities.millis
|
||||||
|
import net.corda.node.VersionInfo
|
||||||
import net.corda.node.services.api.NetworkMapCacheInternal
|
import net.corda.node.services.api.NetworkMapCacheInternal
|
||||||
import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY
|
import net.corda.nodeapi.internal.NODE_INFO_DIRECTORY
|
||||||
import net.corda.nodeapi.internal.NodeInfoAndSigned
|
import net.corda.nodeapi.internal.NodeInfoAndSigned
|
||||||
@ -63,7 +64,8 @@ class NetworkMapUpdaterTest {
|
|||||||
fun setUp() {
|
fun setUp() {
|
||||||
server = NetworkMapServer(cacheExpiryMs.millis)
|
server = NetworkMapServer(cacheExpiryMs.millis)
|
||||||
val address = server.start()
|
val address = server.start()
|
||||||
networkMapClient = NetworkMapClient(URL("http://$address")).apply { start(DEV_ROOT_CA.certificate) }
|
networkMapClient = NetworkMapClient(URL("http://$address"),
|
||||||
|
VersionInfo(1, "TEST", "TEST", "TEST")).apply { start(DEV_ROOT_CA.certificate) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
@ -9,6 +9,7 @@ import net.corda.core.internal.readObject
|
|||||||
import net.corda.core.serialization.deserialize
|
import net.corda.core.serialization.deserialize
|
||||||
import net.corda.core.utilities.days
|
import net.corda.core.utilities.days
|
||||||
import net.corda.core.utilities.seconds
|
import net.corda.core.utilities.seconds
|
||||||
|
import net.corda.node.VersionInfo
|
||||||
import net.corda.node.internal.NetworkParametersReader
|
import net.corda.node.internal.NetworkParametersReader
|
||||||
import net.corda.nodeapi.internal.network.*
|
import net.corda.nodeapi.internal.network.*
|
||||||
import net.corda.testing.common.internal.testNetworkParameters
|
import net.corda.testing.common.internal.testNetworkParameters
|
||||||
@ -41,7 +42,7 @@ class NetworkParametersReaderTest {
|
|||||||
fun setUp() {
|
fun setUp() {
|
||||||
server = NetworkMapServer(cacheTimeout)
|
server = NetworkMapServer(cacheTimeout)
|
||||||
val address = server.start()
|
val address = server.start()
|
||||||
networkMapClient = NetworkMapClient(URL("http://$address"))
|
networkMapClient = NetworkMapClient(URL("http://$address"), VersionInfo(1, "TEST", "TEST", "TEST"))
|
||||||
networkMapClient.start(DEV_ROOT_CA.certificate)
|
networkMapClient.start(DEV_ROOT_CA.certificate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user