mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
af04851637
Peer replication is intended to be between separate Consul installs and effectively should be considered "external". This PR moves the peer stream replication bidirectional RPC endpoint to the external gRPC server and ensures that things continue to function.
69 lines
2.5 KiB
Go
69 lines
2.5 KiB
Go
package peering
|
|
|
|
import (
|
|
"github.com/hashicorp/consul/agent/structs"
|
|
"github.com/hashicorp/consul/proto/pbpeering"
|
|
)
|
|
|
|
// same certificate that appears in our connect tests
|
|
var validCA = `
|
|
-----BEGIN CERTIFICATE-----
|
|
MIICmDCCAj6gAwIBAgIBBzAKBggqhkjOPQQDAjAWMRQwEgYDVQQDEwtDb25zdWwg
|
|
Q0EgNzAeFw0xODA1MjExNjMzMjhaFw0yODA1MTgxNjMzMjhaMBYxFDASBgNVBAMT
|
|
C0NvbnN1bCBDQSA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAER0qlxjnRcMEr
|
|
iSGlH7G7dYU7lzBEmLUSMZkyBbClmyV8+e8WANemjn+PLnCr40If9cmpr7RnC9Qk
|
|
GTaLnLiF16OCAXswggF3MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/
|
|
MGgGA1UdDgRhBF8xZjo5MTpjYTo0MTo4ZjphYzo2NzpiZjo1OTpjMjpmYTo0ZTo3
|
|
NTo1YzpkODpmMDo1NTpkZTpiZTo3NTpiODozMzozMTpkNToyNDpiMDowNDpiMzpl
|
|
ODo5Nzo1Yjo3ZTBqBgNVHSMEYzBhgF8xZjo5MTpjYTo0MTo4ZjphYzo2NzpiZjo1
|
|
OTpjMjpmYTo0ZTo3NTo1YzpkODpmMDo1NTpkZTpiZTo3NTpiODozMzozMTpkNToy
|
|
NDpiMDowNDpiMzplODo5Nzo1Yjo3ZTA/BgNVHREEODA2hjRzcGlmZmU6Ly8xMjRk
|
|
ZjVhMC05ODIwLTc2YzMtOWFhOS02ZjYyMTY0YmExYzIuY29uc3VsMD0GA1UdHgEB
|
|
/wQzMDGgLzAtgisxMjRkZjVhMC05ODIwLTc2YzMtOWFhOS02ZjYyMTY0YmExYzIu
|
|
Y29uc3VsMAoGCCqGSM49BAMCA0gAMEUCIQDzkkI7R+0U12a+zq2EQhP/n2mHmta+
|
|
fs2hBxWIELGwTAIgLdO7RRw+z9nnxCIA6kNl//mIQb+PGItespiHZKAz74Q=
|
|
-----END CERTIFICATE-----
|
|
`
|
|
var invalidCA = `
|
|
-----BEGIN CERTIFICATE-----
|
|
not valid
|
|
-----END CERTIFICATE-----
|
|
`
|
|
|
|
var validAddress = "1.2.3.4:80"
|
|
|
|
var validServerName = "server.consul"
|
|
|
|
var validPeerID = "peer1"
|
|
|
|
// TODO(peering): the test methods below are exposed to prevent duplication,
|
|
// these should be removed at same time tests in peering_test get refactored.
|
|
// XXX: we can't put the existing tests in service_test.go into the peering
|
|
// package because it causes an import cycle by importing the top-level consul
|
|
// package (which correctly imports the agent/rpc/peering package)
|
|
|
|
// TestPeering is a test utility for generating a pbpeering.Peering with valid
|
|
// data along with the peerName, state and index.
|
|
func TestPeering(peerName string, state pbpeering.PeeringState, meta map[string]string) *pbpeering.Peering {
|
|
return &pbpeering.Peering{
|
|
Name: peerName,
|
|
PeerCAPems: []string{validCA},
|
|
PeerServerAddresses: []string{validAddress},
|
|
PeerServerName: validServerName,
|
|
State: state,
|
|
PeerID: validPeerID,
|
|
Meta: meta,
|
|
}
|
|
}
|
|
|
|
// TestPeeringToken is a test utility for generating a valid peering token
|
|
// with the given peerID for use in test cases
|
|
func TestPeeringToken(peerID string) structs.PeeringToken {
|
|
return structs.PeeringToken{
|
|
CA: []string{validCA},
|
|
ServerAddresses: []string{validAddress},
|
|
ServerName: validServerName,
|
|
PeerID: peerID,
|
|
}
|
|
}
|