mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
5fb9df1640
* Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at <Blog URL>, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl. * add missing license headers * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
84 lines
2.3 KiB
Go
84 lines
2.3 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package structs
|
|
|
|
// PeeringToken identifies a peer in order for a connection to be established.
|
|
type PeeringToken struct {
|
|
CA []string
|
|
ManualServerAddresses []string
|
|
ServerAddresses []string
|
|
ServerName string
|
|
PeerID string
|
|
EstablishmentSecret string
|
|
Remote PeeringTokenRemote
|
|
}
|
|
|
|
type PeeringTokenRemote struct {
|
|
Partition string
|
|
Datacenter string
|
|
Locality *Locality
|
|
}
|
|
|
|
type IndexedExportedServiceList struct {
|
|
Services map[string]ServiceList
|
|
QueryMeta
|
|
}
|
|
|
|
// NOTE: this is not serialized via msgpack so it can be changed without concern.
|
|
type ExportedServiceList struct {
|
|
// Services is a list of exported services that apply to both standard
|
|
// service discovery and service mesh.
|
|
Services []ServiceName
|
|
|
|
// DiscoChains is a map of service names to their exported discovery chains
|
|
// for service mesh purposes as defined in the exported-services
|
|
// configuration entry.
|
|
DiscoChains map[ServiceName]ExportedDiscoveryChainInfo
|
|
}
|
|
|
|
// NOTE: this is not serialized via msgpack so it can be changed without concern.
|
|
type ExportedDiscoveryChainInfo struct {
|
|
// Protocol is the overall protocol associated with this discovery chain.
|
|
Protocol string
|
|
|
|
// TCPTargets is the list of discovery chain targets that are reachable by
|
|
// this discovery chain.
|
|
//
|
|
// NOTE: this is only populated if Protocol=tcp.
|
|
TCPTargets []*DiscoveryTarget
|
|
}
|
|
|
|
func (i ExportedDiscoveryChainInfo) Equal(o ExportedDiscoveryChainInfo) bool {
|
|
switch {
|
|
case i.Protocol != o.Protocol:
|
|
return false
|
|
case len(i.TCPTargets) != len(o.TCPTargets):
|
|
return false
|
|
}
|
|
|
|
for j := 0; j < len(i.TCPTargets); j++ {
|
|
if i.TCPTargets[j].ID != o.TCPTargets[j].ID {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// ListAllDiscoveryChains returns all discovery chains (union of Services and DiscoChains).
|
|
func (list *ExportedServiceList) ListAllDiscoveryChains() map[ServiceName]ExportedDiscoveryChainInfo {
|
|
chainsByName := make(map[ServiceName]ExportedDiscoveryChainInfo)
|
|
if list == nil {
|
|
return chainsByName
|
|
}
|
|
|
|
for _, svc := range list.Services {
|
|
chainsByName[svc] = list.DiscoChains[svc]
|
|
}
|
|
for chainName, info := range list.DiscoChains {
|
|
chainsByName[chainName] = info
|
|
}
|
|
return chainsByName
|
|
}
|