|
|
|
@ -13,7 +13,6 @@ import (
|
|
|
|
|
"github.com/hashicorp/consul/agent/connect" |
|
|
|
|
"github.com/hashicorp/consul/agent/consul/discoverychain" |
|
|
|
|
"github.com/hashicorp/consul/agent/structs" |
|
|
|
|
"github.com/hashicorp/consul/proto/private/pbcommon" |
|
|
|
|
"github.com/hashicorp/consul/proto/private/pbpeering" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
@ -100,60 +99,6 @@ func setupTestVariationConfigEntriesAndSnapshot(
|
|
|
|
|
Nodes: TestGatewayNodesDC2(t), |
|
|
|
|
}, |
|
|
|
|
}) |
|
|
|
|
case "order-by-locality-failover": |
|
|
|
|
cluster1UID := UpstreamID{ |
|
|
|
|
Name: "db", |
|
|
|
|
Peer: "cluster-01", |
|
|
|
|
EnterpriseMeta: acl.NewEnterpriseMetaWithPartition(dbUID.PartitionOrDefault(), ""), |
|
|
|
|
} |
|
|
|
|
cluster2UID := UpstreamID{ |
|
|
|
|
Name: "db", |
|
|
|
|
Peer: "cluster-02", |
|
|
|
|
EnterpriseMeta: acl.NewEnterpriseMetaWithPartition(dbUID.PartitionOrDefault(), ""), |
|
|
|
|
} |
|
|
|
|
chainID := makeChainID(structs.DiscoveryTargetOpts{Service: "db-v2"}) |
|
|
|
|
events = append(events, |
|
|
|
|
UpdateEvent{ |
|
|
|
|
CorrelationID: "upstream-target:" + chainID + ":" + dbUID.String(), |
|
|
|
|
Result: &structs.IndexedCheckServiceNodes{ |
|
|
|
|
Nodes: TestUpstreamNodesAlternate(t), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
UpdateEvent{ |
|
|
|
|
CorrelationID: "peer-trust-bundle:cluster-01", |
|
|
|
|
Result: &pbpeering.TrustBundleReadResponse{ |
|
|
|
|
Bundle: &pbpeering.PeeringTrustBundle{ |
|
|
|
|
PeerName: "peer1", |
|
|
|
|
TrustDomain: "peer1.domain", |
|
|
|
|
ExportedPartition: "peer1ap", |
|
|
|
|
RootPEMs: []string{"peer1-root-1"}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
UpdateEvent{ |
|
|
|
|
CorrelationID: "peer-trust-bundle:cluster-02", |
|
|
|
|
Result: &pbpeering.TrustBundleReadResponse{ |
|
|
|
|
Bundle: &pbpeering.PeeringTrustBundle{ |
|
|
|
|
PeerName: "peer2", |
|
|
|
|
TrustDomain: "peer2.domain", |
|
|
|
|
ExportedPartition: "peer2ap", |
|
|
|
|
RootPEMs: []string{"peer2-root-2"}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
UpdateEvent{ |
|
|
|
|
CorrelationID: "upstream-peer:" + cluster1UID.String(), |
|
|
|
|
Result: &structs.IndexedCheckServiceNodes{ |
|
|
|
|
Nodes: structs.CheckServiceNodes{structs.TestCheckNodeServiceWithNameInPeer(t, "db", "dc1", "cluster-01", "10.40.1.1", false, cluster1UID.EnterpriseMeta)}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
UpdateEvent{ |
|
|
|
|
CorrelationID: "upstream-peer:" + cluster2UID.String(), |
|
|
|
|
Result: &structs.IndexedCheckServiceNodes{ |
|
|
|
|
Nodes: structs.CheckServiceNodes{structs.TestCheckNodeServiceWithNameInPeer(t, "db", "dc2", "cluster-02", "10.40.1.2", false, cluster2UID.EnterpriseMeta)}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
) |
|
|
|
|
case "failover-to-cluster-peer": |
|
|
|
|
uid := UpstreamID{ |
|
|
|
|
Name: "db", |
|
|
|
@ -312,8 +257,8 @@ func setupTestVariationConfigEntriesAndSnapshot(
|
|
|
|
|
case "lb-resolver": |
|
|
|
|
case "register-to-terminating-gateway": |
|
|
|
|
default: |
|
|
|
|
t.Fatalf("unexpected variation: %q", variation) |
|
|
|
|
return nil |
|
|
|
|
extraEvents := extraUpdateEvents(t, variation, dbUID) |
|
|
|
|
events = append(events, extraEvents...) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return events |
|
|
|
@ -433,49 +378,6 @@ func setupTestVariationDiscoveryChain(
|
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
) |
|
|
|
|
case "order-by-locality-failover": |
|
|
|
|
peers = append(peers, |
|
|
|
|
&pbpeering.Peering{ |
|
|
|
|
Name: "cluster-01", |
|
|
|
|
Remote: &pbpeering.RemoteInfo{ |
|
|
|
|
Locality: &pbcommon.Locality{Region: "us-west-1"}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
&pbpeering.Peering{ |
|
|
|
|
Name: "cluster-02", |
|
|
|
|
Remote: &pbpeering.RemoteInfo{ |
|
|
|
|
Locality: &pbcommon.Locality{Region: "us-west-2"}, |
|
|
|
|
}, |
|
|
|
|
}) |
|
|
|
|
cluster1Target := structs.ServiceResolverFailoverTarget{ |
|
|
|
|
Peer: "cluster-01", |
|
|
|
|
} |
|
|
|
|
cluster2Target := structs.ServiceResolverFailoverTarget{ |
|
|
|
|
Peer: "cluster-02", |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
entries = append(entries, |
|
|
|
|
&structs.ServiceResolverConfigEntry{ |
|
|
|
|
Kind: structs.ServiceResolver, |
|
|
|
|
Name: "db", |
|
|
|
|
EnterpriseMeta: entMeta, |
|
|
|
|
ConnectTimeout: 33 * time.Second, |
|
|
|
|
RequestTimeout: 33 * time.Second, |
|
|
|
|
Failover: map[string]structs.ServiceResolverFailover{ |
|
|
|
|
"*": { |
|
|
|
|
Policy: &structs.ServiceResolverFailoverPolicy{ |
|
|
|
|
Mode: "order-by-locality", |
|
|
|
|
Regions: []string{"us-west-2", "us-west-1"}, |
|
|
|
|
}, |
|
|
|
|
Targets: []structs.ServiceResolverFailoverTarget{ |
|
|
|
|
cluster1Target, |
|
|
|
|
cluster2Target, |
|
|
|
|
{Service: "db-v2"}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
) |
|
|
|
|
case "redirect-to-cluster-peer": |
|
|
|
|
redirect := &structs.ServiceResolverRedirect{ |
|
|
|
|
Peer: "cluster-01", |
|
|
|
@ -1024,8 +926,10 @@ func setupTestVariationDiscoveryChain(
|
|
|
|
|
}, |
|
|
|
|
) |
|
|
|
|
default: |
|
|
|
|
t.Fatalf("unexpected variation: %q", variation) |
|
|
|
|
return nil |
|
|
|
|
e, p := extraDiscoChainConfig(t, variation, entMeta) |
|
|
|
|
|
|
|
|
|
entries = append(entries, e...) |
|
|
|
|
peers = append(peers, p...) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if len(additionalEntries) > 0 { |
|
|
|
|