blob: 910772af8e4e00cf56496ee4a7518edcd9f18abe [file] [log] [blame]
// Copyright Istio Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package cluster
import (
"fmt"
)
import (
"github.com/apache/dubbo-go-pixiu/pkg/kube"
)
// Cluster in a multicluster environment.
type Cluster interface {
fmt.Stringer
kube.ExtendedClient
// Name of this cluster. Use for interacting with the cluster or validation against clusters.
// Use StableName instead of Name when creating subtests.
Name() string
// StableName gives a deterministic name for the cluster. Use this for test/subtest names to
// allow test grid to compare runs, even when the underlying cluster names are dynamic.
// Use Name for validation/interaction with the actual cluster.
StableName() string
// Kind of cluster
Kind() Kind
// NetworkName the cluster is on
NetworkName() string
// MinKubeVersion returns true if the cluster is at least the version specified,
// false otherwise
MinKubeVersion(minor uint) bool
// MaxKubeVersion returns true if the cluster is at most the version specified,
// false otherwise
MaxKubeVersion(minor uint) bool
// IsPrimary returns true if this is a primary cluster, containing an instance
// of the Istio control plane.
IsPrimary() bool
// IsConfig returns true if this is a config cluster, used as the source of
// Istio config for one or more control planes.
IsConfig() bool
// IsRemote returns true if this is a remote cluster, which uses a control plane
// residing in another cluster.
IsRemote() bool
// IsExternalControlPlane returns true if this is a cluster containing an instance
// of the Istio control plane but with its source of config in another cluster.
IsExternalControlPlane() bool
// Primary returns the primary cluster for this cluster. Will return itself if
// IsPrimary.
Primary() Cluster
// PrimaryName returns the name of the primary cluster for this cluster.
PrimaryName() string
// Config returns the config cluster for this cluster. Will return itself if
// IsConfig.
Config() Cluster
// ConfigName returns the name of the config cluster for this cluster.
ConfigName() string
// HTTPProxy returns the HTTP proxy config to connect to the cluster
HTTPProxy() string
}