Skip to content

Commit 89daf6f

Browse files
committed
Add Harvester provider
1 parent 270051a commit 89daf6f

4 files changed

Lines changed: 35 additions & 0 deletions

File tree

detector.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ func init() {
2020
allProviders[providers.Docker] = providers.IsDocker
2121
allProviders[providers.EKS] = providers.IsEKS
2222
allProviders[providers.GKE] = providers.IsGKE
23+
allProviders[providers.Harvester] = providers.IsHarvester
2324
allProviders[providers.K3s] = providers.IsK3s
2425
allProviders[providers.Minikube] = providers.IsMinikube
2526
allProviders[providers.RKE] = providers.IsRKE

providers/harvester.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package providers
2+
3+
import (
4+
"context"
5+
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
"k8s.io/client-go/kubernetes"
8+
)
9+
10+
const Harvester = "harvester"
11+
12+
func IsHarvester(ctx context.Context, k8sClient kubernetes.Interface) (bool, error) {
13+
// Look for nodes that have an Harvester specific label
14+
listOpts := metav1.ListOptions{
15+
LabelSelector: "harvesterhci.io/managed",
16+
// Only need one
17+
Limit: 1,
18+
}
19+
20+
nodes, err := k8sClient.CoreV1().Nodes().List(ctx, listOpts)
21+
if err != nil {
22+
return false, err
23+
}
24+
25+
return len(nodes.Items) > 0, nil
26+
}

providers/k3s.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import (
1010
const K3s = "k3s"
1111

1212
func IsK3s(ctx context.Context, k8sClient kubernetes.Interface) (bool, error) {
13+
if isHarvester, err := IsHarvester(ctx, k8sClient); err != nil || isHarvester {
14+
return false, err
15+
}
16+
1317
v, err := k8sClient.Discovery().ServerVersion()
1418
if err != nil {
1519
return false, err

providers/rke2.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import (
1010
const RKE2 = "rke2"
1111

1212
func IsRKE2(ctx context.Context, k8sClient kubernetes.Interface) (bool, error) {
13+
if isHarvester, err := IsHarvester(ctx, k8sClient); err != nil || isHarvester {
14+
return false, err
15+
}
16+
1317
v, err := k8sClient.Discovery().ServerVersion()
1418
if err != nil {
1519
return false, err

0 commit comments

Comments
 (0)